Я не уверен, но похоже, что запрос на самом деле не запланирован в цикле выполнения по какой-то причине. Может быть, попробовать что-то вроде это , чтобы запланировать это?
NSNetService *service = [[[NSNetService alloc] initWithDomain:@"local." type:@"_daap._tcp." name:@"My_Mac"] autorelease];
[service setDelegate:self];
[service scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:@"PrivateMyMacServiceMode"];
[service resolveWithTimeout:8.0];
Глупый вопрос, но вы явно используете протокол NSServiceDelegate или просто используете методы?
РЕДАКТИРОВАТЬ: У меня была еще одна мысль, что это может быть какое-то состояние гонки (более вероятный сценарий). Делегаты, как правило, слабые ссылки. Если ваш объект выпадает из области видимости и автоматически высвобождается, система получит нулевой дескриптор и будет запускать сообщения до нуля. В случае, когда вы показываете NSAlert (или выполняете другую работу), ваш объект может висеть достаточно долго, чтобы он мог вернуть ему сообщения. Не могли бы вы подтвердить, что ваш объект торчит в течение полных 8 секунд?