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

时间:2010-06-22 14:29:52

标签: iphone xcode llvm

我刚刚尝试使用LLVM 1.5编译器(包含在XCode 3.2.3中)编译iOS项目,我收到了很多新的警告,包括以下几个:

protocol qualifiers without 'id' is archaic

例如,这发生在这样的行上:

- (id)initWithContext:(NSManagedObjectContext *)context
          coordinator:(NSPersistentStoreCoordinator *)coordinator
             delegate:(<NSFetchedResultsControllerDelegate>)delegate;

现在,我认为这可能是一个“命名约定”警告,但是有人知道它的真正含义吗?

1 个答案:

答案 0 :(得分:7)

古代:extremely old or extremely old-fashioned

警告意味着不推荐使用<NSFetchedResultsControllerDelegate>的协议限定符(即id)。委托参数的类型应如下所示:

- (id)initWithContext:(NSManagedObjectContext *)context
          coordinator:(NSPersistentStoreCoordinator *)coordinator
             delegate:(id<NSFetchedResultsControllerDelegate>)delegate;
       //              ^^