由于我正在编程的情况,我需要在一个类中实现一些方法而无需实际编辑该类,因此我正在使用类别。
麻烦的是,有些方法没有包含在类的接口中,而是在类的实现中实现的。我假设这只是意味着它们是私有方法。
类别是否不可能访问其主类的私有方法?当我尝试使用类别中的私有方法之一时,出现错误:
“'MainClass'的无可见@interface声明选择器'privateMethod'”
这是可以理解的,因为它不在界面中,但是我认为从逻辑上讲,我可以访问实现中的所有内容。
您要调用的方法需要在某处声明。您可以使用自己的类别自己声明它们:
@interface MainClass(MyPrivateMethods)
- (CGRect)privateMethod:(NSString*)someParameter;
@end
这将摆脱“ MainClass声明选择器没有可见的@interface声明”编译器警告,而您只希望它在运行时起作用即可。如果MainClass
没有带有这些参数和返回类型的该名称的方法,则它将在运行时失败。
(您也可以使用,performSelector:
但仍然会收到有关无法识别的选择器的警告,具体取决于您的编译器设置,并且不适用于所有参数和返回类型)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句