Objective c 在属性上设置属性是否调用第一个属性';谁是二传手?

Objective c 在属性上设置属性是否调用第一个属性';谁是二传手?,objective-c,accessor,declared-property,Objective C,Accessor,Declared Property,如果类具有属性的自定义设置器: @interface OuterClass : NSObject @property InnerClass *obj; -(void)setObj:(InnerClass *)obj; 而InnerClass本身有一个属性: @property NSString *text; 然后我做:obj.text=@“你好”是否会激活OuterClass对象的setObj:方法?对不起,我误解了您最初问题的上下文 调用someObject.obj.text=@“Hell

如果类具有属性的自定义设置器:

@interface OuterClass : NSObject
@property InnerClass *obj;
-(void)setObj:(InnerClass *)obj;
InnerClass
本身有一个属性:

@property NSString *text;

然后我做:
obj.text=@“你好”
是否会激活
OuterClass
对象的
setObj:
方法?

对不起,我误解了您最初问题的上下文

调用
someObject.obj.text=@“Hello”
不会调用外部类上的
-setObj

@属性生成简单的setter和getter,不观察对ivar成员所做的更改

但是,它将在
someObject
上调用
-obj

这样想吧。给定
someObject.obj.text=
someObject.obj
部分使用
someObject
的getter返回
obj
。然后,
obj.text=
部分将
-setText
发送到
obj
getter的结果

编辑前:

是的,@属性会自动为ivar生成setter和getter

设置
obj.text=@“hello”
调用
-setText
:方法

访问属性
x=obj.text
调用
-text
方法


如果重写setter或getter,请确保该方法与属性完全匹配。

否,
setObj:
将不会被调用,因为您没有设置属性。您正在获取属性,然后设置结果的一个属性。这相当于
[[something obj]setText:@“Hello”]

是的,我正在使用生成的setter(定制)。我想知道设置内部对象属性是否会激活外部对象的setObj:方法,因为它的属性已被修改。“我知道我没有很好地解释我自己。”安德鲁马森说duplicate@JustinMeiners保卫你的阵地。我看到你的答案和链接副本中的另一个答案在内容上非常相似。@CodaFi链接中的问题与我的第一个答案(编辑前的下面一节)相同,我的第一个答案基本上是询问属性是否为setter和getter。此问题询问当members属性更改时,是否会通知具有成员的对象。在不同的上下文中,关于相同功能的不同问题。