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

问题描述 投票:0回答:1

我最近正在开发一个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的方法调用。

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

objective-c xcode inheritance
1个回答
-1
投票

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

@property A *littleA;

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

© www.soinside.com 2019 - 2024. All rights reserved.