Geu*_*uis 0 objective-c objective-c-blocks
我对Objective-c很新,并试图更好地理解块.作为我自己的一项任务,我正在尝试用各种方法编写fizz-buzz.
我目前正在使用块,但我遇到了一个语法问题,我还没有得到.
在下面的非工作函数中,我想传入一个int并返回一种NSString.
NSString (^whichMessage)(int) = ^(int num) {
return @"Test";
};
Run Code Online (Sandbox Code Playgroud)
但是我得到一个错误说明:
Incompatible block pointer types initializing 'NSString (^_strong)(int)' with an expression of type 'NSString *(^)(int)'
Run Code Online (Sandbox Code Playgroud)
任何人都可以解释我的示例代码的问题是什么,以及正确的形式是什么?
我在这里关注文档:http://developer.apple.com/library/ios/#documentation/cocoa/Conceptual/Blocks/Articles/bxGettingStarted.html#//apple_ref/doc/uid/TP40007502-CH7-SW1
(为了清楚起见,这是链接页面上的示例代码)
int multiplier = 7;
int (^myBlock)(int) = ^(int num) {
return num * multiplier;
};
Run Code Online (Sandbox Code Playgroud)
通过页面顶部的图形,我认为通过将块类型更改为NSString并将返回类型更改为NSString,它可以正常工作.但唉,事实并非如此.
非常简单.您的块返回指向字符串而不是实际字符串的指针.我们总是使用指向对象的指针而不是实际对象本身
|
v
NSString *(^whichMessage)(int) = ^(int num) {
return @"Test";
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2339 次 |
| 最近记录: |