ios - 如何创建返回字符串的 block 并将其存储在属性中?

标签 ios properties objective-c-blocks

我正在为 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/

相关文章:

ios - 如何从 NSDictionary 中的相应值获取键?

java - 如何在属性文件中正确存储和检索国际化字符串?

java - 在没有 Spring 的情况下注入(inject)应用程序属性

objective-c - block 和变量

iphone - 无法从 C++ 文件访问对象属性 (Cocos2D/Box2d)

ios - 在 iOS 中采用 MVVM : ViewModel responsibilities?

ios - 属性(property)申报疯狂 iOS 7

objective-c - Objective-C block 中的代码如何引用 block 对象本身?

iphone - 如何在同步函数调用中处理异步回调?

ios - 自定义 UICollectionViewCell 自动布局 NSInternalInconsistencyException 错误