@property编译指令提供了不错的语法糖,使用默认的实现便可有不错的效果。但是,仅仅使用默认的实现,并不一定能满足需求。给用 property定义的变量赋值时,如果需要关联操作怎么办?例如,一个视图,有个property定义的Visible变量,将Visible赋值为 真,则需要将这个视图显示出来,为假就要隐藏。
示意代码(仅示意):
这时,可以使用setter,getter来指定具体的实现。
@property (getter = 获取方法 ,setter = 设置方法) 类型 名称
示意代码(仅示意):
@interface MyVeiw : UIView
@property (getter = getVisible ,setter = setVisible:) BOOL Visible;
-(BOOL)getVisible;
-(void)setVisible:(BOOL)v;
@end
@implementation MyVeiw
@synthesize Visible=vb;
-(BOOL)getVisible
{
return vb;
}
-(void)setVisible:(BOOL)v
{
vb = v;
if(vb)
{
NSLog(@"显示视图");
}
else
{
NSLog(@"隐藏视图");
}
}
@end
int main(int argc, char * argv[])
{
MyVeiw * view = [[MyVeiw alloc] init];
view.Visible = YES;
view.Visible = NO;
}