2014-03-03 2 views
1

알림이 자식 스레드에 의해 시작된 경우 NSNotificationQueue (물론 자식 스레드에서 호출 됨)를 게시하지만 주 스레드에서 작업 처리기 인 경우 처리기가 호출되지 않습니다. 그러나 알림이 주 스레드에서 시작된 경우 예상대로 작동합니다.NSNotificationQueue, 보낸 사람과 처리기가 동일한 스레드에 있어야합니까?

Apple은 알림 발신자와 처리기가 동일한 스레드에 있어야한다는 것을 의미합니까? 예, NSNotificationQueue 그렇게 도움이되지 않는 것 같습니다. 그것을 아는 사람은 사전에 공유하고 감사하십시오.

[[NSNotificationQueue defaultQueue] enqueueNotification:notification postingStyle:NSPostASAP coalesceMask:(NSNotificationCoalescingOnName) forModes:nil]; 

답변

1

이들은 동일한 스레드에 있습니다.

NSNotificationQueue class reference에서 : 당신이 NSOperationQueue

편집에서 멀티 스레딩보고해야하는 경우 모든 스레드는 작업에 대한 기본 알림 센터와 연결된 기본 알림 큐를 가지고 있습니다. 고유 한 알림 대기열을 만들고 센터 및 스레드별로 여러 개의 대기열을 만들 수 있습니다.

그리고 :

+ (id)defaultQueue 는 현재 스레드에 대한 기본 알림 큐를 돌려줍니다. 이 알림 대기열은 기본 알림 센터를 사용합니다.

+0

각 하위 스레드는 자체 NSNotificationQueue를 가지며 defaultQueue는 주 스레드에 있습니다. 맞습니까? 감사. – jianhua