0

我正在创建一个框架,我想将私有方法添加到类别内的超类中,这样它们就不会被公开。

例如,假设我有一个公共类定义为:

@interface Animal : NSObject

- (void)makeNoise;

@end

还有一个公共子类,例如:

@interface Dog : Animal

- (void)makeNoise;

@end

现在我想添加与所有对象相关的私有方法,Animal因此我创建了一个类别,例如:

@interface Animal(PrivateMethods) 

- (void)privateSing;

@end

问题来了。是不是不能从子类访问超类PrivateMethods类别?

如果我运行以下代码,则会出现unrecognized selector sent to instace错误:

#import "Animal+PrivateMethods.h"
@implementation Dog

- (void)description {
    // unrecognized selector sent to instace
    [self privateSing];
}

@end
4

0 回答 0