#objective-c #release
#objective-c #освобождение
Вопрос:
UIViewController *parentController;
for (UIView* next = [self superview]; next; next = next.superview) {
UIResponder* nextResponder = [next nextResponder];
if ([nextResponder isKindOfClass:[UIViewController class]]) {
parentController = (UIViewController*)nextResponder;
}
}
В этом коде должен ли я освобождать ParentController?
Тогда, когда?
Ответ №1:
Поскольку вы не принимали права собственности (retain / alloc / copy / new) на объект ParentController, поэтому вам не нужно его освобождать.
Ответ №2:
Вам не нужно освобождать ее, потому что вы не увеличили ее количество сохранений (на new
, alloc
, retain
или copy
).
Ответ №3:
Нет. Вы не становитесь владельцем, поэтому ее также не нужно освобождать.
Комментарии:
1. Цель вашего кода, однако, немного ломает голову.
2. Похоже, вы прокладываете свой путь к содержащему контроллер представления, нарушая правильную структуру MVC. Обычно удобнее работать с указателями, чтобы добраться туда.