適切な Mac アプリケーションを作成するには、Mac OS X バンドルを作成する必要があります。Apple サイト (こちら) で優れたドキュメントを見つけることができます。それらは標準ツールで作成できます(パックするファイルとファイルの作成方法を説明する単純な.iniファイルからバンドルを作成するための小さなpythonスクリプトを作成しましたInfo.plist
)。
基本的に、アプリケーション バンドルは、.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 によるこの記事を読むことをお勧めします。彼は、NSApplication クラスの実行メッセージがどのように実装されているかを説明しています。次に、保留中のメッセージがある場合にのみ反復するこのメソッド runOnce を記述できます。次に、この関数を定期的に呼び出します (これは、Win32のPeekMessage
、TranslateMessage
、およびシーケンスに非常に似ています)。DispatchMessage
- (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];
}