我正在爲2-4名可可球員製作一個簡單的遊戲。這是我的第一個Cocoa應用程序,所以不熟悉這些庫,我可能會做很多奇怪的事情。如果你看到任何可以做得更好的東西,就這麼說吧。如何以編程方式創建視圖對象?
第一步要求用戶從NSPopUp中選擇玩家人數,並將數據拉入到一個int中。我創建了一個數組並循環播放多個播放器對象。
- (IBAction)startGame:(id)sender {
// Get value of playersPopup into a string
NSString *playersReturn = [[NSString alloc] initWithString:[playersPopup titleOfSelectedItem]];
// Convert that string to an int
numberOfPlayers = [playersReturn intValue];
// Create an array
playerArray = [[NSMutableArray alloc] init];
// Create a counter
int i = 0;
// While counter is less than number of players, create player object and add to array
while (i < numberOfPlayers) {
// Create a player object
Player *player = [[Player alloc] init];
// Add player to array
[playerArray addObject:player];
// Increment
i++;
}
}
這是一個有點古怪,因爲所有的對象都具有相同的名稱。我不知道如何以編程方式使用像player1等計數器給對象一個標題,但它很容易從objectAtIndex的數組中通過鍵來拉動它們。這將是我的問題的第一部分:在可可如何使用計數器命名對象?因爲從我收集如果我這樣做:
player *player[i] =
它會創建一個對象的數組時,所有我想要做的就是把它PLAYER1等
第二個問題是:我在哪裏,之後另一種觀點玩家對象被創建,用戶看到NSTextFields爲玩家輸入名字。鑑於我應該在AppDelegate中聲明IBOutlets,我不確定如何提供2-4名玩家。我可以聲明所有4個插座並只使用兩個插座,然後以編程方式隱藏未使用的文本字段。但似乎應該有一種方法可以根據選擇的玩家數量創建出售點和查看對象。我的意思是我有整個AppDelegate int,所以我應該以某種方式使用它。
如果有人不介意指點我一個好方向,那太棒了!我非常喜歡Cocoa的編程,但在這點上它有着不同的世界。我知道會有一條學習曲線,但它與.net真的不同!
謝謝你們!
-Alec
剛發現的迭代器...關於如何使用它們的想法? – 2010-10-14 22:35:45
不要忘記釋放您創建的對象(例如,該循環中的Player對象)。在這種情況下,「迭代器」是什麼意思? – 2010-10-15 00:15:21
哦,另外,你通常不需要用另一個NSString實例化一個NSString(就像你在初始化程序中爲那個代碼中的'playersReturn'做的那樣)。它已經是一個NSString。你唯一可以做的就是當你將NSString轉換成NSMutableString或從NSMutableString轉換出來時 - 即使這樣,通常使用'copy'或'mutableCopy'也會更有意義。此外,由於這是一個局部變量,所以創建自己的副本(單向或雙向)意味着您需要在方法結束時釋放或自動釋放副本,否則,正如我所提到的,您正在泄漏該對象。 – 2010-10-15 04:43:01