我有一个类Class,它有一个私有类(@interface Class(Private))。该类别有一个名为“-run”的方法。
但是,当XCode显示[classInstance run]时; “可能不会回应”运行“。我不确定为什么会这样。该方法运行正常,并在与实际类相同的.m文件中声明。正好在实际的类实现之上。
任何想法我做错了什么?
这是我的整个.m文件。我知道它现在正在扩展NSArray,但是我这样做是为了显示这个例子而没有任何其他的.h依赖。
#import <Foundation/Foundation.h>
@implementation NSArray (Private)
-(void)runMethod {}
@end
@implementation NSArray
- (void)letsPlay {
[self runMethod]; // says -runMethod might be missing
}
@end
答案 0 :(得分:2)
只要编译器在调用方法之前看到方法run
的声明,就不会看到错误。
通常,私人类别的完成方式如下:
#import "M.h"
@interface M(PrivateGunk)
.... declarations here ...
@end
@implementation M
@end
@implementation M(PrivateGunk)
.... impl here ...
@end
虽然我们中的许多人已经开始将私有内容放在文件顶部的类扩展中,这也允许使用@properties,ivars等....