ObjectProperties.hCel C Protokół przodu Zgłoszenia
@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;
Z powyższego przykładu kodu zdefiniowałem protokół w pliku .h do użycia zarówno z obiektami Core Data, jak i zwykłymi obiektami waniliowymi. Wygląda na to, że "hałas" ma zgodne klasy: #importuj protokół w ich nagłówku; Byłoby czystsze przekazywać dalej deklarowanie importu w pliku implementacji, jak pokazano powyżej. Jednak Xcode generuje ostrzeżenie, gdy robi to w ten sposób:
Cannot find protocol definition for 'ObjectProperties'
Kod kompiluje, a przede wszystkim działa. Mówię głównie dlatego, że z Core Data próbuje się dynamicznie tworzyć metody pobierające/ustawiające dla właściwości skalarnej, ale myślę, że to pewnie dlatego, że trafiłem na przypadek skrajny.
Oczywiście najbardziej oczywistym zadaniem jest zaimportowanie nagłówka protokołu do nagłówków klas.
Jeśli moje zrozumienie jest poprawne (a moja wiedza została niedawno nabyta, a więc jest całkowicie możliwe, że się mylę), jeśli zaimportuję protokół do nagłówków mojej klasy i wprowadzę zmianę do protokołu, wówczas wszystkie kolejne pliki importujące moje klasy będą musiały zostać ponownie skompilowane.
Jaki jest prawidłowy sposób rozwiązania tego typu problemu?
Mam podobny problem, ale z protokołem Swift. – Alper