2014-09-16 3 views
1

Я больше привык использовать перья, чем раскадровки, и с наконечниками большинство торговых точек были слабыми.Должны ли просматривать контроллеры, загруженные из раскадровки, сильными или слабыми?

Скажите, что я хочу сделать что-то вроде этого:

self.menuViewController = [storyboard instantiateViewControllerWithIdentifier:@"MenuViewController"]; 

Если menuViewController свойство быть strong или weak?

+0

сильный. Работает ли он со слабым :? – Injectios

ответ

0

Должно быть сильным. Если вы настроите его как слабый, он будет освобожден на следующей строке.

-1

Откровенно говоря, я немного смущен, и мой ответ не полностью решает проблему, но обнаруживает довольно неожиданные вещи.

я предположил, что

UIViewController *weakOrStrongViewController = [storyboard instantiateViewControllerWithIdentifier:@"viewControllerID"]; 

ли что-то подобное - initWithNibName метод

и мы должны держать такие объекты, как strong ссылки.

, но когда я сделал следующее:

__weak UIViewController *weakOrStrongViewController = [storyboard instantiateViewControllerWithIdentifier:@"viewControllerID"]; 

weakOrStrongViewController не были высвобождены на следующей строке. Более того, я могу легко представить его и уволить.

Я также обнаружил, что retainCount является: (я знаю, что это не рекомендуется и может ввести в заблуждение)

NSLog(@"Retain count is %ld", CFGetRetainCount((__bridge CFTypeRef)self.presentedViewController)); 

Retain count is 5 

Этот метод чисто описано в официальной документации.

+0

В этом случае удержание в процентах вдвойне бесполезно. – bbum

+0

Согласитесь, что это не показывает реальную картину, но в любом случае 5 не случайное число, и если вы используете слабую ссылку, что-то еще имеет ссылку на нее – Injectios

+0

Все еще бессмысленно. Из этих 5, сколько из-за того, что объект является авторефератом? Сколько из внутренних деталей реализации вы не контролируете? Сколько из них является временным как часть создания сценария? – bbum

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