以下几行在Xcode 4中可以正常编译:
NSMutableArray *midiViewsToRemove = [NSMutableSet setWithArray:[self.noteViewControllers allKeys]];
NSMutableArray *audioViewsToRemove = [NSMutableSet setWithArray:[self.audioNoteViewControllers allKeys]];
但是Xcode 5给我以下错误:
不兼容的指针类型使用初始化'NSMutableArray *'
'NSMutableSet *'类型的表达式
帮帮我!
最佳答案
该代码是错误的,并且仅在以前有效,因为像setWithArray:
这样的方法将返回id
,但现在返回instancetype
,这有助于编译器进行类型检查。
您不能将NSMutableSet*
分配给NSMutableArray*
。这两个类共享的某些方法以前可能曾经使用过,但这很危险,只是偶然使用。
将变量声明为NSMutableSet *midiViewsToRemove
和NSMutableSet *audioViewsToRemove
。