• property指令


    property

     

    @property基本概念知识:

    1. 【理解】什么是@property

    2. 【掌握】@property基本使用

    1.什么是@property

     @property是编译器的指令

         什么是编译器的指令 ?

         编译器指令就是用来告诉编译器要做什么!

    @property会让编译器做什么呢?

         @property 用在声明文件中告诉编译器声明成员变量的的访问器(getter/setter)方法

         这样的好处是:免去我们手工书写getter和setter方法繁琐的代码

    2.@property基本使用

    - 在@inteface中,用来自动生成setter和getter的声明

    用@property int age;就可以代替下面的两行

    - (int)age;   // getter

    - (void)setAge:(int)age;  // setter

    @propert编写步骤

    1.@inteface@end之间写上@property

    2.@property后面写上需要生成getter/setter方法声明的属性名称, 注意因为getter/setter方法名称中得属性不需要_, 所以@property后的属性也不需要_.并且@property和属性名称之间要用空格隔开

    3.@property和属性名字之间告诉需要生成的属性的数据类型, 注意两边都需要加上空格隔开

     

     

     @property增强知识:

     

    1. 【掌握】@property增强

     

    2. 【掌握】@property增强注意点

     

     

    1.@property增强

    - 自从Xcode 4.x后,@property可以同时生成setter和getter的声明和实现

    @interface Person : NSObject

    {

        int _age;

    }

    @property int age;

    @end

    2.@property增强注意点

     默认情况下,setter和getter方法中的实现,会去访问下划线 _ 开头的成员变量

     如果没有会自动生成一个_开头的成员变量,自动生成的成员变量是私有变量, 声明在.m中,在其它文件中无法查看,但当可以在本类中查看

    - @property只会生成最简单的getter/setter方法,而不会进行数据判断

    如果需要对数据进行判断需要我们之间重写getter/setter方法

         若手动实现了setter方法,编译器就只会自动生成getter方法

         若手动实现了getter方法,编译器就只会自动生成setter方法

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

    @property修饰符知识:

    1. 【掌握】@property修饰符

    - 修饰是否生成getter方法的

         readonly    只生成setter方法,不生成getter方法

         readwrite  既生成getter 又生成setter方法(默认)

    @property (readonly) int age

    指定所生成的方法的方法名称

         getter=你定制的getter方法名称

         setter=你定义的setter方法名称(注意setter方法必须要有 :)

    @property (getter=isMarried)  BOOL  married;

    说明,通常BOOL类型的属性的getter方法要以is开头

     1.相同类型的property修饰符不能同时使用

     2.不同类型的property修饰符可以多个结合在一起使用, 多个之间用,号隔开

     3.iOS开发中只要写上property, 那么就立刻写上nonatomic

     

     readonly: 只会生成getter方法

     readwrite: 既会生成getter也会生成setter, 默认什么都不写就是readwrite

     

     getter: 可以给生成的getter方法起一个名称

     setter: 可以给生成的setter方法起一个名称

     

     retain: 就会自动帮我们生成getter/setter方法内存管理的代码

     assign: 不会帮我们生成set方法内存管理的代码, 仅仅只会生成普通的getter/setter方法, 默认什么都不写就是assign

     

     多线程

     atomic :性能低(默认)

     nonatomic :性能高

     在iOS开发中99.99%都是写nonatomic

  • 相关阅读:
    关于Class.forName(String str)的理解
    [精][转]Java equals()与hashCode()
    下载开源矿工
    生成自己定义的.pfx数字证书
    复杂处理如何不用游标以加快速度
    使用OpenRowSet操作Excel
    添加UtraEdit/Cmd的右键菜单
    VS2008项目使用Mage手动创建Clickonce包
    ClickOnce, Mage and Visual Studio 2008 (includes fix)
    php对特殊字符的处理
  • 原文地址:https://www.cnblogs.com/dreamWanweidong/p/4997670.html
Copyright © 2020-2023  润新知