Objective c — Подсчет ссылок

До пяти минут я был уверен, что разбираюсь в подсчете ссылок в 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??

6
задан graver 3 July 2012 в 12:14
поделиться