2011-07-15 62 views
1

我正在爲某些紙牌遊戲創建計算器。在那場比賽中,我創建了一個Singleton類來管理遊戲。它擁有得分,跟蹤遊戲的位置等等。在單例類中創建'Player'對象

現在應用程序啓動後,我會要求用戶輸入4個玩家的名字。之後,4個玩家對象根據他們的名字被實例化。我已經有了一個名爲「玩家」的對象,所以4名玩家將會以他們的名字進行實例化,並以0開頭。

現在我需要將這些玩家存儲在我的單身人員課程中。因此,我在該類中創建了4個播放器屬性。但是我的問題是,下的單例類的init方法,在:

if ((self = [super init])) { 
    // set properties here 
} 

其中// set properties here是,我該怎麼寫?我必須對那裏的玩家屬性進行任何操作嗎?

謝謝

回答

0

不,你是不是做他們什麼需要,儘管我可能將它們設置爲nil

+0

由於我綜合了這些球員,所以在其他課程中,我可以這樣做:mySingletonClass.player1 = player1 true? – darksky

+0

你可以。語法將更像'[SingletonClass sharedInstance] .player1 = player1'。當然,別忘了在其他類中釋放變量以防止內存泄漏。 – FreeAsInBeer

1

除了返回共享實例外,您不需要執行任何操作。通常,單例的屬性可以在你實例化的任何類中設置。

0

也許我錯了,但不是你的AppDelegate已經作爲一個Singleton?

+1

嗯..我想你可以這麼說。但讓AppDelegate管理我想要管理的東西是不好的設計。 – darksky

+1

我同意Nayefc在這裏。許多新的iOS程序員讓他們的App Delegate運行應該在幾個不同類中的代碼。通常最好堅持每個類都有自己的函數,而不是創建一個處理所有事情的Abomination類的想法。從邏輯上分離代碼可以更容易理解哪些類運行哪些代碼,從而更易於維護並更易於更改。 – FreeAsInBeer

+0

感謝您爲添加的詳細信息@FreeAsInBeer。此外,Cocoa Touch很大程度上依賴於MVC和麪向對象的編程,這些都是關於分離的。一個單獨的課程可以跟蹤遊戲並管理它,這是最好的選擇。 – darksky