【发布时间】:2011-11-11 13:37:52
【问题描述】:
我在实现中使用#pragma 标记将我的方法分组。但有时,方法实现代码出现在调用此方法的代码下方,我收到“找不到实例方法”警告。当我使用私有方法时会发生这种情况。如何解决?
【问题讨论】:
标签: iphone objective-c forward-declaration
我在实现中使用#pragma 标记将我的方法分组。但有时,方法实现代码出现在调用此方法的代码下方,我收到“找不到实例方法”警告。当我使用私有方法时会发生这种情况。如何解决?
【问题讨论】:
标签: iphone objective-c forward-declaration
最简单的方法是使用匿名类。在.m 文件的顶部,在@implementation 之前添加这样的内容:
@interface MyClass()
- (void)myPrivateMethod;
@end
【讨论】:
在您的 Class.m 实现文件中,您可以在开头添加一个接口部分并在其中声明私有函数:
@interface YourClassName (private)
-(void)aPrivateMethod:(NSString*)aParameter;
...
@end
@implementation YourClassName
...
@end
【讨论】:
在这种情况下,您可以在实现文件中使用类扩展来定义这些方法。通过这种方式,您的“公共”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
【讨论】:
@implementation MyClass(PrivateMethods),否则会收到警告。只需使用匿名类别。
@interface MyClass()。