Сохраняя UIViewControllers's.view, затем выпуская VC, VC получает dealloc'd? - PullRequest
0 голосов
/ 15 марта 2012

Я создаю группу UIViewControllers для управления несколькими пользовательскими объектами.Хотя мне больше не нужен Прямой доступ к UIViewController из того места, где он был создан.Я хочу добавить viewController.view в представление моего Master UIViewController.Затем я выпускаю subViewController.SubViewController имеет распознаватель жестов, и когда я выполняю жест, я получаю сообщение, отправленное в освобожденный экземпляр.

Вот мой код.

[...snip...]
    for (int elementForPageTypeIndex = 0 ; elementForPageTypeIndex < elementsOnPage; elementForPageTypeIndex ++){


            IoUIElementPickerElementButtonViewController * element = [[IoUIElementPickerElementButtonViewController alloc] initWithNibName:@"IoUIElementPickerElementButtonViewController" bundle:nil];

            pageColumn = (elementForPageTypeIndex)%2 ;
            pageRow = roundf((elementForPageTypeIndex)/2);

            CGRect elementFrame= CGRectMake(kElementPickerColumnLeftOffset + (element.view.frame.size.width + kElementPickerColumnSeperation)*pageColumn + pageIndex*kElementPickerColumnPageOffset,
                                            kElementPickerRowTopOffset +  (kElementPickerRowSeperation + element.view.frame.size.height) * pageRow,
                                            element.view.frame.size.width,
                                            element.view.frame.size.height);

            [element.view setFrame:elementFrame];

            SysCDElement *ourCDElement = [elementsForPage objectAtIndex:elementForPageTypeIndex + maxElementsPerPages * pageIndex];

            [scrollViewContent addSubview:element.view];
            [element release];

    }
[...snip...]

Сразу после релиза запускается утилита element.Я думал, что если бы я сохранил ViewController View, что сам ViewController также будет сохранен?

Спасибо,

1 Ответ

2 голосов
/ 15 марта 2012

Неа. Было бы довольно страшно, если бы сохранение вида UIViewController также волшебным образом сохранило UIViewController.

Практическое правило: если вам нужно что-то, чтобы остаться в живых, вы сохраняете это. Никогда не выпускайте это, если вам все еще это нужно. Рассчитывать на какой-то другой класс, чтобы сохранить его, не является надежным. Если вы хотите, чтобы контроллер оставался рядом, не отпускайте его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...