在Objective-C中重用循环中的Object

时间:2012-09-14 16:01:29

标签: objective-c ios5 nsarray nsdictionary

我用字符串对象填充数组。可能有成千上万的这些。我在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;


    }

1 个答案:

答案 0 :(得分:2)

关闭袖口,除了拨打valueForKeyPath:之外,我更担心所有+alloc次来电。

在测量之前不相关。

如果要减少分配数量,请转到使用单例或全局缓存或其他一些机制来统一对象。当然,您可能会遇到缓存维护性能瓶颈的风险。