До пяти минут я был уверен, что разбираюсь в подсчете ссылок в Objective c отлично, но когда я начал проверять объекты continueCount, то был очень удивлен, увидев то, что увидел.
Например, 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 с помощью alloc
Я также знаю, что ШАГ ТРЕТИЙ увеличивает количество сохранений на 1 с помощью addSubview
Но что происходит во ВТОРОМ ШАГЕ ??? почему это увеличило количество удержаний???
есть ли какое-то отношение к ARC??