【发布时间】:2011-08-15 19:35:01
【问题描述】:
我有一些方法没有在我的类的接口中声明,因为只有类中的代码才能使用它们。但是当方法想要调用在它们下面实现的方法时,我的方法的排列会产生一些“......可能不会响应选择器......”警告。
有什么方法可以在我的实现文件中声明这些伪私有方法的原型,这样我就不会收到这些警告?
【问题讨论】:
标签: iphone objective-c ios xcode oop
我有一些方法没有在我的类的接口中声明,因为只有类中的代码才能使用它们。但是当方法想要调用在它们下面实现的方法时,我的方法的排列会产生一些“......可能不会响应选择器......”警告。
有什么方法可以在我的实现文件中声明这些伪私有方法的原型,这样我就不会收到这些警告?
【问题讨论】:
标签: iphone objective-c ios xcode oop
您可以使用class extension。我更喜欢它们而不是类别(为此目的),因为它们声明的方法必须在相应类的主 @implementation 块中实现。
一个类通常有一个公开声明的 API,然后有其他方法私下声明,仅供该类或该类所在的框架使用。如上所述,您可以在私有头文件或实现文件中的一个类别(或多个类别)中声明此类方法。这可行,但编译器无法验证所有声明的方法是否都已实现。
类扩展允许您在主类
@interface块内以外的位置为类声明额外的必需方法
你像这样声明一个类扩展:
@interface MyObject () // No name is given in the parentheses
【讨论】:
只使用一个类别 - 我在我的 .m 文件中做了这样的事情:
@interface MyClass (PrivateMethods)
- (void)privateMethod1;
- (void)privateMethod2:(NSString *)aParam;
@end
@implementation MyClass
- (void)privateMethod1;
- (void)privateMethod2:(NSString *)aParam;
@end
【讨论】:
objective-c 中不存在私有方法。请参阅此帖子。
Best way to define private methods for a class in Objective-C
【讨论】: