2012-07-17 97 views
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的错误。我不知道该怎么做。解决此问题的唯一方法是将我的阵列声明在.h文件中的@interface以上?


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

[commonClass commonMethod];

,而不必申报每次都有一个父类的实例。

谢谢!不管继承

回答

0

,你有,如果你要访问的实例变量,就像你的数组使用实例方法(而不是方法)。实例方法在方法签名前由-(减号)表示,而类方法使用+

+0

感谢您的回应,但我仍然感到困惑。你是说我应该把'+'改成'-'吗?我仍然能够以相同的方式执行方法调用吗?为了让我的问题更清楚,我不想将方法和数组粘贴到每个新的.h/.m文件中。我创建了 – BloonsTowerDefence 2012-07-17 23:04:01

+0

您应该真的阅读一些介绍性材料。要回答你的问题,是的,你应该在父类中将'+'更改为'-'。然后,你可以简单地像这样调用'commonMethod':'[self commonMethod]'。这是有效的,因为子类继承了父类的所有方法,并且可以将它们直接调用,就像它们直接在子类中实现一样。 – omz 2012-07-18 00:24:59

+0

好的谢谢,我会再读一些。 – BloonsTowerDefence 2012-07-18 14:11:21