1

そのため、2006 Macbook で構築したいプロジェクトで、REST サービス用のAFNetworkingライブラリを使用しようとしています。Macbook は、第 1 世代の 2006 32 ビット Core Duo と Snow Leopard です。

私はObjective-C開発にかなり慣れていないので、ここでAFNetworkingを始めるためのチュートリアルに従っています: https://github.com/AFNetworking/AFNetworking/wiki/Getting-Started-with-AFNetworking

xcode 4.2 を使用すると、私の問題は、新しいプロジェクトを作成してビルドしようとするとすぐに次のようになることです。

新しいプロジェクトのビルド設定を確認しましたが、何らかの理由で、私のマシンが 32 ビットの場合、xcode はデフォルトで 64 ビットの Intel アーキテクチャを前提としています?! 変。32ビットに交換しましたが、ここでエラーが発生しました。

したがって、次の方法で AppDelegate に独自のウィンドウ インスタンス変数を明示的に作成することで、このセマンティックな問題を修正できます。

NSWindow * _window;

32 ビット objc の構築についてこれについて読みました 。私が目にする多くのパブリック github プロジェクト コードで非常に一般的 (ivar 宣言の欠如) と思われるインスタンス変数なしでプロパティを合成します。誰もが今私たちに 64 ビットを強制していますか、それともインスタンス変数を作成するのが面倒なのでしょうか? :(

したがって、私の問題は、AFNetworking ライブラリが 64 ビット Intel 用に構築されたように見えることです。これは、プロジェクトに AFNetworking を追加すると、いたるところで同じセマンティック問題の ivar エラーが発生するためです。ライブラリ コードを見ると、プロパティのコード全体で宣言されている明示的なインスタンス変数はありません。

私はここで完全にめちゃくちゃですか?すべてのプロパティのインスタンス変数を手動で作成することでこの状況を修正できますが、これは長期的なプロジェクトのメンテナンスにとっては非常に苦痛です。

ここで私が望んでいるのは、これをすべてワンショットで修正するために追加できるある種のコンパイラフラグがあったことだと思いますか?? しかし、私は運が悪いのではないかと推測しており、この MacBook をゴミ箱に捨てて、新しい最新の 1 つを手に入れる時が来ました。

4

1 に答える 1

2

自動的に合成されたインスタンス変数には、64ビットマシンでのみ使用可能な「最新の」Objective-Cランタイムが必要です。したがって、残念ながら、これを修正するためにコンパイラフラグを設定することはできません。解決策は、実際に、使用しようとしているクラスのプロパティのインスタンス変数宣言を追加することです。

それがあなたのコンピュータを捨てる価値があるほど難しいかどうかはわかりません...とはいえ、現代のランタイムによって提供される便利さは開発者にとってかなり魅力的であり、あなたはそれ以降多くの新しいコードを見ることはないでしょう32ビットMacのサポートを維持します。Appleは32ビットのIntelMacを短期間しか販売しておらず、Lionは64ビットのMacを必要としているため、32ビットのMacを使用する人の割合はすでにかなり少なく、急速に小さくなっています。

于 2012-04-10T15:14:52.983 に答える