A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© zhuhoulin 中级黑马   /  2015-7-21 14:38  /  637 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

基本概念:
      @property是一个编译器指令,编译器指令就是用来告诉编译器要做什么
      @property告诉编译器:声明属性的访问器(getter/setter);


用法:
     @property    数据类型     方法名-------------例如@property int name;
     在Xcode4.4之前,@property用来帮我们实现get/set方法的声明



@property使用方法的注意事项
   1.@property只能书写在@interface........@end的对象的声明的方法中
   2.目的就是代替get/set方法,并且@property后面的方法名为属性变量中属性参数去掉下划线之后的部分
      @interface{
             int _a;
       }
       @property int a;//实现了set和get方法的声明相当于:
             -(void)setA:(int)a;
             -(int)a;
       @end


@property的增强使用(Xcode4.4之后)
   1.在4.4之后,可以只是用@property,而不使用@synthesize
      @property int age;//申明和实现了_age的get方法和set方法,并且如果对象属性中没有_age的话,
      系统也会自动生成对象的该属性值。
      .h文件中的@property int score;.m文件中如下实现:
      - (void)setScore:(int) score{
              _score = score;
      }
      -(int)score{
              return _score;
      }
      相当于在.m的文件中自动生成了变量,并且不能被继承
      .m文件:
      #import ”Person.h“
      int _score;//系统自动生成的,并且是私有的,不能被继承
    2.增强型@property下重写get和set方法
      由于set及get方法的是实现在被引用的时候,属性的值是没有经过校验的,所以需要重写set方法进行判断。
      并且实现的时候get和set方法只能实现一个。如果需要都写的话,需要在.m文件中使用@synthesize关键字。

@property参数
   
   总共三类,七个属性值。


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马