objc从外面打电话给祖父母方法

时间:2018-03-01 20:49:10

标签: objective-c xcode inheritance

我最近正在开发一款iphone应用程序,我觉得使用继承使结构更有意义和优雅。但是,我正在努力研究继承如何在objc中工作。 Java中的继承约定似乎不起作用。

情形:

这可能有点复杂,但这看起来是描述情况的最佳方式。假设我有两个类,A和B.它们看起来如下:

// Class A
@interface A: B
@end

@implementation A
- (id)init{
    self = [super init];
    if(self){
    }
    return self;
}
@end

// Class B
@interface B: NSObject
@property A *littleA;

- (void)doSomething;
- (void)blabla;
@end

@implementation B
- (id) init {
    self = [super init];

    if(self) {
        _littlea = [[A alloc] init]; // error: No known class method for selector 'alloc'
    }
    return self;
}

- (void)doSomething{
    NSLog(@"something");
}

- (void)blabla{
    [littleA doSomething]; // error: No visible @interface for 'A' declares the selector 'doSomething:'
}

@end

除了这些类之外,还有一个C类。在B类中,我将'littleA'传递给了C类的方法。在那种方法中,我做了:

[littleA isEqual:NULL];// error: No visible @interface for 'A' declares the selector 

我对这些错误消息完全感到困惑。这是继承假设要做的吗?在Java中,A扩展B,B扩展C,然后我可以从A:a.b的方法或a.c的方法调用。

我做错了什么?任何人都可以解释这三个错误信息将是一个很大的帮助!

1 个答案:

答案 0 :(得分:-1)

在类B中,您的属性声明littleA缺少星号(在Objective-C中表示该变量是一个对象)。

@property A *littleA;

我认为这将清除您发布的错误。