2012-05-07 8 views
3

"Debug X86-64"モード(Xcode 3.6)でプログラムをビルドしていて、すべてが問題なく動作しています。しかし、私はちょうど「リリースX86-64」モードに切り替えてみましたし、コンパイル時に私のプロパティのそれぞれについて、次のエラー受信:合成されたプロパティとivarエラー

「x」は私の特性の一つ、最初のもの "会社である
Synthesized property 'x' must either be named the same as a compatible ivar or must 
explicitly name an ivar. 

を(私はこのタイプの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. 

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

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

ありがとうございます!

+3

OKでこれらのプロパティを追加するので、私はちょうど対象に、より多くの光を追加しているようだ別のスレッドを発見した: にhttp:// stackoverflowの.com/questions/7110245/error-building-32-bit-os-x-app 私は64ビットマシンを持っている間にOS 10.6.8を実行しています。それと関係がありますか?コンパイラが32ビットモードでコンパイルしようとしていますか? –

+1

私はこれで良くなっているかもしれませんが、私はそれを修正する方法を知っていると思っていますが、確認が必要です。私はこのスレッドを見つけました: http://stackoverflow.com/questions/10043624/property-declaration-wo-explicit-ivar-naming と私は間違いなく、現在のように見えるインターフェイスのセクションでインスタンス変数を宣言しませんでしたこの: @interface DBContactRecord:NSObjectの { } 最も参考になるよう、私はそれが次しようと、誰かが確認できた場合:) –

+2

Xcodeプロジェクトのビルド設定は、あなたが構築しているかどうかを教えてくれます32ビット(i386)または64(x86_64)。ちなみに、 "Xcode 3.6"のようなものはありません。 –

答えて

1

私はここで私自身の質問に答えていると思います。私はこれらのエラーを修正するために2つのことを行いました:

まず、インスタンス変数の宣言をインターフェイスファイルに追加しました。 第二に、私はこれに@synthesizeディレクティブを変更:

@synthesize company = company; 
@synthesize address1 = address1; 
etc... 

これは、すべてのエラーを修正しており、すべてが構築し、モードを解除し、両方で正しくコンパイルされます。

+3

変数の名前がプロパティの名前と同じ場合は、明示的に名前を指定する必要はありません。 'self.'を忘れて誤ってそれを参照することはできないように、代わりに' _company'という変数に名前をつけてください。 –

+0

良いチップ。ありがとう。 –

1

別の迅速な解決策があります:また、デリゲートの定義

@interface YourAppDelegate : NSObject <NSApplicationDelegate> { 
     NSTextField * company; 
     NSSlider * company; 
     ... 
    } 

    @property (copy) NSString *company, 
           *address1, 
           ... ; 
関連する問題