【问题标题】:Xcode Confusing NSMutableArray with NSMutableDictionaryXcode 混淆 NSMutableArray 和 NSMutableDictionary
【发布时间】:2011-08-25 23:04:40
【问题描述】:

我正在编写一个 iOS 应用程序,这需要我使用一些 NSMutableArray。之前,我使用的是 NSMutableDictionary(在相同的变量名下),但我注释掉了与字典有关的代码。现在,当使用 NSMutableArray 时,我正在调用方法 -addObject:。但是,Xcode 不断给我一个警告说“NSMutableDictionary 可能无法响应 -addObject:”。但是,我已经检查了一遍又一遍,定义和分配都说 NSMutableArray 而不是 NSMutableDictionary。我什至尝试在课堂上注释掉 NSMutableDictionary 代码,但是警告仍然存在。应用程序运行良好并且可以成功执行方法,但是警告很烦人。我正在使用雪豹 10.6.8、Xcode 4.0.2。我尝试重新启动 Xcode,但没有帮助。有什么建议吗?

.h:

NSArray *array;
NSMutableArray *mutableArray;

.m

//allocation
mutableArray = [[NSMutableArray alloc] init];

//line where I get warning
[mutableArray addObject:someObj];

我测试的每个数组都会发生这种情况。

【问题讨论】:

  • 如果你发布一些代码,它会更容易追踪。您确定您还更改了标题中的变量类型吗?
  • 您确定您更改了正确的 .h 文件吗?
  • 是的。我检查了很多次。
  • 您是否将其设为 setter 方法并在其中使用 NSMutableDictionary?
  • 好的,这就是发生的事情。 .m 有一个版本,.h 有两个版本。 .m 导入了错误版本的 .h——我没有更新的那个。因此,当我更新 .h 时,它什么也没做。在我删除了错误的 .h 并将正确的 .h 添加到项目后,一切正常 - 警告消失了,.h 中的更改反映在 .m.

标签: ios xcode nsmutablearray nsmutabledictionary


【解决方案1】:

我现在不在我的工作站,但是试试>man xcodeindex,它可以帮你清理索引。 (如果它还在 10.6 中)

输入 Xcode 的首选项,然后找到 Locations 窗格。在其中,您拥有“派生数据”,其中包含有关您的项目的各种非主要信息。您可以通过单击路径右侧的小箭头导航到它。

关闭所有 Xcode 项目并退出 Xcode。现在,删除 Derived Data 文件夹的内容,然后重新打开您的项目。 Xcode 应该(很快)重新生成索引。

【讨论】:

  • 是的,我还在 10.6 中。 ">man xcodeindex" 是什么意思?
  • 查看我上面的编辑 - xcodeindex 似乎从最新的 Xcode 中消失了。
  • 感谢您的帮助,但我解决了问题(请参阅我的回答)。
【解决方案2】:

好的,这就是发生的事情。 .m 有一个版本,.h 有两个版本。 .m 导入了错误版本的 .h——我没有更新的那个。因此,当我更新 .h 时,它什么也没做。在我删除了错误的 .h 并将正确的 .h 添加到项目后,一切正常 - 警告消失了,.h 中的更改反映在 .m 中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-24
    • 1970-01-01
    • 1970-01-01
    • 2021-01-11
    • 1970-01-01
    相关资源
    最近更新 更多