以下几行在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 *midiViewsToRemoveNSMutableSet *audioViewsToRemove

10-08 08:27