我有一些方法,我没有在我的类的接口中声明,因为只有类中的代码才应该使用它们。但是当方法想要调用在它们下面实现的方法时,我的方法的安排会产生一些“......可能不响应选择器......”警告。
有没有办法可以在我的实现文件中为这些伪私有方法声明原型,这样我就不会收到这些警告了?
答案 0 :(得分:7)
您可以使用class extension。我更喜欢它们而不是类别(为此目的),因为它们声明的方法必须在相应类的主@implementation
块中实现。
类通常具有公开声明的API,然后私有声明其他方法,仅供类所在的类或框架使用。您可以在上面提到的私有头文件或实现文件中的类别(或多个类别)中声明此类方法。这样可行,但编译器无法验证是否已实现所有声明的方法。
类扩展允许您在主类
@interface
块内的其他位置为类声明其他必需的方法
您声明了一个类扩展,如下所示:
@interface MyObject () // No name is given in the parentheses
答案 1 :(得分:1)
只需使用一个类别 - 我在我的.m文件中执行类似的操作:
@interface MyClass (PrivateMethods)
- (void)privateMethod1;
- (void)privateMethod2:(NSString *)aParam;
@end
@implementation MyClass
- (void)privateMethod1;
- (void)privateMethod2:(NSString *)aParam;
@end
答案 2 :(得分:0)
objective-c中不存在私有方法。看这篇文章。
Best way to define private methods for a class in Objective-C