Если мы .h файл так:ARC переменная экземпляра сохранить релиз
@interface TestViewController : UIViewController {
__weak NSObject *object;
}
@end
и методы в .m файл, как это:
- (void)viewDidLoad {
[super viewDidLoad];
NSObject *localObject = [[NSObject alloc] init];
NSLog(@"%ld", CFGetRetainCount((__bridge CFTypeRef)localObject));
object = localObject;
NSLog(@"%ld", CFGetRetainCount((__bridge CFTypeRef)object));
NSLog(@"%ld", CFGetRetainCount((__bridge CFTypeRef)localObject));
}
Тогда мы получим следующий результат для сохранения счета:
Вопрос: почему счетчик удержания увеличивается до 2 на «объекте», когда он объявлен как переменная экземпляра «__weak», кроме того, остаток «localObject» остается включенным 1. Я думаю, это из-за того, что вставки ARC сохраняются/освобождаются но я не уверен.
Вы можете найти ответ здесь: http://www.stackoverflow.com/a/4636477/1187415 как предложил @Martin R – tanzolone
CFGetRetainCount() является идентичный -retainCount всеми способами, включая бесполезность. – bbum