黑马程序员技术交流社区

标题: OC学习笔记之@property [打印本页]

作者: zhuhoulin    时间: 2015-7-21 14:38
标题: OC学习笔记之@property
基本概念:
      @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参数
   
   总共三类,七个属性值。







欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2