эй люди,
У меня проблема с пониманием управления памятью в iphone.
У меня следующая странная ситуация:
CAGradientLayer * hButtonLayer = [[CAGradientLayer alloc] init];
NSLog(@"1: retaincounter is?: %d", [hButtonLayer retainCount]);
[hButtonLayer setBounds:tempButton.bounds];
NSLog(@"2: retaincounter is?: %d", [hButtonLayer retainCount]);
[hButtonLayer setColors:[NSArray arrayWithObjects:
[UIColor colorWithRed:0.2 green:0.3 blue:0.4 alpha:1.0],
[UIColor colorWithRed:0.4 green:0.5 blue:0.6 alpha:1.0], nil]];
NSLog(@"3: retaincounter is?: %d", [hButtonLayer retainCount]);
[[tempButton layer] insertSublayer:hButtonLayer atIndex:0];
NSLog(@"4: retaincounter is?: %d", [hButtonLayer retainCount]);
вывод на консоль показывает следующее:
1: retaincounter is?: 1
2: retaincounter is?: 2
3: retaincounter is?: 2
4: retaincounter is?: 3
хорошо, на 1) ясно, что счетчик равен 1, потому что слой выделен и инициализирован. но почему в 2) setBounds -methid увеличивает счетчик удержания? и в 3) счетчик сохранения не увеличивается методом setColors ... и insertSublayer снова увеличивает счетчик хранения!
почему эти методы увеличивают счетчик? откуда мне знать, если какой-то framework-метод что-то увеличивает? Я имею в виду, что если я уменьшу счетчик сохранения, а какой-то каркасный метод не увеличил счетчик, я получу сбой - как мне определить, увеличивает или нет метод увеличение счетчика удержания?
спасибо за любую помощь!