Я читаю книгу (link), в которой говорится следующее: «Вся эта автоматическая очистка и переработка памяти происходит просто путем установки items
на нуль. Это сила ARC».. Это говорит о следующем коде:Управление памятью iOS/ARC
// create array
NSMutableArray *items = [[NSMutableArray alloc] init];
// add random BNRItems to the array
for (int i = 0; i < 10; i++) {
BNRItem *p = [BNRItem randomItem];
[items addObject:p];
}
// print items in array
for (BNRItem *item in items) {
NSLog(@"%@", item);
}
items = nil;
Это в основном кратко объясняет, как с помощью настройки items = nil
все объекты выше разрушаться правильно. Мой вопрос:
- говорят, я использую ARC, и я не набор
items = nil
- это значит у меня будет утечка памяти?
Я испытал на переопределение dealloc из BNRItem и печати некоторой информации, dealloc, кажется, называется правильно на всех BNRitems, даже если я не установлю items = nil
.
Возможно, ваш метод работает в некоторых случаях, но нам нужна ARC для автоматической очистки объектов, иначе может возникнуть много проблем с утечкой памяти. –
Это не то, о чем спрашивает ОП. – dandan78