好吧我認爲我對目標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