@Property

作者: MarkTang | 来源:发表于2016-01-09 00:45 被阅读268次

    @property是一个编译器指令

    编译器只要看到@property,就知道我们生产某一个属性的getter/setter方法的声明
    //问题1:@porperty是什么指令?作用是什么?
    答:
    编译器指令
    自动生成getter方法

    1.@porperty是一个编译器指令

    在Xocde4.4之前, 可以使用@porperty来代替getter/setter方法的声明, 也就是说我们只需要写上@porperty就不用写getter/setter方法的声明

    2.编译器只要看到@property,就知道我们要生成某一个属性的getter/setter方法的声明
    @property 数据类型 属性名称
    @property 数据类型 变量名;

    @property增强

    //问题1:property增强做了哪些事?
    自动生成getter和setter方法,并且生成该成员变量,默认生成的变量是私有变量
    
    答: 从Xcode4.4以后,对@property进行了增强,使用@property做了3件事
    
    @property会根据属性名,自动生成setter/getter方法的声明
    @property会根据属性名,自动生成setter/getter方法的实现
    @property会根据属性名,自动生成_开头的成员变量,该成员变量是私有变量
    
    //问题2:@property的使用场景?
    答:
    只能生成简单的setter/getter方法
    
    答: 如果不想对传入的数据进行过滤, 仅仅是提供方法给外界操作成员变量, 那么就可以使用@property ,并且系统会自动给我们生成一个_开头的成员变量
    
    
    //问题3:使用property增强后,什么时候要重写getter/setter方法?
    答:
    需要堆属性的值进行过滤
    
    答:使用property增强,只会生成最简单的getter/setter方法的声明和实现, 并不会对传入的数据进行过滤
    
    如果想对传入的数据进行过滤, 那么我们就必须重写getter/setter方法
    
    
    //问题4:重写getter/setter方法有哪些注意点?
    答:
    如果重写了setter方法, 那么property就只会生成getter方法,并且生成_开头的成员变量
    如果重写了getter方法, 那么property就只会生成setter方法,并且生成_开头的成员变量
    如果同时重写了getter/setter方法, 那么property就不会自动帮我们生成私有的_开头成员变量
    //问题2:@property 有哪些修饰符?各有什么作用?
    答:
    
    readonly 只读
    readWrite z 读写 默认情况下自带
    
    1.readwrite: 代表既生成getter方法 , 也生成setter方法
    
    默认情况下 @property就是readwrite的
    @property(readwrite) int age;
    2.readonly: 代表只生成getter方法不生成setter方法
    
    @property(readonly) NSString * name;
    3.给getter方法起了一个别名为abc
    
    - (void)setHeight:(double)height;
    - (double)height;
    
    给getter方法起了一个别名为abc
    - (void)setHeight:(double)height;
    - (double)abc;
    
    @property(getter=abc) double height;
    4.给setter方法起了一个别名为tiZhong
    
    - (void)setWeight:(double)weight;
    - (void)tiZhong:(double)weight;
    
    @property(setter=tiZhong:) double weight;
    // 是否已婚
    // 程序员之间有一个约定, 一般情况下获取BOOL类型的属性的值, 我们都会将获取的方法名称改为isXXX
    @property(getter=isMarried) BOOL married;
    

    相关文章

      网友评论

          本文标题:@Property

          本文链接:https://www.haomeiwen.com/subject/epxqkttx.html