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属性更改时,是否会通知具有成员的对象。在不同的上下文中,关于相同功能的不同问题。