4

自動参照カウント (これは 64 ビット バイナリでのみサポートされています) を優先して、32 ビット サポートを削除することを検討しています。

Mac App Store では、次の 2 つのシナリオを回避したいと考えています。

古い 32 ビット Macのユーザーの場合:

  1. 32 ビットをサポートする以前のバージョンを購入したユーザー: Mac App Store でアプリの更新メッセージが表示されますか? その場合、(現在は 64 ビットのみ) 更新は機能しません。

  2. 以前にアプリを購入したことがない人:自分のシステムでは実行されませんが、アプリを購入することはできますか?

ARC 64 ビットのみ: http://developer.apple.com/library/mac/#releasenotes/ObjectiveC/RN-TransitioningToARC/_index.html#//apple_ref/doc/uid/TP40011226

編集: 誰かが64 ビットのみのアプリを 32 ビットの MacBookにダウンロードでき、 「購入を完了できませんでした」というエラー メッセージが表示されたことがありました。今回は無料アプリでした。有料アプリの場合、いつこのメッセージが表示されるのだろうか (支払いの前または後)。

http://www.linethirteen.com/blog/2011/01/mac-app-store-32-bit-vs-64-bit/

4

2 に答える 2

2

また、ARC には 64 ビット プロセッサが必要であることもわかりました。しかし、64 ビット バージョンでは ARC を使用し、32 ビット バージョンではガベージ コレクターを使用するファット バイナリをビルドすることができました。これを行うには、次のことを行う必要がありました。

  • GC を使用する 32 ビットのみのターゲットをセットアップする
  • ARC を使用する 64 ビットのみのターゲットをセットアップする
  • 32 ビット ターゲットを依存関係として 64 ビット ターゲットに追加します。
  • lipo2 つのターゲットのバイナリからファット バイナリをアセンブルするために使用するシェル スクリプトを使用して、カスタム ビルド フェーズを追加します。

どちらのターゲットも同じソースを使用していますが、いくつかの#ifdef __OBJC_GC__ステートメントが必要でした。下位互換性のために、合成されたivarをあきらめなければなりませんでした:(

于 2012-01-13T20:48:10.053 に答える
1

App Store が何をするかはわかりませんが (とにかく変更される可能性があります)、アプリが 32 ビットのユーザーに配信される場合は、次の方法で問題を回避できます。

  1. アプリを 64 ビットのみにします。
  2. 32 ビットのみで、アラート メッセージを表示するだけの 2 つ目のアプリを作成します。
  3. 2 番目のアプリのすべてのリソースを最初のアプリにビルドします (つまり、それらを両方のターゲットに追加します)。
  4. 2 番目のターゲットを最初のターゲットの依存関係にし、lipo最初のターゲットのシェル スクリプト フェーズで使用して、32 ビット バイナリを 64 ビット バイナリに同化します。

これで、64 ビット マシン上の実際のアプリケーションであるユニバーサル バイナリ (または「ファット バイナリ」) と、32 ビット マシン上の「Mac をアップグレードしてください」アプリケーションが作成されます。

于 2011-10-23T15:53:33.130 に答える