2011-08-18 12 views
8

私は最初のMac OS Xアプリケーションを開発中です。私のプロジェクトはXCodeのデフォルトで設定されており、ビルド設定には触れていません。 Mac 64ビット用にビルドすると、アプリは正常に動作します。 Mac用の32ビットを構築する場合しかし、私は言う、一見、任意のエラーを取得:32ビットOS Xアプリケーションをビルドする際のエラー?

Semantic issue: Synthesized property 'myProperty' must either be named the same as a compatible ivar or must explicitly name an ivar.

私は物事のどのような種類のを確認することができますか?

+3

プロパティとインスタンス変数の宣言を含むヘッダーファイルを見てください。エラーメッセージは非常に正確です。 – Mark

+0

私は今や馬鹿げています。私は別の日であっても、これらのファイルを何度も見てきました。そして、あなたはそれらをもう一度見てみたので、私はタイプミスを見つけました!うわー、ありがとう。 – anna

答えて

20

あなたがエラーを見つけたように聞こえますが、他の誰かが後でそれを見つけた場合に備えて、あなたの質問に答えることができると思います。

Appleは、バイナリ互換性を損なう可能性があったため、これまでできなかった64ビットのObjective-Cランタイムに多くの変更を加えました。異なるものの1つは、32ビットランタイムで合成されたプロパティがインスタンス変数によってサポートされなければならないということです。合成された64ビットのプロパティでは、sillはそれを必要としますが、自動的に作成されます。デフォルトでは、インスタンス変数の名前はプロパティの名前と同じにする必要があります。

したがって、32ビットをサポートする必要がある場合は、すべてのプロパティのインスタンス変数を作成する必要があります。 64ビットしかサポートしていないのであれば、これを実行して、同時に32ビットと64ビットの両方でコードを構築できますが、これを行う必要はありません。

+7

合成されたプロパティは、現代のランタイムのインスタンス変数によってバックアップされなければなりません。違いは、コンパイラがあなたのために作成するということですが、古い32ビット版のコンパイルでは、ivarsを明示的に宣言する必要があります。 –

+0

ありがとう!その種の情報を知っているのは良いことです。 – anna

+0

答えをありがとう、これは私を救った:) – banderson623

0

NS_BUILD_32_LIKE_64 32ビットビルドターゲットのXcodeでプリプロセッサマクロを設定できます。これにより、32ビット版と64ビット版のコードを別々に管理する手間が省けます。

関連する問題