Eya*_*yal 6 iphone reference-counting objective-c ios retaincount
直到五分钟我才确定我对Objective c引用计数的理解非常好,但是当我开始检查对象retainCount时,我很惊讶地看到我所看到的.
例如,myViewController有一个UITableview:
.h文件
@interface RegularChatViewController : UIViewController <UITableViewDataSource, UITableViewDelegate>
{
UITableView *_tableView;
}
@property (nonatomic, retain) IBOutlet UITableView *tableView;
Run Code Online (Sandbox Code Playgroud)
.m文件
@synthesize tableView = _tableView;
- (void)loadView
{
_tableView = [[UITableView alloc] init]; // STEP ONE
NSLog(@"tableView retain count: %d",[_tableView retainCount]);
self.tableView.frame = CGRectMake(0, 0, 320, tableHeight); // STEP TWO
NSLog(@"tableView retain count: %d",[_tableView retainCount]);
[self.view addSubview:self.tableView]; // STEP THREE
NSLog(@"tableView retain count: %d",[_tableView retainCount]);
}
Run Code Online (Sandbox Code Playgroud)
令我惊讶的是,输入是:
tableView retain count: 1
tableView retain count: 2
tableView retain count: 3
Run Code Online (Sandbox Code Playgroud)
显然,STEP ONE将保留计数增加1 alloc
我也知道STEP THREE将保留计数增加1 addSubview
但是在第二步中发生了什么?为什么它会增加保留计数???
ARC有什么关系?
根据Apple文档关于NSObject协议参考的retainCount方法:
重要此方法在调试内存管理问题时通常没有价值.因为任何数量的框架对象可能保留了一个对象以保存对它的引用,而同时自动释放池可能在对象上保留任意数量的延迟版本,所以您不太可能从此获取有用信息方法.
| 归档时间: |
|
| 查看次数: |
1461 次 |
| 最近记录: |