5分までは、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
明らかにステップ1は保持カウントを1増やしますalloc
また、STEPTHREEで保持カウントが1増加することも知っています。addSubview
しかし、ステップ2で何が起こっているのでしょうか?なぜそれは保持数を増やしたのですか?
ARCとは何か関係がありますか?