黑马程序员 oc随记 @proprety与@synthesize

------- android培训java培训ios培训、期待与您交流! ----------

@proprety@synthesizexcode特有的一项简化代码的函数。

在Xcode4.4版本之前,程序员在使用@proprety时可不使用get以及set便对成员变量实行声明

@proprety int age=

-(void)setAge:(int)age;加上

-(int)age;

@synthesize则简化了实现过程

需要注意的是 @synthesize简化实现实际上是

@synthesize=

-(void)setAge:(int)age{

  self->age=age;

}

加上

-(int)age{

  return age;

}

我们能看到的是,@synthesize实际上是对age进行set和get的实现,并没有对_age实现,也就是说成员变量并没有在代码中得到赋值。

所以,若想将成员变量赋值,我们可以这么写:

@synthesizeage=_age;

如此,实际代码便变成了

-(void)setAge:(int)age{

  _age=age;

}

加上

-(int)age{

  return _age;

}

 

当然,这些都是在Xcode4.4之前苹果公司为我们实施的便利,在版本更新后苹果公司提供了更多的便利,即在使用@proprety时同时实施声明与实现,不再需要@ synthesize

并且,在使用@proprety时并不是对age进行set和get的声明和实现,而是直接对_age实施声明和实现,十分便利,但需要注意的是,使用@proprety可以不在@interface中添加相应的成员变量,即:

@interface person:NSOject

{

   int _age;

  nsstring *_name;  //这两个成员变量可以省去不写

}

@propretyint age;

@propretynsstring *name;

@end

 

在得到这方面便利的同时,同样要承担相对的风险,即成员变量在省去不写时它在声明与实现时将成为不可被子类继承与使用的私有变量。

所以,若是想要享受便利,又希望成员变量能被子类继承与使用,那么请在书写时不要将成员变量省去,保留如int _agensstring *_name的成员变量。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值