要創建一個合適的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