调用类扩展中定义的方法时无法识别的选择器

Sea*_*ser 1 objective-c ios

我有一个类,我在头文件中定义类扩展,如下所示:

@interface GCFriend : GCDataObject

@property (nonatomic, strong) NSString *firstName;
...
...
...    

+ (NSOperation *)getFriendsCached:(void (^)(NSArray *cached))cached
                            fresh:(void (^)(BOOL success, NSArray *fresh))fresh;    
@end

@interface GCFriend (Transient)

@property (nonatomic, strong) UIImage *image;

@end
Run Code Online (Sandbox Code Playgroud)

现在,作为一个优先选择,我想将该图像属性与主界面声明分开,因为它不是来自api的东西.但是,当我以这种方式声明时,我在调用getter方法时会得到一个无法识别的选择器.这是为什么?如果我将其移动到主界面声明,则没有问题.

Chu*_*uck 6

那不是类扩展.这是一个类别.类扩展通常放在类的实现文件中,其形式为@interface GCFriend ()空括号.您可以在类扩展中添加实例变量,但不能在类别中添加.(这是因为类扩展是作为类的一部分编译的,而类别是单独编译和加载的.)