@propertyは.hファイル内のgetterとsetterを宣言し、@synthesizeは.mファイル内のgetterとsetterを実装しています。さらに、@synthesizeを使用する代わりに、getterとsetterの独自の実装を記述することも可能です。Objective-C:実装なしの@property宣言(@synthesize)
私たちは常にsetter/getterを実装する必要がある場合、なぜそれを追加宣言する必要がありますか? @propertyは私にとって意味のある冗長性とバグの原因であるようです。
@propertyを宣言しても@synthesizeまたは手動で実装するのを忘れた場合はどうなりますか? @synthesizeを使用して@property宣言を忘れると、何が起こりますか?
彼らはこれを追加していいですね。応答のためにありがとう –
プロパティと合成を一緒に使用する必要がある場合がまだあります。コンパイラは、プロパティ名とアンダースコア接頭辞を使用してivarを作成します。 ivar _propertynameがプライベートインスタンス変数と衝突する場合、それを新しいivarに合成する必要があります。たとえば、UIToolbarをサブクラス化して、それをdelegateするプロパティを宣言すると、UIToolbarにプライベートインスタンス変数id _delegateが含まれているため、エラーが発生します。これを解決するには、 '@synthesize delegate = _mydelegate;'を使用します。 – lolol