这个LLVM 1.5警告意味着什么?"没有'id'的协议限定符是过时的"

mor*_*ais 1 iphone xcode llvm

我刚刚尝试使用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)

现在,我认为这可能是一个"命名约定"的警告,但任何人都知道它的真正含义是什么?

ken*_*ytm 7

古老的:非常古老或极端老式.

警告意味着协议限定符(即<NSFetchedResultsControllerDelegate>)没有id被弃用.委托参数的类型应如下所示:

- (id)initWithContext:(NSManagedObjectContext *)context
          coordinator:(NSPersistentStoreCoordinator *)coordinator
             delegate:(id<NSFetchedResultsControllerDelegate>)delegate;
       //              ^^
Run Code Online (Sandbox Code Playgroud)