一,在AppDelegate.m中写入如下代码:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {// Override point for customization after application launch.NSObject *object=[[NSObject alloc]init];NSLog(@"%ld",[object retainCount]);[object release];NSLog(@"%ld",[object retainCount]);return YES;
}

二,运行,得出如下输出。

2015-07-14 21:44:57.889 ARC不要向已经释放的对象发送消息[2245:90589] 1
2015-07-14 21:44:57.890 ARC不要向已经释放的对象发送消息[2245:90589] 1

三,结果分析。

1,引用计数的内存回收方式是“只做标记,并不抹除相关数据”。有点像是移动硬盘中删除数据的时候,只是删除数据,而这些数据并没有真正在移动硬盘上进行删除。

2,上面的代码中obect对象释放之后,引用对象并不总是1,有时候也会出现程序崩溃的情况。当object对象所占的内存被复用的时候,就会出现程序崩溃的情况。

3,“不要向已经释放的对象发送消息”。例子是中是向已经释放的object发送retainCount消息。

4,当一个对象通过release内存被回收之后,向这个对象发送任何消息,不管输出结果是对,是错,都是无效的。即使和预期的一样,也只是恰巧碰上了。

参考资料:

《iOS开发进阶》 --唐巧

转载于:https://www.cnblogs.com/yang-guang-girl/p/4653429.html

【读书笔记】iOS-ARC-不要向已经释放的对象发送消息相关推荐

  1. 从零开始,对接环信IM iOS SDK(无UI界面)实现登录与发送消息

    从零开始,对接环信IM iOS SDK(无UI界面)实现登录与发送消息 查看更多官方集成教程:https://www.imgeek.org/video/

  2. 【Effection C++】读书笔记 条款28:避免返回handles指向对象内部成分

    [Effective C++]读书笔记 Part5 实现 条款28:避免返回handles指向对象内部成分 避免返回handles(包括references,指针,迭代器)指向对象内部.遵守这个条款可 ...

  3. [读书笔记]iOS 7 UI设计 对比度

    好久没写随笔了,最近在读<iOS 7 byTutorials>,很不错,推荐给大家. 每一个好的程序员也都是一个设计师,不懂设计的程序员不是好的CTO.哈哈,开个小玩笑. iOS 7设计的 ...

  4. 《linux程序设计》--读书笔记--第十四章信号量、共享内存和消息队列

    信号量:用于管理对资源的访问: 共享内存:用于在程序之间高效的共享数据: 消息队列:在程序之间传递数据的一种简单方法: 一.信号量 临界代码:需要确保只有一个进程或者一个执行线程可以进入这个临界代码并 ...

  5. effective java读书笔记5:避免创建不必要的对象

    2019独角兽企业重金招聘Python工程师标准>>> 解读:如果不需要每次都创建一个相同功能的新对象,最好重用对象,因为有时候反复创建同样的对象是有代价的. 例如: 1.Strin ...

  6. 《iOS 开发进阶(唐巧)》读书笔记

    1. CocoaPods 的安装和使用 CocoaPods 是开发 iOS 应用程序的一个第三方库的依赖管理工具,起始于2011年8月,用 Ruby 写的. 1.0 CocoaPods 的原理 Coc ...

  7. [读书笔记]读《Effective Objective-C 2.0编写高质量iOS与OS X代码的52个有效方法》(一)...

    第一条:了解Objective-C 语言的起源 Objective-C为C语言添加了面向对象特性,是其超集.Objective-C使用动态绑定的消息结构,也就是说,在运行时才会检查对象类型.接收一条消 ...

  8. 【Effective Objective-C 2.0读书笔记】第六章:块(Blocks)和大中枢派发(GCD)

    继续这本书的读书笔记,希望在其中也加入自己的一些总结,以加深理解.之前这一章写了很多了,保存到草稿箱中,不知道为何丢失了,真是可惜,看来CSDN的MarkDown编辑器还存在一些bugs,在它打上补丁 ...

  9. Effective objective-C 读书笔记 (第一部分)

    第1章 熟悉Objective-C 第1条 了解Objective-C语言的起源 Objective-C是一种"消息结构"的语言,而非"函数调用"语言. 关键区 ...

最新文章

  1. 安装neo1973的GPS驱动[转]
  2. C++ 关于方法传值
  3. SQL Server 2008 R2 开启数据库远程连接
  4. python max函数_Python max内置函数详细介绍
  5. 福州首届.NET开源社区技术交流会圆满成功
  6. oracle添加伪列,Oracle伪列 - jifengtang的个人空间 - OSCHINA - 中文开源技术交流社区...
  7. 在 Google Earth 上看新闻
  8. Java8新特性总结 -7.新API和工具
  9. MySQL启动异常Starting MySQL.The server quit without .
  10. [linux] mtu查看设置
  11. Win7允许/禁用 PING命令
  12. 小白必学教程Python编码
  13. 有的字体,用黑色渲染,效果是灰色
  14. Python 结构体数组初始化代码示例
  15. ipad怎样和计算机连接网络,ipad怎样连接电脑itunes
  16. clickhouse-cpp 写入时卡住 bug调试
  17. 假如从餐饮店的角度来看架构…
  18. Oracle建表时弹出 ORA-00955: 名称已由现有对象使用
  19. Unity 打包快手
  20. bert获得词向量_手把手教你完成句子分类,最好上手的BERT初级使用指南

热门文章

  1. linux 下常见启动文件配置
  2. Delphi 的消息机制浅探三
  3. 无法使用index seek的写法
  4. Microsoft月度中文速递
  5. [转]linux 块设备驱动
  6. Nginx访问VM虚拟机CentOS 7系统与本地Windows系统共享目录403
  7. 创建vue项目+总结使用(跨域问题+vue 创建)
  8. 最精准的view,canvas,surface之间的关系
  9. 算法----左叶子之和
  10. 解决编译失败 Attribute meta-data#android.support.VERSION@value value=(26.0