상황
1. NSOperationQueue를 상속받아 커스텀 OperationQueue객체를 만듬
2. NSOperation을 상속받은 커스텀 객체를 위 큐에 추가시킴
3. Queue를 진행하면서 Operation을 수행함 -> 완료 될때 마다 Dealloc이 실행됨
4. 모든 Operation을 완료함
5. 완료 후 커스텀 OperationQueue에 Cancel 메세지를 보냄
원인
1. 오퍼레이션 큐의 모든 오퍼레이션이 실행된 후 dealloc상태에서 Cancel 메세지를 발생시키면 임의의 오퍼레이션에서 Cancel메세지가 발생되어 메모리 릭이 발생된다. 왜 완료된 오퍼레이션에서 Cancel이 작동되는지 정확한 원인은 파악이 안됨
2. 여기서 사용되는 큐는 커스텀 프로그래스 바 작업을 위해 일반 스레드 -> 메인스레드로 변경하는 부분이 들어가 있 작업하는 것이 이유가 되는 것 같음
// 메인스레드로 바꾸는 예
if([NSThread isMainThread] == NO)
{
[self performSelectorOnMainThread:_cmd withObject:nil waitUntilDone:NO];
return;
}
'iOS' 카테고리의 다른 글
Objective C Delegate 활용 (0) | 2011.02.24 |
---|---|
CFURLCreateStringByAddingPercentEscapes 메모리 관리 (0) | 2011.02.17 |
메모리릭 현상(1) (0) | 2011.01.31 |
Custom UINavigationController (0) | 2011.01.24 |
iPhone TestCase 생성 (0) | 2011.01.18 |