我是一名软件应用程序开发专家,进入最后一年,我们可以自由选择语言。作为Apple Fanboy - 我的选择自然就是Objective-C。
作为一名学生 - 我们都学习了Java和我们的OOP模块:我们必须建立一个基于文本的垄断游戏。
在Java中很容易做到 - 特别是考虑到你有构造函数和重载构造函数。在Objective C中 - 重载和构造函数并不那么容易。
我意识到有一种方法可以用init和其他东西来做,但我还在学习,并且很难尝试在Objective C上获得一些OOP。
正如您所猜测的那样 - 我正在尝试基本将Java代码移植到Objective C,以便在Apple Way上完成工作。这就是我要度过夏天的方式。
我的问题如下:
你如何使用“重载的内容”?
我在java中垄断的主板是一个数组,但是重载的构造函数作为填充这些数组的对象:
public void board(){ //method to initialise the property objects
board [0] = new Extras ("Go",200,5);
board [1] = new Property("Old Kent",80,6,0);
board [2] = new Property("White Hall",100,10,0);
board [3] = new Property("Fleet Street",120,12,0);
还 - 你如何使用NSArray / MutableArray做到这一点?
我一直在破坏我的大脑试图解决它 - 我仍然是一个目标C和软件的新手所以请温柔。
谢谢你们。
答案 0 :(得分:2)
在Property类中,添加一个新的初始值设定项:
// designated initializer
- (id)initWithName:(NSString *)name price:(int)price rent:(int)rent
{
self = [super init];
if (self) {
// Set your ivars here (e.g. _name = name;)
}
return self;
}
在初始化程序中,您应该始终调用超类的指定初始值设定项,检查它是否成功,如果是,则编写自己的逻辑。然后,您可以添加调用此方法的便捷初始化程序:
- (id)init
{
return [self initWithName:@"" price:0 rent:0];
}
在这种情况下,您可以调用自己的指定的初始化程序。
正如Richard J. Ross在评论中所提到的,你可以使用addObject:将对象添加到NSMutableArray。
NSMutableArray *board = [[NSMutableArray alloc] init];
[board addObject: [[Property alloc] initWithName:@"Old Kent" price:80, rent:6]];
// and so on
您无法将对象添加到不可变的NSArray中。