ObjectProperties.hObjective-C的协议向声明
@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;
从上面的代码示例中,我已经在.h文件中定义了一个协议,以便与Core Data对象以及普通的ol香草对象一起使用。看起来像“噪音”有符合类#进口协议在他们的头;如前所述,在实现文件中转发声明协议&导入会更干净。然而,Xcode中这样做时,这种方式会抛出一个警告:
Cannot find protocol definition for 'ObjectProperties'
代码编译,而且大多作品。我说的主要是因为Core Data试图为标量属性动态创建getter/setters,但我认为这可能是因为我碰到了一个边缘案例。
当然,最明显的解决方法是只将协议头导入到类头中。
如果我的理解是正确的(而且我的知识是最近被获得的,所以我完全有可能错了),如果我将协议导入到我的类头中并对协议进行更改,则后续所有导入我的类的文件将不得不重新编译。
解决这类问题的正确方法是什么?
我有一个类似的问题,但与Swift协议。 – Alper 2018-03-09 11:01:03