Jor*_*ith 10 iphone inheritance objective-c ipad ios
我知道Objective-C不支持真正的私有方法.我目前正在做的声明'私有'方法是在类.m文件中添加以下内容:
@interface MyClass()
- (void) privateMethodName;
@end
Run Code Online (Sandbox Code Playgroud)
问题:
如果我现在添加一个子类,并想使用这个'私有'方法,我不能!我收到错误:
用于实例消息的接收器类型"SubClassName"未声明具有选择器"privateMethodName"的方法
因此,如果我不希望非子类能够访问此方法,但确实希望子类能够,我该怎么办?实现目标的最佳/正确方法是什么?
Dir*_*irk 16
您可以将"受保护"界面与公共界面分开.在主标头中,只需声明公共方法:
MyMagicThingy.h
:
@interface MyMagicThingy: NSObject
- (void) publicMethod;
@end
Run Code Online (Sandbox Code Playgroud)
然后,有一个带有受保护方法的附加标头:
MyMagicThingy+Protected.h
:
#import "MyMagicThingy.h"
@interface MyMagicThingy (Protected)
- (void) protectedMethods;
@end
Run Code Online (Sandbox Code Playgroud)
您不能在Objective C中拥有"真正的"私有/受保护/公共方法(如:编译器将强制执行访问规则.所有方法都是公共的).你必须遵守惯例.
归档时间: |
|
查看次数: |
4461 次 |
最近记录: |