如何在属性中创建并存储返回字符串的块?

时间:2013-09-17 16:59:57

标签: ios properties objective-c-blocks

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

我声明了这个属性:

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

我像这样分配块:

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

这一切都很好。

我正在尝试使用它:

myString = someObject.myBlockThatReturnsAString;

但我得到

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

我哪里错了?

1 个答案:

答案 0 :(得分:2)

出现问题的是,您尝试运行块的方式并没有实际运行它,它只返回块对象并尝试将其分配给NSString变量。

这应该有效:

myString = someObject.myBlockThatReturnsAString();

这是关于理解块语法及其原理的great article