【发布时间】:2012-10-08 02:15:18
【问题描述】:
我在 Python 方面的经验比其他任何事情都多,所以使用可变数组和不可变数组和字典有点奇怪。我真的很喜欢 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 指针。编译器相信你的话,抱怨 NSArray 没有实现
addObject。 -
遗憾的是,我的笔记本电脑不在使用 Xcode;我记得当我尝试分配与 NSMutableArray 相同的代码时,我得到了一个完全不同的错误,关于文字如何与 mutableArray 不兼容。因此 mutableCopy 消息。也许这在上次更新中发生了变化,或者我忽略了一些东西?
-
对——你没有调用
mutableCopy,所以你从文字中得到的是一个NSArray。你不能对 NSArray 做addObject。您正确添加了mutableCopy调用,但没有同时将结果数据类型更改为 NSMutableArray,这是您的问题。
标签: objective-c compiler-warnings nsmutablecopying