2

現在、最新バージョンの Xcode (v5.0.2) を使用しており、アプリの展開ターゲットは iOS 7.0 です。

私の問題は、どのクラスでも、ヘッダーにプロパティを設定できることです

元:@property (strong, nonatomic) NSString *firstName;

実装ファイルでは、問題なく合成できます

元:@synthesize firstName;

私の問題は_firstName、コードで使用できないことです。私は他のプロジェクトで自動ivarを問題なく使用しました(プロパティ名の前にアンダースコアが付きます)。

Xcode は不平を言い、アンダースコアのないプロパティの名前に変更するように指示します。このプロジェクトがアンダースコア付きの ivar を自動的に作成しない理由がわかりません。Objective-C の古いバージョンでは、これを自分で行う必要がありましたが、iOS 7 では必要ありません。

ありがとう!

4

4 に答える 4

5

完全にスキップするだけ@synthesizeで、下線付きの ivar が作成されます。@synthesize変数名 ( ) を指定せずに実行すると、@synthesize firstName = _firstName;アンダースコアなしの変数が作成されます。

于 2014-02-15T08:02:18.657 に答える
3

@synthesizeプロパティの ivar を作成する

この行で

@synthsize firstName = otherName;

firstNameあなたのプロパティ名はどこotherNameですか、あなたのivar名はどこですか

あなたのラインで

@synthesize firstName;===@synthesize firstName = firstName;

したがって、プロパティとivarは同じですfirstName

何も書かなかったら@synthesize

次に、コンパイラは

@synthesize firstName = _firstName;

firstNameプロパティ名、_firstNameは ivar 名です

于 2014-02-15T08:13:02.093 に答える
2

@synthesize をわざわざ使用しないでください (NSManagedObject サブクラスでない限り)。ただし、とにかく直接 ivar を使用する必要があることはほとんどありません。init メソッドの外では、常に self.firstName を使用する必要があります。

于 2014-02-15T08:08:37.170 に答える
2

をスキップする@synthesizeと、あなたの場合は問題ありません。この場合、新しい XCode バージョンを使用するため、これは実際には必要ありません。同様の質問(およびこれ)をご覧ください。

于 2014-02-15T08:04:49.917 に答える