我正在为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