ObjectProperties.h
@protocol ObjectProperties <NSObject>
@property (strong, nonatomic) NSString *name;
@property (strong, nonatomic) NSDate *date;
@property (assign, nonatomic) int64_t index;
@end
ClassA.h
#import <Foundation/Foundation.h>
@protocol ObjectProperties;
@interface ClassA : NSObject <ObjectProperties>
- (void)specialSauce;
@end;
ManagedClassA.h
#import <CoreData/CoreData.h>
@protocol ObjectProperties;
@interface ManagedClassA : NSManagedObject <ObjectProperties>
- (void)doSomething;
@end;
À partir de l'exemple de code ci-dessus, j'ai défini un protocole dans un .h de fichier à utiliser avec la Base de Données des objets ainsi que la plaine ol' vanille objets. Il semble que le "bruit" d'avoir conformes classes #import du protocole dans l'en-tête; il serait plus propre de déclarer avant le protocole et les importer dans le fichier d'implémentation comme je l'ai indiqué ci-dessus. Cependant, Xcode, lance un avertissement lorsque le faisant de cette manière:
Cannot find protocol definition for 'ObjectProperties'
Le code compile, et la plupart des œuvres. Je dis la plupart car il y a certains funkiness avec Base de Données en essayant de créer dynamiquement les getters / setters pour la propriété scalaire, mais je pense que c'est probablement parce que j'ai frappé un cas limite.
Bien sûr, le plus évident de contourner ce problème consiste à il suffit d'importer l'en-tête de protocole dans la classe des en-têtes.
Si ma compréhension est correcte (et à ma connaissance est très récemment acquis, et il est donc tout à fait possible que je me trompe), si j'importe le protocole dans ma classe en-têtes et de faire un changement dans le protocole, puis tous les fichiers importer mes classes devront être recompilés.
Quelle est la façon correcte de faire de résoudre ce type de problème?