기존보기 컨트롤러에 새보기를로드하려고하지만 xib 파일에서 해당보기를로드하려고합니다. 내 계획은 두 번째 viewController (아래 코드에서 viewController1)를 만든 다음 해당 뷰를 유지하고 방금 만든 ViewController를 릴리스하는 것이 었습니다. viewController가 해제되고 뷰가 계속 고정되기를 기대했지만 그럴 수는 없습니다.ViewController를 해제하는 동안 View를 유지할 수 있습니까?
질문 1 : viewcontroller가 할당 해제되면 해당 뷰가 보유 개수에 관계없이 관련 뷰가 할당 취소됩니까? 아래 샘플 코드에서 갑자기 사라지기 전에 뷰의 보유 개수가 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
감사합니다. 보유 수를 매번 3 번 올리는 이유는 아직 알지 못했지만 문제가 완전히 해결되지 않도록 리팩토링을 시도하기에 충분할만큼 지저분하다고 생각합니다. 나는 아래의 히카루의 대답에 투표하기에 충분한 명성을 얻었 으면 좋겠다. 또한 도움이되었다. – niels