What does this LLVM 1.5 warning mean? “protocol qu

2020-04-23 02:34发布

问题:

I've just tried compiling an iOS project using the the LLVM 1.5 compiler (included in XCode 3.2.3), and I got a lot of new warnings, including several like this:

protocol qualifiers without 'id' is archaic

For instance, this happens on lines like this:

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

Now, I think this is probably a "naming conventions" warning, but anyone know what it really means?

回答1:

Archaic: extremely old or extremely old-fashioned.

The warning means a protocol qualifier (i.e. <NSFetchedResultsControllerDelegate>) without an id is deprecated. The delegate parameter's type should look like:

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