메모리 오버로드 (관리)와 관련된 문제를 매우 깨끗하게 해결하기 위해 고심하고 있습니다. 임 다른 뷰를 포함하는보기의 시리즈를 가진 내 프로젝트에 나는이 같은 상황이 : | _PageViewiOS 디자인 델리게이트와 부모 객체를 사용한 패턴 메모리 관리
|
MAINVIEW
_CustomButton
을한혜진까지 한혜진, 좋은 쉽게 케이크. CustomButton에는 어떤 이유에서 대리자 (프로토콜)가 있으므로 PageView에서 N CustomButtons를 만드는 "주기를 위해", PageView에서 Self로 대리자를 설정하고 (CustomVuttonDelegate를 확장)
과 같은 단추를 놓습니다{
CustomButton *customButton_ = [[CustomButton alloc] initWithFrame:CGRectMake(100.0,50+(i*55.0),200.0);
customButton.delegate = self;
[self addSubView:customButton_];
[customButton_ release];
}
soo far soo again. 버튼을 누르십시오, PageView 프로토콜 메서드를 얻을, 몇 가지 코드를하고 voilà, 완료됩니다. 하나의 문제는 방법은 내가
[pageView_ removeFromSuperview];
[pageView release], pageView_ = nil;
pageView_ = [PageView alloc] initWithFrame.....];
를 호출하고 I 표시 할 다른 데이터와 객체를 다시 있도록 한 점에서, MAINVIEW는 페이지 뷰를 제거해야한다는 것입니다. PageView가 결코 메모리에서 해제 및 제거되지 않는다는 것을 알아 챘습니다. 그 이유는 retainCount가 PageView 내에서 만든 CustomButton의 수와 물론 위임을 자체 플러스 중 하나에 할당했기 때문입니다. 내 질문은 모든 객체를 안전하게 제거하고 PageView도 제거 할 수있는 가장 깨끗한 방법은 무엇입니까 (메모리에 데이터를 표시하기 위해 많은 양의 데이터를로드하기 때문에).
지금은하고 있어요 :
내가 그것을 개체를 CustomButton 것으로, 페이지 뷰있는 NSMutableArray에서 만들고 이전 페이지 뷰를 제거하기 위해, I주기를하고 대리자 = 전무를 설정 한 다음 각을 해제 개체, NSMutableArray ("holder"라고 함)를 릴리스 한 후
그러나 문제는 다른 유형의 다른 객체를이 프로토콜에 추가하려는 경우이 배열에 추가하면 객체를 유지하는 다른 문제가 발생할 수 있다는 것입니다.
어디서 사람, 지식이 부족합니까? 더 공부해야합니다 (내가 말할 수 있음). 아니면 다른 OOD로 접근해야합니까?
고맙습니다.이 문제로 인해 과부하가 걸리고 내 머리가 가까이에 갇혀 있습니다. :)
CustomButton 클래스의 대리자 속성을 어떻게 선언하고 구현합니까? – murat