2011-12-28 4 views
0

는 그래서 같은 NSOperationQueue를 사용하여 백그라운드 스레드에서 방법을 수행하려합니다 :NSOperationQueue 누출?

NSOperationQueue *queue = [NSOperationQueue new]; 
    NSInvocationOperation *operation = [[NSInvocationOperation alloc] initWithTarget:self 
                      selector:@selector(method) 
                       object:nil]; 

    [queue addOperation:operation]; 
    [queue release]; 
    [operation release]; 

문제는 분석기는 큐에 저장되어 누수가 있다고 말한다는 것이다.

어떻게 해결할 수 있습니까?

답변

2

호출을 추가하려고 [MyClass의 새]는 [[MyClass에 ALLOC] 초기화], 그것은 retainCount = 1 따라서,이 후 출시한다 와 개체를 반환 호출하는 것과 동일합니다.

+0

위의 코드는 어떻게됩니까? 분석기 경고가 사라졌지만 옳은 일을하고 있는지 확인하고 싶습니다! –

1

operation 개체를 출시 하시겠습니까? autorelease 키워드

NSInvocationOperation *operation = [[[NSInvocationOperation alloc] initWithTarget:self 
                       selector:@selector(method) 
                        object:nil] autorelease]; 
+0

나는 이미 발표 한 코드에서 4 번째 줄을 발표했다. 대기열이 새고 있습니까? –

+0

이제 코드가 멋지게 보입니다. 여기서 누출은 없습니다 – beryllium

1

궁금한 점이 있다면, 당신은 당신의 방법 "방법"안에서 무엇을하고 있습니까? NSAutoreleasePool을 사용하고 있습니까? 그건 그렇고, 당신을 도울 this 답변을 사용하십시오.

+0

감사합니다. –