我知道Objective-C不支持真正的私有方法.我正在做的是声明“私有”方法是将以下内容添加到.m文件类中:
@interface MyClass() - (void) privateMethodName; @end
问题:
如果我现在添加一个子类,并想使用这个’私有’方法,我不能!我得到错误:
Receiver type ‘SubClassName’ for instance message does not declare a
method with selector ‘privateMethodName’
所以,如果我不希望非子类能够访问此方法,但是希望子类能够,我该怎么办?实现我的目标的最佳/正确的方法是什么?
解决方法
您可以将“受保护”界面与公共界面分开.在主标题中,只需声明公共方法:
MyMagicThingy.h:
@interface MyMagicThingy: NSObject - (void) publicMethod; @end
然后,有一个额外的头与受保护的方法:
MyMagicThingy Protected.h:
#import "MyMagicThingy.h" @interface MyMagicThingy (Protected) - (void) protectedMethods; @end
您不能在Objective C中具有“真正的”私有/保护/公共方法(如:编译器将强制执行访问规则,所有方法都是公开的).你必须和大会一起去.