gpt4 book ai didi

iphone - objective-c - 引用计数

转载 作者:可可西里 更新时间:2023-11-01 03:40:10 26 4
gpt4 key购买 nike

直到五分钟,我确信我对 Objective c 引用计数的理解非常好,但是当我开始检查对象 retainCount 时,我对我所看到的感到非常惊讶。

例如 myViewController 有一个 UITableview:

.h文件

@interface RegularChatViewController : UIViewController <UITableViewDataSource, UITableViewDelegate>
{
UITableView *_tableView;
}
@property (nonatomic, retain) IBOutlet UITableView *tableView;

.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]);
}

令我惊讶的是,输入是:

tableView retain count: 1
tableView retain count: 2
tableView retain count: 3

显然第一步使用 alloc 将保留计数增加 1

我也知道第三步使用 addSubview 将保留计数增加 1

但是第二步发生了什么???为什么它增加了保留计数???
与 ARC 有关系吗??

最佳答案

根据 NSObject Protocol Reference 上的 Apple 文档对于 retainCount 方法:

重要 此方法通常对调试内存管理问题没有任何值(value)。因为任意数量的框架对象可能已经保留了一个对象以保存对它的引用,而同时自动释放池可能保存了任意数量的对象延迟释放,所以您不太可能从中获得有用的信息方法。

关于iphone - objective-c - 引用计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10701597/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com