2010-12-07 3 views
0

이것은 내 시나리오입니다 여러 개의 하위 뷰 사본이 만들어지는 기본보기가 있습니다. 이것은 내가하는 일이다 1. 기본보기에서 서브 뷰에 대한 변수를 만들었습니다. 2. 서브 뷰의 여러 복사본을 생성하고 올바르게 작동하는 스크롤 가능보기 안에 표시했습니다. 3. 언제 subview 변수를 출시 할 때가 언제입니까?iphone; 다중 사본이 파생 된 경우보기를 릴리스 할 때?

서브 뷰 선언 SubView * svm;

svm=[[SubView alloc] initWithNib:@"SubView" bundle:nil] 
//Show svm here 
// am not releasing svm here 
svm=[[SubView alloc] initWithNib:@"SubView" bundle:nil] 
//Show svm here 
// am not releasing svm here 
svm=[[SubView alloc] initWithNib:@"SubView" bundle:nil] 
//Show svm here 
// am not releasing svm here 

올바른 방법인지 확실치 않지만 잘 작동합니다.

내가 mainview의 dealloc에서 svm을 릴리스하면 괜찮습니까? 어떻게해야합니까?

감사 Veeru

답변

1

새 메모리가 새 인스턴스에 할당됩니다 ALLOC 때마다. 메모리 누수를 방지하려면 새 인스턴스를 만들기 전에 해제해야합니다. 당신이 그것에 의해 유지됩니다 다른 뷰에 서브 뷰로 SVM을 추가 할 때

 
svm=[[SubView alloc] initWithNib:@"SubView" bundle:nil] 
//Show svm here 
[svm release]; 

svm=[[SubView alloc] initWithNib:@"SubView" bundle:nil] 
//Show svm here 

[svm release]; 
svm=[[SubView alloc] initWithNib:@"SubView" bundle:nil] 
//Show svm here 
[svm release]; 

은 BTW 슈퍼 볼 그리고 더 이상 코드에서 직접 액세스 할 수 있도록 필요한 경우 안전하게 해제 할 수 없습니다.

+0

내가 풀어 준다면 앱이 하위보기의보기 부하에서 수행되는 모든 작업에서 충돌하기 때문에 작업이 완료되기 전에도보기가 메모리에서 해제되고있는 것 같습니다. – Veeru

+0

해제하기 전에 슈퍼 뷰에 뷰를 추가해야합니다. – Gu1234

+0

물론, 내가 superview에 추가됩니다. superview에 추가 된 뷰를 다시 릴리스하는 것이 안전할까요? 하위보기가로드/표시 될 때 어떤 작업이 발생하더라도? – Veeru

관련 문제