黑马程序员 —OC(@property和@synthesize)

                                         ------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 


1.  @property


  @property用在@interface中,写法如下:        

#import<Foundation/Foundation.h>

@interface  Person :NSObject
{
           int  _age ;    <span style="color:#003300;">//   定义成员变量  年龄</span>
           
           int  _height ;  <span style="color:#003300;">//   定义成员变量  身高
</span>      
           NSString  *_name ;  <span style="color:#003300;">//  定义成员变量   姓名
}</span>
@property  int  age ;  <span style="color:#003300;">//  @property作用:可自动生成这个成员变量的setter和getter的声明
</span>
@property  int  height ;<span style="color:#003300;">  //  相当于height的set和get方法的声明
</span>
@property NSString  *name ;
@end
 这里的@property 想当于给成员变量进行set和get 方法的声明。



  @property   int  age 等同于  如下

- (void)setAge:(int)age;   <span style="color:#003300;"> //   对成员变量 _age的set方法的声明</span>
-  (int)age;     <span style="color:#003300;">//     对成员变量 _sge方法的get方法的声明</span>



 当成员变量的类型一致时。可连续进行声明:

@propery  nt  age , height;  <span style="color:#003300;">//   一般不建议这么写,了解就可以了</span>
 
        
2. @synthesize


  用在@mplementation 中

@implementation  Person 

@synthesize  age = _age ;   <span style="color:#003300;">//   对成员变量  _age 进行方法实现</span>
@end
      
 @synthesize 自动生成成员变量的set和get的实现,并且会访问当前成员的这个变量
等同于下面的这个实现


 - (void)setAge:(int)age    <span style="color:#003300;">//  set方法对成员变量的实现</span>
{
          _age = age ;
}
-  (int)age         <span style="color:#003300;">//   get 方法对成员变量的实现</span>
{
        return  _age ;
}


 @synthesizer 细节:


                     1>  @synthesize   age = _age;


                           set 和get实现中会访问成员变量_age。


                            如果成员变量 _age不存在时,就会自动生成一个@private的成员变量 _age。


                      2> @synthesize  age


                             set 和get 实现中会访问成员变量age。


                             如果成员变量age不存在,就会自动生成一个private的成员变量age。


                     3> 手动的实现


                             当手动实现了set 方法,编译器就只会自动生成get方法。


                             当手动实现了get 方法, 编译器就只会自动生成set方法。


                             若同时实现了set 和get 方法,编译器就不会自动生成不存在的成员变量。

                              

                          

      

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值