我正在努力学习块的语法。我需要一个不带参数的块并返回一个字符串,我需要将该块存储在一个属性中。到目前为止,这就是我所拥有的......
我声明了这个属性:
@property (nonatomic, copy) NSString * (^myBlockThatReturnsAString) ();
我像这样分配块:
someObject.myBlockThatReturnsAString = ^NSString * () {
return @"foo";
};
这一切都很好。
我正在尝试使用它:
myString = someObject.myBlockThatReturnsAString;
但我得到
-[__NSMallocBlock__ isEqualToString:]: unrecognized selector sent to instance 0xc16b3b0
我哪里错了?
答案 0 :(得分:2)
出现问题的是,您尝试运行块的方式并没有实际运行它,它只返回块对象并尝试将其分配给NSString
变量。
这应该有效:
myString = someObject.myBlockThatReturnsAString();
这是关于理解块语法及其原理的great article。