0

いくつかのドキュメントを検索し、Xcode と AppCode を試しました。しかし、私はまだいくつかのことについて確信が持てません。だから誰かが私を明確にすることができます:

  1. foo という名前のプロパティがある場合、または という名前のプライベート インスタンス変数を使用する必要があります_foofoo?

  2. プライベート インスタンス変数を作成しない場合は、シンテタイズします。次に、どの変数にアクセスしようとする必要がありますself->fooself->_foo?

私は両方のアプローチを見て、両方が機能したので、コーディング規則や規則が見つからなかったので興味があります。

注:には興味がありません@synthetize foo=_foo

4

2 に答える 2

2

1. foo という名前のプロパティがある場合、_foo または foo という名前のプライベート インスタンス変数を使用する必要がありますか?

インスタンス変数を自分で作成する必要はありません。アンダースコアで始まるインスタンス変数が自動的に作成されます。変数に直接アクセスしてはならないので (以下を参照)、基になる変数の名前を気にする必要はありません。

2.プライベート インスタンス変数を作成しない場合は、シンテタイズします。次に、 self->foo または self->_foo にアクセスするには、どの変数を試す必要がありますか?

ニエター。プロパティの考え方は、変数に直接アクセスする代わりにアクセサーを使用することです。self.fooプロパティの取得と設定にはを使用する必要があります (ドット構文が気に入らない場合は and を使用します) [self foo][self setFoo:newFoo];また、プロパティを明示的に合成する必要がないことにも注意してください。

于 2013-07-22T09:15:06.107 に答える
1

Xcode がプロパティを自動合成するとき、先頭に_. インスタンス変数を手動で指定する必要はありません。自動的に存在します。

コンパイルして動作するように見えますがself->_foo、この構文を使用して ivar にアクセスする人を見たことがありません。プロパティ構文と混同する可能性があるself.fooため、この表記法は完全に避けます。必要に応じて、直接入力してインスタンス変数にアクセスできます_foo。ただし、プロパティアクセサーメソッドをオーバーライドまたは拡張しない限り、それも避けます。

プロパティのドット表記 [1] のみを使用してプロパティにアクセスします。これにより、コードが読みやすくなり、プロパティを宣言するときに指定したストロング/ウィーク/コピー セマンティクスが処理されます。

  1. -(PropertyType)propertyプロパティのドット表記の使用は、自動合成されたおよび-(void)setProperty:(PropertyType)propertyメソッドを介してプロパティにアクセスするための構文糖衣です。
于 2013-07-22T09:35:33.483 に答える