Просто подумайте о владении и утилизации объектов соглашении, в котором кратко сказано, что если вы выделили объект, вы являетесь его владельцем.
Другими словами, вы имеете все права на выпуск myNavController
, как только он вам не нужен.
С другой стороны, UIPopoverController
должен вступить во владение более myNavController
, используя retain.
Итак, (снова) да. Вы можете спокойно отпустить myNavController
.
В некоторых редких случаях правила соглашения о собственности не соблюдаются Подобные исключения упоминаются в документации для конкретных методов. Но здесь дело не в этом.
Позволяет применить эти правила к вашему фрагменту:
В первой строке
myNavController = [[UINavigationController alloc] initWithRootViewController:[[[MyPopoverControllerClass alloc] initWithNibName:@"MyPopoverNib" bundle:[NSBundle mainBundle]]autorelease]];
сохранить счет для myNavController
равен как минимум 1.
Вторая строка
myPopoverController = [[UIPopoverController alloc] initWithContentViewController:myNavController];
приведет к тому, что счет myNavController
будет составлять , по крайней мере, 2, в результате владения внутри initWithContentViewController
.