2

私は、Mac OS X 10.6 のみのテクノロジーを利用するアプリケーションを構築していますが、10.5 Leopard との下位互換性を犠牲にすることはありません。

これを行う方法は、10.6 SDK をベース SDK として設定し、すべてのフレームワークを弱リンクし、次の説明に従って展開ターゲットを 10.5 に設定することです。

http://developer.apple.com/mac/library/DOCUMENTATION/MacOSX/Conceptual/BPFrameworks/Concepts/WeakLinking.html

これは正常に機能します。Snow Leopard 専用の呼び出しを行う前に、セレクターまたはクラスが実際に存在することを確認する必要があります。または、電話をかける前に OS のバージョンを確認することもできます。

問題は、これが信じられないほど壊れやすいことです。10.6 で 1 回の呼び出しを行うと、Leopard との互換性が失われます。そのため、通常のコード コード補完機能を使用しても危険な場合があります。

私の質問: リリース ビルドを行う前に、どの呼び出しが 10.5 で定義されていないかを確認する方法はありますか? ある種の静的分析、または単なるトリック (ターゲットが他の SDK を設定しますか?) でさえ可能です。

何かをリリースする前に、Leopard マシンでテストする必要があるのは明らかですが、それでも、すべてのリリースの前にプログラムのすべてのパスをたどることはできません。

アドバイスをいただければ幸いです。

よろしくお願いします、

フランク

4

1 に答える 1

1

ターゲット SDK を 10.5 に変更できます。その後、コンパイラはwarning: definition for '-snowLeopardOnlyMethod:' not foundメッセージを出力します。

于 2010-03-30T12:44:29.617 に答える