【发布时间】:2012-07-25 04:48:14
【问题描述】:
我想知道您能否告诉我以下两种情况,它们几乎相似,但对象又小又大。
场景 1:
在以下代码中:
NSString *iAmAstring;
for(int i = 0; i < 100000;i++)
{
NSLog(@"INT VALUE: %d", i);
iAmAstring = [NSString stringWithFormat:@"%d", i];
NSLog(@"STRING VALUE: %@", iAmAstring);
}
自从我打开 ARC 以来,有人告诉我,执行上述大规模循环并在其中为每个循环运行我分配和初始化一个字符串指针没有任何影响。因为有人告诉我它太小了,没关系,ARC可以处理它。但不要用更大的物体来做。我最初来自 C# 背景,我习惯于在循环结束时将我的字符串设置为 null,但在这里你不能在循环结束时释放它,因为 ARC 会抱怨,如果我将其设置为 @987654322,我会被告知@ 在循环结束时,我将为 ARC 创建更多工作,但我并没有真正做对,而是在创建僵尸代码。有人可以澄清一下他们会对他们分配的对象做什么,在循环结束时在 ARC 打开的情况下在内存大小很小的大型循环中初始化(最好是我使用的字符串)?
场景 2:
与上面相同,但假设现在上面使用的 NSSTRING 现在是另一个尺寸很大的对象。在这里,我显然会在循环之前分配和初始化它,然后通过设置它在循环中使用它,但是我将如何在循环结束时再次对它做一些事情以释放它,所以再次打开 ARC?
提前致谢。
【问题讨论】:
标签: iphone xcode cocoa ios5 xcode4.3