2014-01-16 5 views
0

NSURLConnection 인스턴스에 임의의 수를 사용하고 나면 작업이 중지되고 절대로 delegate의 메서드를 호출하지 않는 문제가 있습니다. 그들이 작업에 넣어하는 방법은 다음과 같다 :mainRunloop의 NSURLConnection이 작동하지 않습니다.

[[NSRunLoop mainRunLoop] addPort:self.port forMode:NSDefaultRunLoopMode]; 
[_connection scheduleInRunLoop:[NSRunLoop mainRunLoop] forMode:NSDefaultRunLoopMode]; 
[self.connection start]; 
[[NSRunLoop mainRunLoop] run]; 
그들의 번호를 사용 후에는 작동이 중지 사실은, 내가 그들 (자원의에서 주요 runLoop에 아마 포트를 실행하는 것이 생각하게

또는 다른 것). 모든 꽤 잘 정리 점점

[_connection cancel]; 
[_connection release]; 

[[NSRunLoop mainRunLoop] removePort:self.port forMode:NSDefaultRunLoopMode]; 
[_port release];  
[super dealloc]; 

너희들이 방법 잘못 아무것도 볼처럼

이 보인다? 왜 그들이 일하는 것을 멈출 수있는 아이디어가 있습니까?

답변

1

Apple's documentation on NSRunLoop에 따르면

실행 루프 모드

NSRunLoop defines the following run loop mode. 

extern NSString* const NSDefaultRunLoopMode; 
extern NSString* const NSRunLoopCommonModes; 
Constants 

NSDefaultRunLoopMode 

    The mode to deal with input sources other than NSConnection objects. 

내가 NSConnection 객체로 보이는 당신이 비록 보지 않고, 대한 NSDefaultRunLoopMode을 사용한 것으로 나타났습니다 나머지 코드는 제가 추측하고 있습니다. 사용하려고 시도 할 수있는 또 다른 사항은 performSelector:onThread:withObject:waitUntilDone:입니다. 아마도 연결 상태 중 하나가 경쟁 상태에있을 수 있습니다.