我正在为 block 的语法而苦苦挣扎。我需要一个不带参数并返回字符串的 block ,我需要将该 block 存储在一个属性中。到目前为止,这就是我所拥有的...
我声明这个属性:
@property (nonatomic, copy) NSString * (^myBlockThatReturnsAString) ();
我这样分配 block :
someObject.myBlockThatReturnsAString = ^NSString * () {
return @"foo";
};
所有编译都很好。
我正在尝试这样使用它:
myString = someObject.myBlockThatReturnsAString;
但是我明白了
-[__NSMallocBlock__ isEqualToString:]: unrecognized selector sent to instance 0xc16b3b0
我哪里错了?
最佳答案
问题在于您尝试运行 block 的方式实际上并没有运行它,它只是返回 block 对象并尝试将其分配给 NSString
变量。
这应该有效:
myString = someObject.myBlockThatReturnsAString();
这是一个great article关于理解 block 语法以及为什么它是这样的。
关于ios - 如何创建返回字符串的 block 并将其存储在属性中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18855669/