要创建一个合适的Mac应用程序,您必须创建一个Mac OS X包。您可以在Apple网站上找到伟大的文档,here。您可以使用标准工具创建它们(我编写了一个小型python脚本来创建一个简单的.ini文件的包,描述要打包的文件以及如何构建文件)。
基本上,应用程序包只是一个带有.app
扩展名和固定结构的常规目录。需要以下文件:
Application.app/
+ Contents/
+ MacOS/
| + <Executable>
+ Resources/
| + <Icon>
+ Info.plist
的Info.plist
文件是一个标准的属性列表文件(无论是在XML还是在老格式),这表明什么是可执行文件(CFBundleExecutable
)的名字,是什么图标文件的名称(CFBundleIconFile
),捆绑类型(CFBundleType
,值为APPL
)以及其他一些信息(支持的文件类型,版本字符串,开发语言...)。这些文件是具有基本Mac OS X应用程序所需的最低限度的要求。
有关Mac OS X消息泵如何工作的说明,我建议您阅读Matt Gallagher的article。他解释了NSApplication类的运行消息是如何实现的。然后,您可以编写此方法runOnce,该方法只有在存在未决消息时才会迭代。然后,您将定期调用这个函数(这是真的类似PeekMessage
,TranslateMessage
,并且DispatchMessage
序列在Win32):
- (void)runOnce
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
[self finishLaunching];
for (;;)
{
[pool release];
pool = [[NSAutoreleasePool alloc] init];
NSEvent *event =
[self
nextEventMatchingMask:NSAnyEventMask
untilDate:nil
inMode:NSDefaultRunLoopMode
dequeue:YES];
if (sender == nil)
break;
[self sendEvent:event];
[self updateWindows];
}
[pool release];
}
谢谢,但我更喜欢做我自己,我也想学学。 – 2011-01-08 23:11:57
SDL是一个很好的学习来源! – 2011-01-09 05:32:20