好吧我认为我对目标c中的属性的理解可能不是我认为的那样。为什么我的变量没有被赋值
在我的程序中,我有一个包含我的班级的单身人士。
在我的课程中,我在init中将单值赋给我的属性。
然后,我为该属性的属性分配一个值。
然而,它并没有保持这个值,当我做一个单身人士的价值比较没有任何改变。这里发生了什么?有任何想法吗?
@interface MainGameLoop : NSObject {
MapData *mapData;
}
@property (retain) MapData *mapData;
-(id) init
{
self = [super init];
GlobalVariables *sharedManager = [GlobalVariables sharedManager];
self.mapData = sharedManager.mapData;
return self;
}
在我班上的一个功能:
作品:
sharedManager.mapData.currentPlayer = newCurrentPlayer;
什么都不做:
self.mapData.currentPlayer == newCurrentPlayer;
我质疑GlobalVariables类的需要。首先,您不需要将所有内容都放入Objective-C中;你可以使真正的全局变量很好。 (将它们存储在单例中并不会使它们成为全局的或者更少的变量)。第二,为什么你甚至需要这个单例?为什么不让MainGameLoop对象(我可能会重命名为“游戏”或其他东西)拥有地图数据? – 2009-11-08 07:17:30
另外,我争辩说你有“包含我的班级的单身人士[对象]”。除非对象动态创建调用者提供的类的实例(如NSObjectController和NSArrayController所做的那样),否则对象通常没有任何拥有类的理由。它看起来更像是你的单例拥有MapData类的*实例*。 – 2009-11-08 07:19:47
你是对的,它只是拥有一个类的实例。我把它放在一个单例中,因为我不得不通过它的构造函数将mapdata实例传递给我所有的其他类,它开始感觉非常耗时。我怀疑这是做到这一点的最佳方式。 – Mel 2009-11-08 15:06:58