繁体   English   中英

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

[英]Literal syntax vs. mutableCopy and Objective-C compiler warnings

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

NSArray *myArray = [@[/*array objects here*/] mutableCopy];
[myArray addObject: @/*an object goes here*/];

并且编译器给我一个警告,声明“myArray可能不响应addObject”。

代码编译和addObject工作正常,我可以NSLog对象并验证它存在于myArray中 - 但我不完全理解这个警告的性质。 在这种情况下,mutableCopy不会返回NSMutableArray吗? 是否更适合简单地使用NSMutableArray而不是试图(过度)使用文字语法?

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

您需要将变量声明为NSMutableArray ,而不是NSArray addObject:是仅在NSMutableArray可用的方法。

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

NSMutableArray *mutable = [@[a, b, c] mutableCopy];
[mutable addObject:d];

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

确实如此。 这就是为什么你必须将返回值分配给NSMutableArray,而不是NSArray。

NSMutableArray *myArray = [@[/*array objects here*/] mutableCopy];

应该让编译器闭嘴。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM