0

我一直在做一些阅读,有点困惑,让我解释一下。

我的情况:

ClassA.h 有一些数组,ClassA.m 有一些使用这些数组的方法。我也有 ClassB、ClassC、ClassD...,它们有自己的数组,以及使用这些数组的自己的方法。到目前为止,我只是将代码复制并粘贴到每个类中。

我想做的事:

我做了一些阅读,发现我想创建一个父类,其中包含所有方法,然后在我的类中使用这些方法:

//parentClass.m
@implementation parentClass

+ (void)commonMethod:(id)sender{

...

}

@end


//classA.m

@implementation classA

- (void)someMethod{
    [parentsClass commonMethod];
}

@end


//classB.m

@implementation classB

- (void)someMethod{
    [parentClass commonMethod];
}

@end

问题:

所以我将方法移到了 parentClass.m,将数组移到了 parentClass.h。我的问题是当我尝试构建和运行时,我会收到类似Instance variable <someArray> accessed in class method. 我不知道该怎么办。解决这个问题的唯一方法是@interface.h文件中声明我的数组吗?


编辑:我想使用这种技术在父类中使用方法的原因是因为我想调用这样的方法:

[commonClass commonMethod];

并且不必每次都声明父类的实例。

谢谢!

4

1 回答 1

0

不管继承如何,如果你想访问实例变量,比如你的数组,你必须使用实例方法(而不是类方法)。实例方法由-方法签名前的(减号)表示,而类方法使用+.

于 2012-07-17T22:49:59.767 回答