0

クラスにプロパティのカスタムセッターがある場合:

@interface OuterClass : NSObject
@property InnerClass *obj;
-(void)setObj:(InnerClass *)obj;

そしてInnerClassそれ自体にプロパティがあります:

@property NSString *text;

そして、私はそれを行います:それはオブジェクトのメソッドobj.text = @"Hello";をアクティブにしますか?OuterClasssetObj:

4

2 に答える 2

4

いいえ、setObj:プロパティを設定していないため、呼び出されません。プロパティを取得してから、結果のプロパティの1つを設定します。これはと同等[[something obj] setText:@"Hello"]です。

于 2013-03-12T22:03:26.987 に答える
3

申し訳ありませんが、元の質問のコンテキストを誤解しました。

呼び出しは、外部クラスをsomeObject.obj.text = @"Hello"呼び出しません。-setObj

@propertiesは、単純なセッターとゲッターを生成し、ivarのメンバーに加えられた変更を監視しません。

ただし、を呼び出し-objますsomeObject

このように考えてください。が与えられるsomeObject.obj.text =と、someObject.objセクションはのゲッターを使用してsomeObjectを返しobjます。次に、パーツはゲッターの結果にobj.text =送信されます。-setTextobj

編集前:

はい、@propertyはivarのセッターとゲッターを自動的に生成します。

設定は:メソッドobj.text = @"hello"を呼び出します。-setText

プロパティにアクセスするx = obj.textと、メソッドが呼び出されます-text

セッターまたはゲッターをオーバーライドする場合は、メソッドがプロパティと完全に一致することを確認してください。

于 2013-03-12T21:55:27.137 に答える