2012-02-04 3 views
2

ARC를 사용하고 UIViewController 뷰를 추가 할 때 상황을 처리하는 방법은 무엇입니까? ARC로 UIViewController의 addSubview 이후에 뷰를 유지하는 방법

MyViewController *vc = [[MyViewController alloc] initWithNibName:@"MyViewController" bundle:nil]; 
[someView addSubview:vc.view]; //this retain vc.view 

addSubview 제어기, onlu 뷰를 유지하지 그래서 컨트롤러가 해제되기 때문에

. ARC 이전에는 컨트롤러를 유지하는 방법이 있었지만 ARC가 View Controller를 해제하지 못하게하는 방법은 무엇입니까?

답변

2

vc를 기본 강력한 속성으로 속성으로 선언하여 유사한 상황을 해결했습니다.

+1

나는 이것이 현재 유일한 해결책이라고 생각한다. View Controller는 선언 된 속성이 변경되지 않는 한 메모리에 남아 있고 부모보기 컨트롤러에서 제거 된 경우에도 항상 컨트롤러 사본 한 개가 retined됩니다 (iOS 5.0 이후 removeFromParentViewController 사용) – Marcin

+0

감사합니다. 한 줄의 답. –

-1

왜이 새의 ViewController를 필요?
View로 Subview를 추가하고 "someView"의 ViewController로 모든 것을 처리해야합니다.

+0

viewcontroller가 해제 될 때보기가 해제되지 않기 때문에 릴리스 된 컨트롤러와 관련된보기로 아무 것도 시도하지 않으면이 충돌이 발생합니다. – Marcin

0

#define AntiARCRetain(...) void *retainedThing = (bridge_retained void *)__VA_ARGS; retainedThing = retainedThing

그리고 AntiARCRetain (컨트롤러)을 호출;

+0

이 코드의 기능에 대해 설명 할 수 있습니까? – iOSDeveloper

+1

오브젝트를 보유합니다. –

관련 문제