zoukankan      html  css  js  c++  java
  • OC8-属性 KVC是键值编码

    1.属性,是oc提供的一种快速的模式化的创建实例变量的方式。

        (1)属性是通过@property标记的,

        (2)属性会在背后,默默的帮我们做set和get方法

    2.属性做的工作

         (1)创建一个实例变量,名字是下划线加属性名,

        (2)帮我们自动get和setter 的方式,创建一组方法,

    3.点语法,点语法是专门为了setter 和getter 方法配备的一种语法糖。会自动根据语法和语境调用是哪一种方法,

         (1) (.)其实就是转换成了getter 和setter 方法,p.hobby.length.字符串的长度。

        (2)没有getter 和setter 方法的实例变量是没有办法使用点语法的。

    4.属性的属性,

          attibute,在我们通过属性来创建实例变量的时候,可以通过属性的属性设置来控制实例变量的生成和方法的创建,

       3种(1)原子性控制(2)读写控制(3)内存管理控制。第 1和3种参数必须指定,否则会产生内存泄漏,

       (1)原子性,原子是最小单位,atomic是oc中的一种线程保护技术,是防止在未完成的时候,被另一个线程使用,造成数据错误。 但是耗内存,推进使用nonatomic

       (2)读写  分只读,可读可写。  默认是可写可读的权限。

        (3)修改setter getter 方法名:

             1)setter getter 是控制生成的get和set 方法的方法名属性

                        2)对应的getter 方法还是会自动生成,只是名字换成了我们通过参数传递进去的那个名字。

                        3)在修改setter 的时候,新的名字后面要加(:),否则会报错,getter 后面不需要加(:),

       (4)内存控制属性 

              1)内存管理控制属性。assign,retain/strong,copy,没有垃圾回收,通过引用计数,回收内存,

              2)现在xcode默认的事arc,自动引用计数||另外一种是mrc(手动内存管理,)  arc下使用的是strong,mrc下使用的是retain.

              3)怎么将arc改成mrc?  去工程的配置文件。buildsetting 搜索 (arc]) (gar),在选项中讲yes 修改为no.

     

       (5)使用原则 

            1)若属性的类型是基本数据类型,使用assign,

            2)若属性的类型存放在堆区的,绝大部分用retain,个别的有特殊需求的需要填写copy.

    5.assign 的具体实现:

            (1)@synthesize age=_age;创建一个实例变量,变量的名字是( _age),和属性的age产生关联,

            (2) set 和get方法的实现

    6.KVC是键值编码 key-value-code

        (1)作用:是oc提供的一种赋值方式,可以无视访问权限,kvc通过键值对进行对象实例变量的赋值。

           setValue forKey会自动调用父类里面的这个方法,将传过来的value的值赋给key对应的实例变量,如果在赋值的过程中发现没有实例变量,会再去调用一遍setvaluue for undifinnedKey;

        (2)实现的意义,通过字典,实现批量的数据存储。

             [p1 setValuesForKeysWithDictionary:dic];kvc 的生命力,是它存在的意义。

  • 相关阅读:
    什么是Code Review
    支撑5亿用户、1.5亿活跃用户的Twitter最新架构详解及相关实现
    shell的数组操作
    CDN(内容分发网络)技术原理
    云计算服务模型,第 3 部分: 软件即服务(PaaS)
    Mongodb
    360的开源项目
    用linux mail命令发送邮件[Linux]
    BZOJ2761:[JLOI2011]不重复数字(map)
    BZOJ1821:[JSOI2010]部落划分(并查集,二分)
  • 原文地址:https://www.cnblogs.com/ytmaylover/p/5049203.html
Copyright © 2011-2022 走看看