我使用Python的经验比其他任何东西都多,所以使用可变数组和不可变数组和dicts有点奇怪。我真的很喜欢Xcode4.5添加的文字语法,但在做一些简单的改动时,我遇到了这样的情况:
NSArray *myArray = [@[/*array objects here*/] mutableCopy];
[myArray addObject: @/*an object goes here*/];编译器给了我一个警告,声明"myArray可能不会响应addObject“。
代码编译完成,addObject运行良好,我可以NSLog对象并验证它在myArray中是否存在--但我不能完全理解这个警告的本质。在这种情况下,mutableCopy不返回NSMutableArray吗?简单地使用NSMutableArray而不是尝试(过度)使用文字语法是不是更合适呢?
此外,由于这只是一个愚蠢的警告,我可以忽略它并继续吗?看起来..。懒惰在最坏的情况下,也许只会为未来的恶作剧打开大门。
发布于 2012-10-18 02:24:09
您需要将变量声明为NSMutableArray,而不是NSArray。addObject:是一种仅在NSMutableArray上可用的方法。
编辑:你似乎也有一个不必要的@在那里。你的代码应该是:
NSMutableArray *mutable = [@[a, b, c] mutableCopy];
[mutable addObject:d];发布于 2012-10-18 02:24:46
在这种情况下mutableCopy不会返回NSMutableArray吗?
确实如此。这就是为什么必须将返回值赋给NSMutableArray而不是NSArray的原因。
NSMutableArray *myArray = [@[/*array objects here*/] mutableCopy];应该让编译器闭嘴。
https://stackoverflow.com/questions/12940806
复制相似问题