首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Objective-C - retainCount返回错误的值

Objective-C - retainCount返回错误的值
EN

Stack Overflow用户
提问于 2018-04-11 16:17:42
回答 1查看 115关注 0票数 0
代码语言:javascript
复制
@class Person; 
@protocol PersonDelegate <NSObject> 
- (void)sendLetterForPerson:(Person *)p; 
@end 

@interface Person : NSObject 
@property (nonatomic, weak) id <PersonDelegate> delegate; 

- (void)writeLetterComplete; 
@end

@interface TestController ()<PersonDelegate> 
    @property (nonatomic, strong) Person *per; 
@end

_per = [[Person alloc] init];
_per.delegate = self;

NSLog(@"%lu",(unsigned long)_per.retainCount);
NSLog(@"%lu",(unsigned long)_per.delegate.retainCount);

MRC创建一个Person对象_per,设置委托,打印retainCount。_per.retainCount是1,但_per.delegate.retainCount是12,为什么?

EN

回答 1

Stack Overflow用户

发布于 2018-04-11 16:41:39

你应该看看official document for retainCount

此方法在调试内存管理问题时没有任何价值。由于任意数量的框架对象可能保留了一个对象以保存对它的引用,而同时自动释放池可能保存了对象上任意数量的延迟释放,因此您不太可能从此方法中获得有用的信息。

我想如果_per.delegate.retainCount是12岁也没问题,这里的_per.delegate是一个TestController。也许viewController引用由默认系统设计的另一个对象持有。

例如,如果使用UINavigationController推送viewController,则navigationController将保留1个对viewController的引用,并将retainCount增加1。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49769964

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档