@proterty 与@synthesize

         proterty:属性;  synthesize:综合,合成;
        @property 和 @synthesize在Xcode4.4以前一直都是配合着使用,在4.4以后,@property得到了增强,一行代码编译器就会自动帮我们生成setter和 getter方法的声明和实现, 同时在.m文件中声明一个和属性名一样并且在最前面带有下划线的成员变量 (private);
        @synthesize name = _XXX.     就是配合在 生成setter和 getter方法的声明和实现的时候生成一个带下划线的成员变量(private);

例如:

       在Person.h中:

Person.h
  @interface Person : NSObject {
      NSInteger _age;   // 声明这个成员变量的作用  和 @synthesize age=_age;
  }
  @property NSInteger age;  @end;
    在Person.m 中:
  • 
      @implementation Person
      @synthesize age = _age;
      - (void)setAge:(NSInteger)age {
           _age = age;
      }
      - (NSInteger)age {
           return _age;
      }
    
  • 分析下面代码
@synthesize age = _age;  //作用就是生成一个_age成员变量;
  • 实际上它的作用是告诉编译器age属性是用_age实例变量生成setter and getter方法的实现;
  • 也就是说age属性的setter方法是setAge,它操作的是_age这个变量。
  • 通过这个看似像是赋值的一个操作,我们可以在@synthesize中定义与变量名不同的setter和getter的命名,以此来保护变量不会被不恰当的访问。
  • 弄明白上述的原理后,我们也就知道了_age和age的区别。
    • _age是成员变量
    • age是属性
    • 我们最后操纵的都是成员变量
综上所述:现在的版本@synthesize已被@protery的功能替代,在以后的编写中只要知道其作用就可以了;

注意:

   如果使用 @property(assign, nonatomic)NSInteger age;

   并实现了Setter和Getter的方法,这时就没有_age这个成员变量;









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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值