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属性来减少这种消耗.

  • 相关阅读:
    JSON.parse与eval
    加密算法
    asp.net权限管理
    asp.net登录状态验证
    U3D Debug.log的问题
    yield(C# 参考)
    U3D 动态创建Prefab的多个实例
    U3D事件系统总结
    C#事件与接口
    C#泛型委托,匿名方法,匿名类
  • 原文地址:https://www.cnblogs.com/hgy413/p/3693554.html
Copyright © 2011-2022 走看看