Iphone 如何对私有方法进行转发声明?

Iphone 如何对私有方法进行转发声明?,iphone,objective-c,forward-declaration,Iphone,Objective C,Forward Declaration,在实现中,我使用#pragma标记将我的方法分组。但有时,方法实现代码会出现在调用此方法的代码下面,我会收到“未找到实例方法”警告。它发生在我使用私有方法时。如何解决这个问题?在这种情况下,您可以在实现文件中使用类扩展名来定义这些方法。通过这种方式,“public”API仍然在头文件中定义,而实现文件包含伪私有方法的定义 你的班级 @interface MyClass() - (void)myPrivateMethod; @end @implementation MyClass - (

在实现中,我使用#pragma标记将我的方法分组。但有时,方法实现代码会出现在调用此方法的代码下面,我会收到“未找到实例方法”警告。它发生在我使用私有方法时。如何解决这个问题?

在这种情况下,您可以在实现文件中使用类扩展名来定义这些方法。通过这种方式,“public”API仍然在头文件中定义,而实现文件包含伪私有方法的定义

你的班级

@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()