我对 Objective-c 很陌生,并试图更好地理解块。作为我自己的一项任务,我正在尝试以各种方法编写 fizz-buzz。
我目前正在使用块,但我遇到了一个我还没有解决的语法问题。
在下面的非工作函数中,我想传入一个 int 并返回一个 NSString 类型。
NSString (^whichMessage)(int) = ^(int num) {
return @"Test";
};
但是我收到一条错误消息:
Incompatible block pointer types initializing 'NSString (^_strong)(int)' with an expression of type 'NSString *(^)(int)'
谁能解释我的示例代码有什么问题,以及正确的形式是什么?
(为了清楚起见,这里是链接页面上的示例代码)
int multiplier = 7;
int (^myBlock)(int) = ^(int num) {
return num * multiplier;
};
通过页面顶部的图形,我认为通过将块类型更改为 NSString 并将返回类型也更改为 NSString,它会起作用。但很可惜,事实并非如此。