2016-03-07 2 views
0

У меня есть два контроллера view (vcA и vcB), vcA - это родительский элемент для vcB (я добавил vcB через vcA с помощью addChildViewController), в обоих контроллерах у меня есть объект, объявленный с сильным аргументом. Прежде чем представить vcB, я делаю somenthing vcB.myobject = self.myobject, может вызвать этот цикл сохранения? Лучше использовать слабый аргумент для объекта из vcB?Является ли это циклом сохранения (свойство)?

+0

Одна вещь, которую нужно добавить - это действительно очень легко проверить. Быстрая эвристика, которую я использую, чтобы определить, существует ли цикл сохранения (может быть, не идеальный, поэтому ваш пробег может отличаться), но просто поместите NSLog в метод 'dealloc' контроллера вашего вида, и когда вы уволите этот контроллер представления, если есть цикл сохранения, не будет вызываться. – Mike

+0

@Mike Я проверил, как вы sugessted и метод его называют, спасибо –

ответ

2

Он вызывает цикл удержания, если объект имеет сильную ссылку на один из контроллеров представления. Если объект не имеет сильной ссылки на любой контроллер просмотра, он не вызывает цикл сохранения.

+0

Ударьте меня к нему. Пока у self.myObject нет сильного возврата к контроллерам вида, вы в порядке. – Mike

+0

@rob mayoff Спасибо, теперь я понимаю, что лучше. –

2

Это не цикл удержания. Это всего лишь два объекта (vcA и vcB) с сильными ссылками на третий объект (myObject). Это нормально и правильно. Каждый из них будет выполнять правильное управление памятью на этом третьем объекте, и он не будет протекать.

+0

Это то, что я думал в первый раз, но я хотел быть уверенным, спасибо –

Смежные вопросы