我刚刚尝试使用LLVM 1.5编译器(包含在XCode 3.2.3中)编译iOS项目,我收到了很多新的警告,包括以下几个:
protocol qualifiers without 'id' is archaic
Run Code Online (Sandbox Code Playgroud)
例如,这发生在这样的行上:
- (id)initWithContext:(NSManagedObjectContext *)context
coordinator:(NSPersistentStoreCoordinator *)coordinator
delegate:(<NSFetchedResultsControllerDelegate>)delegate;
Run Code Online (Sandbox Code Playgroud)
现在,我认为这可能是一个"命名约定"的警告,但任何人都知道它的真正含义是什么?
古老的:非常古老或极端老式.
警告意味着协议限定符(即<NSFetchedResultsControllerDelegate>)没有id被弃用.委托参数的类型应如下所示:
- (id)initWithContext:(NSManagedObjectContext *)context
coordinator:(NSPersistentStoreCoordinator *)coordinator
delegate:(id<NSFetchedResultsControllerDelegate>)delegate;
// ^^
Run Code Online (Sandbox Code Playgroud)