Iphone 创建对象&;在循环中设置IVAR?
我很好奇这是否是创建对象并为数组中的每个项设置iVar的最佳方法。基本上我是:Iphone 创建对象&;在循环中设置IVAR?,iphone,objective-c,cocoa-touch,Iphone,Objective C,Cocoa Touch,我很好奇这是否是创建对象并为数组中的每个项设置iVar的最佳方法。基本上我是: 创建行星对象 设置iVar(从NSString数组) 将行星对象添加到阵列中 释放行星物体 打印我的行星对象 释放阵列 注:我只是测试,这不是为了什么,我只是好奇 干杯,加里对我来说很好。如果你对这些对象所做的只是从它们中打印一些东西,你可能可以在一个循环中用更少的初始化之类的方式来完成,但是如果这只是一个测试……看起来不错。对我来说不错。如果您对对象所做的只是从对象中打印一些内容,那么您可能可以在一个循环中使用较少
干杯,加里对我来说很好。如果你对这些对象所做的只是从它们中打印一些东西,你可能可以在一个循环中用更少的初始化之类的方式来完成,但是如果这只是一个测试……看起来不错。对我来说不错。如果您对对象所做的只是从对象中打印一些内容,那么您可能可以在一个循环中使用较少的初始化之类的操作,但如果这只是一个测试,它看起来很好。看不出这样做有什么明显的错误。一个建议是为您的行星类提供一个扩展的初始化器,大致如下:
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];
然后通过以下方式创建行星:
-(Planet*) initWithName:(NSString*)name andType:(NSString*)type withMass:(int)mass;
我看不出这样做有什么严重的错误。一个建议是为您的行星类提供一个扩展的初始化器,大致如下:
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];
然后通过以下方式创建行星:
-(Planet*) initWithName:(NSString*)name andType:(NSString*)type withMass:(int)mass;
我没有想到这一点,我也在看KVC,所以我在循环中设置IVAR。这是一个非常好的观点,谢谢。我没有想到这一点,我也在看KVC,所以这就是为什么我在循环中设置IVAR。这是一个非常好的观点,谢谢。