-1

これは初心者の質問に聞こえるかもしれませんが、私は Mac OS を初めて使用します。

ここでは、10.5 バージョンと言う古い Base SDK でコンパイルされたアプリケーションを取得しましたが、Mac OS 10.5 バージョンでは問題なく実行されています。

Mac OS 10.6、10.7 の最近のバージョンでは、場合によっては正しく動作しません。

古いアプリは、OS の新しいバージョンでも互換性を維持する必要があります。基本的に、Apple が Mac OS の新しいバージョン内で古いアプリケーションとの互換性を維持する方法を知りたいですか?

4

1 に答える 1

0

Apple は通常、OS をアップグレードしたときに古いアプリが壊れないように、API の下位互換性を確保するために細心の注意を払っています。API を削除するのではなく、非推奨としてマークするだけです。

アプリケーションがサポートされていないことを行っていたか、Apple が API の実装を変更したために明らかになったバグがあった可能性が最も高いです。

頭のてっぺんからいくつかの考えられる原因

  • あなたのアプリは、変更された Apple プライベート API を使用しています。
  • あなたのアプリは、実装が変更された API に無効なパラメーターを渡します (たとえばint、API が NSInteger を予期する場所で を使用している可能性があります)。
  • あなたのアプリは、現在解決されているバグを無意識のうちに悪用していました (たとえば、ガベージ コレクションと NSOperationQueues は 10.5 に存在しましたが、非常にベータ版でした)。

-Wall警告フラグをオンにし、静的アナライザーを有効にして、最新の API に対して現在の Xcode を使用してアプリケーションを再コンパイルしてみてください。これにより、非推奨の API をどこで使用しているか、引数と戻り値の型に関する誤った仮定、およびその他の多くの問題がわかります。

于 2012-04-25T14:35:02.297 に答える