2010-08-19 2 views
2

나는 정말 짜증나는 문제가 있습니다. 임 NSNetService (내가 알고있는) 후 검색하려고. http://www.macresearch.org/cocoa-scientists-part-xxviii-bonjour-and-how-do-you-do의 예제 코드를 내 애플리케이션에 복사했습니다. 내 서비스가 만들어 졌음을 (예제 프로그램에서) 볼 수있다. 그러나 검색을 클릭하고 NSNetServiceBrowser 검색을 시작하면 아무 일도 일어나지 않습니다. 새로운 위임 기능은 내 객체가 여전히 유지되는 것처럼 물건을 확인했습니다검색 할 때 NSNetServiceBrowser 대리자가 호출되지 않습니다.

-(void)netServiceBrowser:(NSNetServiceBrowser *)aBrowser didFindService:(NSNetService *)aService moreComing:(BOOL)more { 

을 호출되는, 그리고 난 그 아무것도 해제 볼 수없는 (그리고 난에 GC가 없습니다). 아무도 어떻게 해야할지 모르겠다. 이 코드는 예제와 정확히 동일합니다. 주위에 다른 것들이 있습니다 (OpenGL 창을 실행 중입니다).

+0

올바른 대리인을 NSNetServiceBrowser의 인스턴스에 할당 했습니까? – fbrunel

+0

나는 같은 문제가있다. 하지만 서비스를 게시하고 같은 장치에서 검색 할 때만 호출되지만 두 장치로 테스트하면 서비스가 발견되지 않습니다. –

답변

2

이 질문은 오래되었습니다 (iOS 4/5 시대인가요?) 그래서 이것이 당신에게 답이 될지 모르겠지만 응용 프로그램의 메인 스레드에서만 NSNetServiceBrowser를 사용하고 있는지 확인하십시오.

(기본 스레드에서 초기화해야하는지 또는 동일한 스레드에서 -search로 초기화하거나 호출해야하는지, 또는 주 스레드에서 -search를 호출하기에 충분하다면 기억이 안납니다.) ,하지만 정확히 동일한 문제가 있었고 제 경우에는 백그라운드 스레드를 사용하는 것과 관련이있었습니다. 막연한 대답을 드려 죄송합니다.)

+0

그냥 스스로 테스트 해 본다면, 메인 스레드 자체에서 NSNetService를 초기화해야합니다. NSNetService의 "searchForServicesOfType ..."과 같은 델리게이트를 할당하고 호출하는 것만으로는 메인 쓰레드 내에서만 작동하지 않습니다. dispatch_async (dispatch_get_main_queue(),^{ ...}) 내에 netservice 항목을 던졌습니다. 블록. –