0

我正在为块的语法而苦苦挣扎。我需要一个不带参数并返回字符串的块,我需要将该块存储在一个属性中。到目前为止,这就是我所拥有的......

我声明这个属性:

@property (nonatomic, copy) NSString * (^myBlockThatReturnsAString) ();

我这样分配块:

someObject.myBlockThatReturnsAString = ^NSString * () {
    return @"foo";
};

这一切都编译得很好。

我正在尝试像这样使用它:

myString = someObject.myBlockThatReturnsAString;

但我明白了

-[__NSMallocBlock__ isEqualToString:]: unrecognized selector sent to instance 0xc16b3b0

我哪里错了?

4

1 回答 1

2

问题在于您尝试运行块的方式实际上并未运行它,它只是返回块对象并尝试将其分配给NSString变量。

这应该有效:

myString = someObject.myBlockThatReturnsAString();

这是一篇关于理解块语法以及它为何如此的精彩文章。

于 2013-09-17T17:21:41.633 回答