如何为私有方法做出前瞻性声明?

时间:2011-11-11 13:37:52

标签: iphone objective-c forward-declaration

我在实现中使用#pragma mark将我的方法安排到组中。但有时候,方法实现代码会出现在调用此方法的代码下面,而且我会收到“找不到实例方法”的警告。它发生在我使用私有方法时。如何解决?

3 个答案:

答案 0 :(得分:8)

最简单的方法是使用匿名类别。在.m

之前,将这样的内容添加到@implementation文件的顶部
@interface MyClass()
- (void)myPrivateMethod;
@end

答案 1 :(得分:1)

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

YourClass.m

@interface MyClass()

- (void)myPrivateMethod;

@end


@implementation MyClass

- (void)myPublicMethod
{
    // This will not throw an error or warning
    [self myPrivateMethod];
} 

- (void)myPrivateMethod
{
    // Do something
}

@end

答案 2 :(得分:1)

在Class.m实现文件中,您可以在开头添加一个接口部分并在其中声明私有函数:


@interface YourClassName (private)

-(void)aPrivateMethod:(NSString*)aParameter;
...

@end

@implementation YourClassName
...
@end