我刚刚尝试针对 OS 3.0 编译我的 iPhone 应用程序,但在使用快速枚举时出现编译错误。
我正在尝试遍历包含 cComment 类的 NSArray:
for (cComment* newComment in comments.comments)
我收到此错误
错误:访问器的类型与属性“注释”的类型不匹配。
当使用 OS 2.2.1 编译时,它可以完美地工作。
我理解这个错误,枚举不是强类型的,但据我所知,objective-c 不支持泛型/模板。所以目前我只能看到一种解决方法:
for (id commentObject in comments.comments)
{
cComment *newComment = (cComment *)commentObject;
}
谁能想到另一种方法吗?为什么会发生这样的变化?如果您能提供有关此更改的苹果文档,我们将不胜感激。
编辑
按照 Grouchal 的建议,我尝试了这个: NSArray* allComments = comments.comments 我得到了同样的错误,所以看来它毕竟与枚举无关
这是头文件中的代码:
NSMutableArray *评论;
@property(只读,非原子)NSArray* 注释;
并且该属性在实现文件中综合。
将属性更改为 NSMutableArray 似乎可以解决问题,但我看不出有任何理由说明为什么会出现这种情况。任何想法。
谢谢。
最佳答案
问题出在属性定义中。您应该将其更改为:
@property(只读,非原子)NSMutableArray* 注释
不利的一面是,您的数组将暴露为可变的(尽管我认为这是您想要防止的)。
关于iphone - OS 3.0 中的快速枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1019003/