我用字符串对象填充数组。可能有成千上万的这些。我在for循环中做了很多alloc和inits,我知道这很昂贵。有什么更好,更有效的方法呢?
由于
//loop through the array of dictionaries
for(NSUInteger i =0; i < [latestResults count]; i++){
self.workingEntry = [[AppRecord alloc] init];
//Get the next dictionary from the array of dictionaries
NSDictionary *currentRecord = [latestResults objectAtIndex:i];
//Set the object
[self.workingEntry setAppURLString:[currentRecord valueForKeyPath:@"id.label"]];
[self.workingEntry setAppName:[currentRecord valueForKeyPath:@"im:name.label"]];
NSArray *imageArray = [currentRecord valueForKeyPath:@"im:image.label"];
[self.workingEntry setImageURLString:[imageArray objectAtIndex:0]];
[self.workingEntry setArtist:[currentRecord valueForKeyPath:@"im:artist.label"]];
//Add object to array
[self.workingArray addObject:self.workingEntry];
currentRecord = nil;
self.workingEntry = nil;
imageArray = nil;
}
答案 0 :(得分:2)
关闭袖口,除了拨打valueForKeyPath:
之外,我更担心所有+alloc
次来电。
在测量之前不相关。
如果要减少分配数量,请转到使用单例或全局缓存或其他一些机制来统一对象。当然,您可能会遇到缓存维护性能瓶颈的风险。