Я использую XCode 4.2 в Lion.Когда я компилирую свое приложение с профилем Debug (нажимая Apple + R, чтобы запустить его), то когда я вызываю nanosleep, оно никогда не возвращается из этой функции.Когда-либо.Если я профилирую код (создаю профиль Release), он возвращается.Я просто использую настройки профиля по умолчанию для проекта XCode.Есть идеи, что здесь может происходить?
Чтобы воспроизвести это, создайте совершенно новое пустое приложение и поместите следующий код в appDelegate.m:
#import "AppDelegate.h"
#import <time.h>
@implementation AppDelegate
@synthesize window = _window;
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
NSLog(@"Hello");
struct timespec a;
a.tv_nsec = 10000;
/** THE FIX! **/
a.tv_sec = 0;
/** THE FIX! **/
nanosleep(&a,NULL);
NSLog(@"World");
}
@end
Ожидаемое поведение: Вывести «World» на консоль отладки через 0,01 мс после Hello.
Фактическое поведение: Печатается только «Hello» и окно не появляется.