将类变量放在目标c中的位置

时间:2010-10-25 07:29:41

标签: objective-c

我有一个有5级/级别的游戏。每个类包含几乎相同的变量。现在我想知道我应该在哪个地方声明我的类变量。我有三个选项 -

1.在相应的类.h文件中声明类变量。 2.声明一个变量.h文件(一个空的.h文件,仅用于声明变量,然后将其导入相应的class.m文件)。 3.在init方法之前在类.m文件中声明类变量。

现在我想知道哪种方法正确。

**每个类必须导入其他类.h文件,因为在完成level-1之后我必须转到level-2。因为场景转换我必须导入level-2.h文件,依此类推。

如果我导入一个类似我的类文件具有相同类变量的class.h文件,那么它是一个前瞻性的东西,那么它是否与我的类变量冲突,或者会发生什么?

2 个答案:

答案 0 :(得分:1)

回答你的问题:“如果我导入的class.h文件与我的类文件一样具有相同的类变量,那么它是否与我的类变量冲突,或者会发生什么?”

不会有冲突。在类中定义实例变量时,它仅适用于该类类型的对象。例如,如果您的Class1具有属性UIColor *color而Class2具有属性UIColor *color,并且您在class1.m中包含Class2.h文件,那么您执行类似color = [UIColor blueColor];的操作在Class1.m中的方法中,您将引用class1的color属性。要引用class2的color属性,你必须实例化一个class2对象,然后像这样设置它的属性:

Class2 *c2 = [[Class2 alloc] init];
c2.color = [UIColor greenColor];

希望有所帮助。


另外,正如其他人所提到的,你应该只有一个游戏类,要么创建同一个类的新实例,要么只更改现有实例的属性。如果5个类非常相似,但只是更难,你应该只有一个难度属性,然后使用同一个类的新实例,并将该属性设置为更高的值。

并且,为了清除任何混淆,让我们说你再次拥有Class1并且它是一个视图控制器。您可以在Class1中的方法内创建一个新的Class1对象并显示它,它将是Class1的新实例,具有您设置的任何不同属性。

答案 1 :(得分:0)

如果类相似,那听起来应该有一个共同的超类。