Я пытаюсь загрузить новое представление в существующий контроллер представления, но я хочу загрузить это представление из файла XIB. Мой план состоял в том, чтобы создать второй viewController (viewController1 в приведенном ниже коде), затем сохранить его представление и выпустить тот viewController, который я только что создал. Я надеялся, что viewController будет выпущен, а представление останется, но этого, похоже, не происходит.
Вопрос 1: Если контроллеры представлений освобождаются, освобождается ли ассоциированное с ними представление независимо от того, каков счетчик сохранения представления? В моем примере кода ниже вы можете видеть, что представление имеет счетное число 13, прежде чем оно внезапно просто исчезнет.
Вопрос 2. Почему сохранение представления увеличивает его retainCount на 3?
PageViewController *viewController1 = [[PageViewController alloc] initWithNibName:@"Page1" bundle:nil];
[viewController1.view setUserInteractionEnabled:YES];
NSLog (@"vc retain count: %d", [viewController1 retainCount]); //count=1
NSLog (@"vc view retain count: %d", [viewController1.view retainCount]); //count=4
self.currentPageView=viewController1.view;
NSLog (@"vc retain count: %d", [viewController1 retainCount]); //count=1
NSLog (@"vc view retain count: %d", [viewController1.view retainCount]); //count=7
[viewController1.view retain];
NSLog (@"vc retain count: %d", [viewController1 retainCount]); //count=1
NSLog (@"vc view retain count: %d", [viewController1.view retainCount]); //count=10
[self.view addSubview:viewController1.view];
NSLog (@"vc retain count: %d", [viewController1 retainCount]); //count=1
NSLog (@"vc view retain count: %d", [viewController1.view retainCount]); //count=13
[viewController1 release];
NSLog (@"vc view retain count: %d", [viewController1.view retainCount]);
//objc[3237]: FREED(id): message view sent to freed object=0x538ce0