文件中有两个@implementation;底层实现方法在顶层实现中不可见?

时间:2016-09-16 18:23:32

标签: objective-c

我在一个文件中有两个实现。就像下面那个。如何在第一个方法中访问第二个方法?如果我尝试这样做,编译器会抛出一个未知的选择器错误。

我知道在C中你必须拥有必须在定义中具有层次结构才能构建的方法。 ObjectiveC中也是这样吗?除了在第一个实现之上定义第二个实现之外,还有其他选择吗?

@implementation BaseClass

  -(void)someMethod {
   XCUIElementQuery *elementQuery = [[XCUIApplication alloc] init].tables
   [elementQuery anotherMethod];  //How do I use the category method here?
  }
@end


@implementation XCUIElementQuery (BaseClassCategory)

  -(void)anotherMethod {
   //do something
  }
@end

2 个答案:

答案 0 :(得分:1)

在文件的顶部,只需为XCUIElementQuery声明一个接口,如下所示:

@interface XCUIElementQuery (XCUIElementQuery_private)
-(void)anotherMethod;
@end

答案 1 :(得分:0)

只需交换两组实现。

@implementation XCUIElementQuery (BaseClassCategory)

-(void)anotherMethod {
   //do something
}
@end

@implementation BaseClass

-(void)someMethod {
    XCUIElementQuery *elementQuery = [[XCUIApplication alloc] init].tables
    [elementQuery anotherMethod];  //How do I use the category method here?
}

@end