Мне было интересно, можете ли вы сообщить мне о следующих двух сценариях, которые почти одинаковы, но с небольшими и большими объектами.Правильный способ обработки объектов в цикле с помощью Xcode
Сценарий 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 включена нет никаких последствий с делать выше массивную петлю и внутри него для каждого loop running Я выделяю и инициализирую указатель на строку. Потому что мне сказали, что он слишком мал и не имеет значения, и ARC может справиться с этим. Но не делать этого с большими объектами. Я изначально из C# фона, и я привык устанавливать даже мою строку в конце цикла к нулевому значению, но здесь вы не можете отпустить его в конце цикла, потому что ARC будет жаловаться, и мне сказали, если я установил его на nil
на конец цикла я бы создавал больше работы для ARC, и я не очень хорошо делаю и создаю зомби-код. Может ли кто-то уточнить, что они будут делать с объектом, который они выделяют, инициализируя массивный цикл, который мал по размеру памяти (предпочтительно строка, которую я использовал), когда ARC включается, в конце цикла?
Сценарий 2:
То же самое, что и выше, но предположим теперь, NSString то будет быть использованы выше, теперь другой объект, который является большим по размеру. Здесь я бы выделил &, чтобы инициализировать его перед циклом, а затем использовать его в цикле, установив его, но как бы я снова сделал кое-что для него в конце цикла, чтобы получить его бесплатно, поэтому снова ARC включился?
Заранее спасибо.