zoukankan      html  css  js  c++  java
  • @synthesize和@property

     @property (attributes) type name;

    attributes可以是 readwrite (默认的) 或是 readonly. 如果使用readonly,那么就只有getter方法. 我们也可以通过:assign, retain,copy属性来指定setter方法的工作方式
     assign(默认) 简单的赋值, assign不会对新的值做retain. 如果使用对象类型的参数,同时没有启用garbage collector.我们不要使用assign
     retain: release旧的值,同时retain新值. 这个属性用在参数为Objective-C对象类型时. 如果启用了garbage collector, 它和assign作用一样. [启用了garbage collector. release和retain什么也不做.]
     copy: 对新值做拷贝,把拷贝赋值给变量. 变量为string时,常用该属性.

    最后,我们还可以使用nonatomic属性. 如果我们的程序是多线程的. 那么让setter方法成为atomic是非常重要的. 也就是说, 不同的线程访问同一个setter方法时,不对产生冲突[线程重入]. 如果没有启用garbage collector. 默认的会使用锁机制来保证在同一个时间点,只能由一个线程来调用一个setter方法. 因为创建和使用锁会产生一些资源消耗.所以如果我们能够保证accessor方法不需要atomic. 我们可以使用nonatomic属性来减少这种消耗.

  • 相关阅读:
    在基础数据类型和在对象中 使用 == 与equals的差别
    对Java中静态代理和动态代理的简单理解
    MyBatis中sqlSession的创建及执行流程
    Spring相关概念
    AOP相关
    IOC容器和Bean的配置
    如何将本地项目上传到GitHub进行托管
    稀疏数组
    Java集合回忆
    JSTL标签库
  • 原文地址:https://www.cnblogs.com/hgy413/p/3693554.html
Copyright © 2011-2022 走看看