6

Mac OS X 10.7 向けのアプリを構築し、10.6 との互換性を維持する場合、後方互換性を実装する最良の方法は何ですか?

クライアントが 10.7 の場合は NSPopover を使用し、クライアントが 10.6 の場合は NSMenu を使用するアプリケーションがあります。問題は、10.6 マシンでアプリを起動すると、「_ OBJC $_NSPopover が AppKit に見つかりませんでした」というような「symbol not found」例外でアプリがクラッシュすることです。新しい機能のために、アプリケーション全体で id を使用する必要がありますか?

4

1 に答える 1

2

関数 NSClassFromString() を使用して、NSPopover のクラス オブジェクトを取得できます。これは、インスタンスの作成に使用できる Class オブジェクトを返します。

id  thePopover = [[NSClassFromString(@"NSPopover") alloc] init];

もう 1 つの可能性は、10.6 用と 10.7 用の 2 つの別個の nib ファイルを用意することです。nib は完全なインターフェースである必要はなく、NSPopover を含む部分だけで、実行時に適切な nib ファイルをロードします。

于 2011-08-04T12:28:17.320 に答える