塞特方法问题

时间:2014-04-09 20:20:44

标签: ios setter

在xcode中,我注意到在使用属性时会自动创建一个方法。

例如,如果我在@property(nonatomic)BOOL selected;中输入@interface,则会在后台创建一个方法,该方法可以在@implementation中使用,如下所示:

-(void)setSelected:(BOOL)selected {}

现在我真的不知道这叫什么,但我认为它叫做setter方法,现在我想我可以在设置selected boolean时使用它来做一些事情,但是当我调用它时它是空的;没有任何反应,甚至没有为selected分配一个值,当我输入时:

self.selected = selected;

它会遇到无限循环,应用程序崩溃,是否有一种简单的方法可以解决无限循环或者我不应该使用这些方法?

固定

我合成了self.selected,现在它没有循环。

@synthesize selected;

-(void)setSelected:(BOOL)selected_ {
    selected = selected_;
}

1 个答案:

答案 0 :(得分:3)

您需要访问setter

selected属性的支持iVar

-(void)setSelected:(BOOL)selected { if (_selected != selected) { _selected = selected; } }

分配self.selected = selected会调用setter,在设置中调用它会导致无限循环!