类别实施显示可能的问题

时间:2011-06-18 16:22:53

标签: objective-c xcode unit-testing xcode4 categories

我有一个类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

1 个答案:

答案 0 :(得分:2)

只要编译器在调用方法之前看到方法run的声明,就不会看到错误。

通常,私人类别的完成方式如下:

#import "M.h"
@interface M(PrivateGunk)
.... declarations here ...
@end

@implementation M
@end

@implementation M(PrivateGunk)
.... impl here ...
@end

虽然我们中的许多人已经开始将私有内容放在文件顶部的类扩展中,这也允许使用@properties,ivars等....