首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >文字语法与mutableCopy和Objective-C编译器警告

文字语法与mutableCopy和Objective-C编译器警告
EN

Stack Overflow用户
提问于 2012-10-18 02:22:39
回答 2查看 202关注 0票数 0

我使用Python的经验比其他任何东西都多,所以使用可变数组和不可变数组和dicts有点奇怪。我真的很喜欢Xcode4.5添加的文字语法,但在做一些简单的改动时,我遇到了这样的情况:

代码语言:javascript
复制
NSArray *myArray = [@[/*array objects here*/] mutableCopy];
[myArray addObject: @/*an object goes here*/];

编译器给了我一个警告,声明"myArray可能不会响应addObject“。

代码编译完成,addObject运行良好,我可以NSLog对象并验证它在myArray中是否存在--但我不能完全理解这个警告的本质。在这种情况下,mutableCopy不返回NSMutableArray吗?简单地使用NSMutableArray而不是尝试(过度)使用文字语法是不是更合适呢?

此外,由于这只是一个愚蠢的警告,我可以忽略它并继续吗?看起来..。懒惰在最坏的情况下,也许只会为未来的恶作剧打开大门。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-10-18 02:24:09

您需要将变量声明为NSMutableArray,而不是NSArrayaddObject:是一种仅在NSMutableArray上可用的方法。

编辑:你似乎也有一个不必要的@在那里。你的代码应该是:

代码语言:javascript
复制
NSMutableArray *mutable = [@[a, b, c] mutableCopy];
[mutable addObject:d];
票数 2
EN

Stack Overflow用户

发布于 2012-10-18 02:24:46

在这种情况下mutableCopy不会返回NSMutableArray吗?

确实如此。这就是为什么必须将返回值赋给NSMutableArray而不是NSArray的原因。

代码语言:javascript
复制
NSMutableArray *myArray = [@[/*array objects here*/] mutableCopy];

应该让编译器闭嘴。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12940806

复制
相关文章

相似问题

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