首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将int传入函数,返回NSString

将int传入函数,返回NSString
EN

Stack Overflow用户
提问于 2012-07-19 16:55:50
回答 3查看 2.4K关注 0票数 0

我是Objective-c的新手,正在尝试更好地理解块。作为我自己的一项任务,我正在尝试用各种方法编写冒泡-嗡嗡声。

我目前正在使用块,但我遇到了一个我还没有得到的语法问题。

在下面的非工作函数中,我想传入一个整数并返回一个类型为NSString的函数。

代码语言:javascript
运行
复制
NSString (^whichMessage)(int) = ^(int num) {
    return @"Test";
};

然而,我得到了一个错误,声明:

代码语言:javascript
运行
复制
Incompatible block pointer types initializing 'NSString (^_strong)(int)' with an expression of type 'NSString *(^)(int)'

谁能解释一下我的示例代码的问题是什么,以及正确的形式是什么?

我遵循这里的文档:http://developer.apple.com/library/ios/#documentation/cocoa/Conceptual/Blocks/Articles/bxGettingStarted.html#//apple_ref/doc/uid/TP40007502-CH7-SW1

(为了清楚起见,以下是链接页面上的示例代码)

代码语言:javascript
运行
复制
int multiplier = 7;
int (^myBlock)(int) = ^(int num) {
    return num * multiplier;
};

根据页面顶部的图形,我认为通过将块类型更改为NSString,并将返回类型更改为NSString,将会起作用。但遗憾的是,事实并非如此。

EN

Stack Overflow用户

回答已采纳

发布于 2012-07-19 17:00:03

很简单。您的块返回一个指向字符串的指针,而不是实际的字符串。我们总是使用指向对象的指针,而不是实际的对象本身

代码语言:javascript
运行
复制
         |
         v
NSString *(^whichMessage)(int) = ^(int num) {
    return @"Test";
};
票数 8
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11557238

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档