我想知道您能否让我知道以下两种情况,它们几乎相似,但对象又小又大。
场景一:
在以下代码中:
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 会抱怨并且我被告知如果我将它设置为nil
在循环结束时,我将为 ARC 创建更多工作,但我并没有真正做对,而是在创建僵尸代码。有人可以澄清他们会对他们正在分配的对象做什么,在循环结束时在 ARC 打开的情况下在一个内存大小很小的大型循环(最好是我使用的字符串)中初始化吗?
场景二:
与上面相同,但假设现在上面使用的 NSSTRING 现在是另一个尺寸很大的对象。在这里,我显然会在循环之前分配和初始化它,然后通过设置它在循环中使用它,但是我将如何在循环结束时再次对它做一些事情以释放它,所以再次打开 ARC?
提前致谢。