Должен ли я освобождать эту переменную?

#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. Обычно удобнее работать с указателями, чтобы добраться туда.