2015-11-19 4 views
0

Я пытаюсь распечатать счетчик хранения контроллера вида в методе viewDidLoad. Возвращаемое значение равно 3.Retain Count of View Controller

Может кто-нибудь рассказать, почему значение 3?

Мой код выглядит следующим образом

@implementation ViewController 

    - (void)viewDidLoad 
    { 
     [super viewDidLoad]; 
     NSLog(@"Retain count in View Did Load is %ld", CFGetRetainCount((__bridge CFTypeRef)(self))); 

    } 
+0

Как ответы показывают, сохраняют счетчик не имеет смысла. Даже для отладки вы хотите использовать инструмент распределения, чтобы найти утечки. Тем не менее, каждый NSObject имеет свойство 'keepCount'. Чтобы получить эту информацию, не нужно ударять Core Foundation. – Avi

+0

Я думаю, что вы получаете ошибку компилятора, если вы вызываете 'keepCount' напрямую, когда включена ARC. – EricS

ответ

2

я бы не беспокоиться об этом. retainCount часто временно выше, чем вы могли ожидать. Добавьте метод -dealloc для отладки/модульных тестов и убедитесь, что он вызывается, когда viewController уволен, и все будет в порядке.

2

Ну, это 25 для меня:

2015-11-18 19:53:51.323 test[61900:10880987] Retain count in View Did Load is 25 

Вы не можете полагаться на счет сохранить как любое конкретное число (кроме того, что он не будет равен нулю).

Если вы действительно хотите знать, как все это закончилось, когда он сделал, использовать инструменты:

instruments allocation trace