NSArray *planetArray = [NSArray arrayWithObjects:@"Earth",
@"Jupiter",
@"Saturn",
@"Neptune",
@"Pluto", nil];
NSMutableArray *objectArray = [[NSMutableArray alloc] init];
for(NSString *eachPlanet in planetArray) {
Planet *newPlanet = [[Planet alloc] init];
[newPlanet setValue:eachPlanet forKey:@"name"];
[newPlanet setValue:@"TEST" forKey:@"type"];
[newPlanet setValue:[NSNumber numberWithInt:1234] forKey:@"mass"];
[objectArray addObject:newPlanet];
[newPlanet release];
}
for(Planet *displayEachPlanet in objectArray) {
NSLog(@"DATA: %@", displayEachPlanet);
}
[objectArray release];
我很好奇这是否是创建对象并为数组中的每个项目设置iVar的最佳方法。基本上我是:
发布Planet对象
打印我的星球对象
发布数组
注意:我只是在测试,这不是什么,我只是好奇......
欢呼加里答案 0 :(得分:3)
以这种方式做到这一点看不出任何严重错误。一个建议是为你的星球类提供一个扩展的初始化器,类似于:
-(Planet*) initWithName:(NSString*)name andType:(NSString*)type withMass:(int)mass;
然后创建行星:
Planet *newPlanet = [[Planet alloc] initWithName:eachPlanet andType:@"Test" withMass:42];
答案 1 :(得分:1)
对我来说很好看。如果您正在使用对象进行的操作是从它们打印的东西,您可能在一个循环中执行它而初始化较少等等,但如果那只是一个测试..看起来很好。