我在 Lion 中使用 XCode 4.2。当我使用调试配置文件(按 Apple+R 运行它)编译我的应用程序时,当我调用 nanosleep 时,它永远不会从该函数返回。曾经。如果我分析代码(构建发布配置文件),那么它会返回。我只是使用 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
预期行为: Hello 后 0.01 毫秒将“World”打印到调试控制台。
实际行为:仅打印“Hello”且不显示任何窗口。