【发布时间】:2015-01-09 18:16:59
【问题描述】:
请注意Category 变量在以下两种方法中的使用方式。我认为方法 1 不好,因为每个循环都会创建一个变量的新实例,那么为什么我会看到这么多使用这种策略的代码示例呢?我认为方法 2 会更好,因为它会使用更少的内存。
方法一
NSData * data = [NSData dataWithContentsOfURL:url];
json = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil];
for (int i=0; i < json.count; i++)
{
NSString * Category = [[json objectAtIndex:i] objectForKey:@"CategoryID"];
//do something here
}
方法 2
NSURL * url = [NSURL URLWithString:getDataURL];
NSData * data = [NSData dataWithContentsOfURL:url];
json = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil];
NSString * Category
for (int i=0; i < json.count; i++)
{
Category = [[json objectAtIndex:i] objectForKey:@"CategoryID"];
//do something here
}
【问题讨论】:
-
保持你的代码尽可能清晰,让编译器担心优化,除非分析显示你有问题。
-
忽略 ARC,它们都使用相同数量的内存。 “创建”一个局部变量不需要任何成本。一般来说,变量的范围应该尽可能小(更容易理解和更少的错误),这对于 ARC 来说是双倍的。
标签: objective-c variables memory