zoukankan      html  css  js  c++  java
  • property参数讲解

    一、property作用:

         1、自动生成私有属性

         2、自动生成这个属性的getter和setter方法的声明;

         3、自动生成这个属性的getter和setter方法的实现;

         注意:生成的setter方法的实现中,无论是什么类型,都是直接赋值

    二、property参数:

         1、property是可以带参数的  @property(参数一,参数二...);

         2、property四组参数;

              

    (1)与多线程c相关的两个参数。

              atomic、nonatomic

              atomic:默认值,如果写atomic,这个时候生成的setter方法的代码就会加上一把安全锁

                   特点:安全,效率较低

              nonatomic:这个时候生成的setter方法的代码就不会加安全锁,效率高

                   特点:不安全,效率高

         (2)与生成setter方法实现相关的参数。

              assign、retain

              assign:默认值,生成的setter方法的实现就是直接赋值;

              retain:生成的setter方法的实现 就是标准的MRC内存管理代码,

                     也就是,先判断新旧对象是否为同一个对象;

                     如果不是就release,如果是就使用 ratain

              当属性的类型是OC对象类型的时候,就使用retain;

              当属性的类型是非OC对象类型的时候,就使用assign;

              注意:

              retain参数,只是生成标准的setter方法为标准的MRC内存管理代码,不会自动的在dealloc中生成relase的代码

              所以,还要我们自己手动的在dealloc中release;

     

         (3)与生成只读、读写相关的参数

              readonyly.readwriter

              readwriter:默认值,同时生成getter setter方法

              readonly:只会生成getter不会生成seeter方法

     

     

      

         (4)与生成的getter setter方法名字相关的参数

              getter  setter

             默认情况下:@propterty生成的getter和setter方法是最标准的

             其实可以通过参数来制定@property生成的方法名

             getter=ageGet用来指定get方法的名字

             setter=ageSet:用来指定set方法的名字,后面必须加:冒号;

             如果使用getter setter修改了生成f方法的名字。

             如果在使用点语法的时候,编译器转化为修改后的名字的代码

             使用场景:如果使用Boolear的时候,未了增加代码的可读性,可以加上is开头

           

            总结:

            1.与多线程相关的参数用nonatomic    默认natomic

            2.于生成的setter方法相关的参数,      默认assign;

               属性的类型是OC对象 使用 retain

               属性的类型是非OC对象 使用assign

               retain参数,只是生成标准的setter方法为标准的MRC内存管理代码,不会自动的在dealloc中生成relase的代码

              所以,还要我们自己手动的在dealloc中release;

           3.只读,读写

              如果希望生成的封装是只读封装使用readonly

              如果希望读写封装,使用readwriter;  默认值

           4.无论什么情况都不要改setter

              如果使用Boolear的时候,未了增加代码的可读性,可以加上is开头

          

  • 相关阅读:
    iview表格render多元素封装
    iview表单语法
    vue实例,extend methods——实例属性 vue和jQuery.js一起使用
    vue.js基础__ extend 扩展选项
    vue.js基础__ mixins 选项
    vue.js基础__ watch 选项
    vue.js基础__ methods 选项
    vue.js基础__ computed 选项
    vue.js基础__ propsData 选项
    vue-cli, webpack + vue 目录结构解读
  • 原文地址:https://www.cnblogs.com/huihuizhang/p/14550226.html
Copyright © 2011-2022 走看看