一、 属性readwrite,readonly,assign,retain,copy,nonatomic 等各是什么作用,在那种情况下用?

1>  readwrite:同时生成get方法和set方法的声明和实现

2>  readonly:只生成get方法的声明和实现

3>  assign:set方法的实现是直接赋值,用于基本数据类型

4>  retain:set方法的实现是release旧值,retain新值,用于OC对象类型

5>  copy:set方法的实现是release旧值,copy新值,用于NSString、block等类型

6>  nonatomic:非原子性,set方法的实现不加锁(比atomic性能高)

7>  strong:强指针类型,用于对象类型

8>  weak:弱指针类型,用于对象类型

二、最需注意strong/weak类型

1>  strong:在对象有存在必要的时候必须保证至少有一个强指针指向它,否则会引起野指针错误

2>  weak:一般通过.xib脱线产生的控件会自动声明为weak类型,因为在.xib中的View中已经有一个强指针指向该控件,只要该View存在,控件就有强指针指向不会消亡

补充:

野指针错误:访问了一块坏的内存(已经被回收的,不可用的内存)。

内存泄露:内存没有被回收,但已经没有指针指向该内存,外界无法在访问该内存从而造成泄漏。(在ARC环境下也要担心内存泄露的问题)

僵尸对象():所占内存已经被回收的对象,僵尸对象不能再被使用。(打开僵尸对象检测)

空指针:没有指向任何东西的指针(存储的东西是0,null,nil),给空指针发送消息不会报错

注意:不能使用[p retaion]让僵尸对象起死复生。

转载于:https://www.cnblogs.com/xiaobaichangan/p/5065932.html

@property 各个属性作用【使用时最需注意strong/weak类型】【补充部分内存知识】...相关推荐

  1. Objective-c属性修饰关键字(assign retain copy strong weak)

    一.线程相关: [atomic/nonatomic] (1)atomic[默认属性]:OC使用的一种线程保护技术,是防止在写未完成的时候被另外一个线程读取,造成数据错误.而这种机制是耗费系统资源的,所 ...

  2. 关于@property()的那些属性及ARC简介【nonatomic,atomic,assign,retain,strong,weak,copy。】

    @property()常用的属性有:nonatomic,atomic,assign,retain,strong,weak,copy. 其中atomic和nonatomic用来决定编译器生成的gette ...

  3. pow,sqrt使用时需注意

    使用时注意类型,可见两者皆不可以用int 1.pow 函数声明: double pow (double base , double exponent);float pow (float base , ...

  4. PowerDesigner15使用时的十五个问题

    2019独角兽企业重金招聘Python工程师标准>>> 转载:http://www.cnblogs.com/netsql/archive/2010/05/28/1746586.htm ...

  5. 基于模板的通用代码生成器LKGenerator(二)-使用时的关键步骤,注意事项及实例

    通过本文,您将了解本代码生成器使用时的关键步骤,使用时的注意事项及实例. 本代码生成器的原理:提供一个可被jvm加载的class文件,然后通过java的注解和反射技术读取信息,通过本工具放入到Velo ...

  6. modalpopup控件使用时的pannel设置问题

    modalpopup控件使用时的pannel设置问题 最近新加了个modalpopup控件, 可在使用时总提示网页上有错误, 后来发现是 modalpopup控制显示和隐藏的pannel和里面的东西的 ...

  7. CSS3变形和动画:旋转、扭曲、缩放、位移、矩阵 、原点 transform-origin、过渡属性 transition-property、过渡所需时间 transition-duration...

    无意中发现了一个巨牛的人工智能教程,忍不住分享一下给大家.教程不仅是零基础,通俗易懂,而且非常风趣幽默,像看小说一样!觉得太牛了,所以分享给大家.点这里可以跳转到教程. 旋转.扭曲.缩放.位移.矩阵 ...

  8. pd15不能连接oracle11g,PowerDesigner15 使用时的十五个问题附解决方法

    15个问题列表: 一般常用的有CDM,PDM,UML建模,CDM可以转为PDM. 支持正向[生成数据库]和逆向工程[从数据库中生成],并直接关联到到数据库中,PDM可以直接和数据库进行关联,并将数据库 ...

  9. 关于ADAMS中AZ函数使用时的一些心得

    今天做仿真时,发现使用AZ函数时的一些注意事项: 一:          其中MARKER_1需要是作用part(或者说受力运动的那个part)上的点,MARKER_33是与作用part相连的那个pa ...

最新文章

  1. python哪些是可变对象_什么是Python可变对象和不可变对象
  2. java 编译开关_java – 字符串是关于开关的数字类型,并始终编译为lookupswitch?
  3. Vue 跨平台性能优化十法
  4. 第二周CoreiDRAW总结
  5. eap和psk_针对WildFly和EAP运行Java Mission Control和Flight Recorder
  6. vue2.0移除或更改的一些东西
  7. python中random库_python标准库之random模块
  8. android canvas 画按钮,Android 用Canvas轻松绘制一个时钟
  9. php $smarty-display,display - [ smarty完全中文手册 ] - 在线原生手册 - php中文网
  10. HTML5从入门到精通
  11. React图片压缩上传统一处理
  12. FLOW 3D二次开发
  13. 软件工程--可行性研究过程详解
  14. mysql分页中offset作用_mysql中分页查询(LIMIT和OFFSET关键字讲解)一语道破天机
  15. C# 多线程如何访问同一个数据
  16. 吉林省注册公司流程:第一步 企业名称预先核准流程。
  17. 蓝桥杯实验4--按键之独立键盘(proteus仿真)
  18. 福岛核电站2号机组爆炸 未来三天对我国无影响
  19. apache安装及配置
  20. python安装dlib(已成功并且无出现报错AttributeError: module ‘dlib‘ has no attribute ‘get_frontal_face_detecetor

热门文章

  1. liunx 下的动态地址分配服务DHCP
  2. 三菱数据移位指令_三菱plc移位指令用法详解
  3. Spring高级之注解@ComponentScan详解(超详细)
  4. mysql语句面试题_mysql的sql面试题(1)
  5. K-SVD字典学习算法
  6. java整型转换为数组_基于java中byte数组与int类型的转换(两种方法)
  7. opencv for java HoughLinesP的使用
  8. 前台啊,就是这么杂!
  9. ajax json的参数,java ajax json参数
  10. shell编写mysql全备和增备脚本_基于mysqldump编写自动全备增备的shell脚本