Iphone 如何对私有方法进行转发声明?
在实现中,我使用#pragma标记将我的方法分组。但有时,方法实现代码会出现在调用此方法的代码下面,我会收到“未找到实例方法”警告。它发生在我使用私有方法时。如何解决这个问题?在这种情况下,您可以在实现文件中使用类扩展名来定义这些方法。通过这种方式,“public”API仍然在头文件中定义,而实现文件包含伪私有方法的定义 你的班级Iphone 如何对私有方法进行转发声明?,iphone,objective-c,forward-declaration,Iphone,Objective C,Forward Declaration,在实现中,我使用#pragma标记将我的方法分组。但有时,方法实现代码会出现在调用此方法的代码下面,我会收到“未找到实例方法”警告。它发生在我使用私有方法时。如何解决这个问题?在这种情况下,您可以在实现文件中使用类扩展名来定义这些方法。通过这种方式,“public”API仍然在头文件中定义,而实现文件包含伪私有方法的定义 你的班级 @interface MyClass() - (void)myPrivateMethod; @end @implementation MyClass - (
@interface MyClass()
- (void)myPrivateMethod;
@end
@implementation MyClass
- (void)myPublicMethod
{
// This will not throw an error or warning
[self myPrivateMethod];
}
- (void)myPrivateMethod
{
// Do something
}
@end
最简单的方法是使用匿名类别。在
@实现之前,将类似的内容添加到.m
文件的顶部:
@interface MyClass()
- (void)myPrivateMethod;
@end
在Class.m实现文件中,可以在开头添加接口部分,并在其中声明私有函数:
@interface YourClassName (private)
-(void)aPrivateMethod:(NSString*)aParameter;
...
@end
@implementation YourClassName
...
@end
使用命名类别的缺点是需要相应的@implementation MyClass(PrivateMethods)
,否则会收到警告。只需使用匿名类别。私有类扩展的首选语法是@interface MyClass()
。