zoukankan      html  css  js  c++  java
  • 属性存取、直接访问实例变量

    属性的读取采用点语法,访问对应的set和get方法。而直接访问是直接访问的对象实例的内存。这两者有什么区别?在什么情况应该使用哪种方法呢?

    一、区别

    直接访问实例变量有如下几种特质。

    1、不经过Objective-C的方法派发,直接访问实例变量的内存,速度快。

    2、由于没调用set方法,所以绕过了属性定义时声明的“内存管理语义”,只会保留新值,释放旧值。

    3、不会触发“键值观测”KVO机制。

    4、无法通过给set和get打断点来进行调试。

    二、使用场景

    通用情况:

    在类的外部,使用属性存取。

    在类的内部,如果是设置实例变量,采用属性设置,如果是获取实例变量,直接获取。

    特殊情况:

    1、在对象初始化方法中,尽量采用直接访问,但如果是超类的实例变量,就只能用属性存取;

    2、在类的内部,如果在get方法中,惰性初始化某实例变量,那只能使用属性存取。

  • 相关阅读:
    Activemq+Zookeeper集群
    Centos7 安装 ActiveMQ 5.15.1
    189. Rotate Array
    188. Best Time to Buy and Sell Stock IV
    187. Repeated DNA Sequences
    186.Reverse Words in a String II
    179. Largest Number
    174. Dungeon Game
    173. Binary Search Tree Iterator
    172. Factorial Trailing Zeroes
  • 原文地址:https://www.cnblogs.com/zhouyi-ios/p/7125410.html
Copyright © 2011-2022 走看看