iphone – Objective-C私有方式困境

我知道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中具有“真正的”私有/保护/公共方法(如:编译器将强制执行访问规则,所有方法都是公开的).你必须和大会一起去.

相关文章

当我们远离最新的 iOS 16 更新版本时,我们听到了困扰 Apple...
欧版/美版 特别说一下,美版选错了 可能会永久丧失4G,不过只...
一般在接外包的时候, 通常第三方需要安装你的app进行测...
前言为了让更多的人永远记住12月13日,各大厂都在这一天将应...