4

「デバッグ X86-64」モード (Xcode 3.6) でプログラムをビルドしてきましたが、すべて問題なく動作します。ただし、「Release X86-64」モードに切り替えようとしたところ、コンパイル時に各プロパティに対して次のエラーが発生しました。

Synthesized property 'x' must either be named the same as a compatible ivar or must
explicitly name an ivar.

ここで、'x' は私のプロパティの 1 つで、最初は 'company' です (このタイプのエラーを 51 件受け取りました)。私の .h インターフェイス ファイルでは、次のように項目をリストしました。

@property (copy) NSString   *company,
                        *address1,
                        *address2,
                        *city,
                        *usState,
                        *zip,
                        *phone,
                        *fax,
                        *email,
                        *web; // etc, etc.

私の .M 実装ファイルでは、次のように合成しました。

@synthesize company,
        address1,
        address2,
        city,
        usState,
        zip,
        phone,
        fax,
        email,
        web; // etc, etc.

私の理解では、インスタンス変数はこれらのプロパティに対して自動的に作成されます...実際、「リリース」モードでコンパイルしようとするまで、それらは完全に機能しているようです。

これを説明しなければならない本には何も見つかりませんでした。私は何か間違ったことをしていますか、より具体的には、「リリース」コンパイルのためにこれを修正するには何を含める必要がありますか?

ありがとう!

4

3 に答える 3

0

リリースしたいだけで、「古い」ランタイム制限に煩わされたくない場合は、ビルド設定で 32 ビット アーキテクチャを無効にします。(実際、「新しい」ランタイムが最終的に得たものは、1991 年以来 IBM SOM に実装されているため、Objective-C ランタイムに関しては「古い」と「新しい」は非常に相対的ですが、それは別の話です。)

于 2018-07-02T19:01:42.493 に答える