【问题标题】:Using inheritance使用继承
【发布时间】:2012-07-17 15:48:49
【问题描述】:

我的 classA 在其 .h 文件(数组、字符串等)中声明了一些变量,在其 .m 文件中它具有对这些变量执行操作的方法。

我即将创建 classB,它需要在其 .m 中使用所有相同的方法,并在其 .h 中使用大多数相同的变量。

我一直在读书,但仍然很困惑。我知道我需要使用继承,但我不确定如何使用。

我认为我需要做的事情:

classA.h

@interface classA{
NSMutableArray *myArray;
NSString *myString;
}

classA.m

#import classA.h
@implementation classA

-(void)displayArray{
for(int x = 0; count < [myArray count], x++){
NSLog(@"%@", [myArray objectAtIndex:x];
}

classB.h

#import "classA.h"
@interface classB{
}

classB.m

#import "classB.h"
#import "classA.m"
@implementation classB

-(void)viewDidLoad{
[self displayArray];
}

我希望 classB 有自己的 myArray,然后当在 classB 中调用 displayArray 时,它会显示 classB 的 myArray。而且我需要在更多课程中重复此操作,但我现在只是想让它与 A 和 B 一起工作。

谢谢。


编辑:我只是编造了这个例子,它不是实际的代码。

【问题讨论】:

  • 你不需要#import classB.m 文件中的classA.m 文件。
  • 谢谢,这与@holex 所说的相结合

标签: objective-c inheritance


【解决方案1】:

您的 classB 需要继承 classA,仅此而已。

在您的 classB 类中,您可以修改 myArray ivar,displayArray 方法会正确记录它。

【讨论】:

    【解决方案2】:

    它就像 1x1 一样简单 :)

    @interface classB : classA {
    
    // ...
    
    }
    
    // ...
    
    @end
    

    之后,classB 的每个实例都拥有 classA 所拥有的一切。

    【讨论】:

    • 好的,我添加了它,它现在可以识别 classB 中的 displayArray 方法。但我收到一个错误:linker command failed with exit code 1
    • 还有更多的错误细节吗?这是非常通用的......很多事情都可能导致它:从丢失的头文件到错误的编译器配置......
    • 谢谢,我添加了这个并从 classB.m 中删除了 #import "classA.m",一切正常。我认为错误是因为我两次导入了一些东西
    猜你喜欢
    • 1970-01-01
    • 2018-05-23
    • 2019-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-15
    • 2013-12-18
    相关资源
    最近更新 更多