相关疑难解决方法(0)

Objective-C协议前向声明

ObjectProperties.h

@protocol ObjectProperties <NSObject>

@property (strong, nonatomic) NSString *name;
@property (strong, nonatomic) NSDate *date;
@property (assign, nonatomic) int64_t index;

@end
Run Code Online (Sandbox Code Playgroud)

ClassA.h

#import <Foundation/Foundation.h>

@protocol ObjectProperties;

@interface ClassA : NSObject <ObjectProperties>

- (void)specialSauce;

@end;
Run Code Online (Sandbox Code Playgroud)

ManagedClassA.h

#import <CoreData/CoreData.h>

@protocol ObjectProperties;

@interface ManagedClassA : NSManagedObject <ObjectProperties>

- (void)doSomething;

@end;
Run Code Online (Sandbox Code Playgroud)

从上面的代码示例中,我在.h文件中定义了一个协议,用于Core Data对象以及普通的'vanilla对象.似乎"噪音"使符合类#import协议在其标题中; 如上所示,在实现文件中转发声明协议和导入会更清晰.但是,当这样做时,Xcode会发出警告:

Cannot find protocol definition for 'ObjectProperties'

代码编译,主要是工作.我之所以说主要是因为Core Data试图动态创建标量属性的getter/setter有一些愚蠢,但我认为这可能是因为我遇到了边缘情况.

当然,最明显的解决方法是将协议头导入类头.

如果我的理解是正确的(我的知识是最近获得的,所以我完全有可能我错了),如果我将协议导入我的类头并对协议进行更改,那么导入我的所有后续文件必须重新编译类.

解决此类问题的正确方法是什么?

protocols objective-c

55
推荐指数
1
解决办法
3万
查看次数

标签 统计

objective-c ×1

protocols ×1