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;
根据上面的代码示例,我在一个应用程序中定义了一个协议.与核心数据对象以及普通对象一起使用的h文件.有一致性的课程似乎是"噪音"#进口 在他们的头文件中的协议;转发声明协议会更干净;进口 在我上面展示的实现文件中.但是,Xcode在这样做时会抛出一个警告:
Cannot find protocol definition for 'ObjectProperties'
这段代码可以编译,而且大部分是有效的.我之所以这么说,主要是因为核心数据试图为标量属性动态创建getter/setter,这很有趣,但我认为这可能是因为我遇到了一个边缘情况.
当然,最明显的解决方法是将协议头导入到类头中.
如果我的理解是正确的(而且我的知识是最近获得的,所以我完全可能是错的),如果我将协议导入到我的类头中并对协议进行更改,那么所有导入我的类的后续文件都必须重新编译.
解决这类问题的正确方法是什么?