Object-C内存管理-对象引用计数的特例
看到OC中内存管理这块,其中的引用计数部分,部分10.5上的EBOOK示例已经在10.9上不能运行正确了,比如下面的代码:
NSString * str1 = @"string 1";
NSString * str2 = @"string 2";
NSMutableString * mstr3 = [NSMutableString stringWithString: @"string 3"];
NSNumber * int1 = [NSNumber numberWithInteger: 1800000];
NSNumber * long1 = [NSNumber numberWithLong: 1800000];
NSNumber * double1 = [NSNumber numberWithDouble: 300.0];
NSLog(@"retain count: str1=%lx, str2=%lx, str3=%lx, int1=%lx, long1=%lx, double1=%lx",
[str1 retainCount],
[str2 retainCount],
[mstr3 retainCount],
[int1 retainCount],
[long1 retainCount],
[double1 retainCount]);
运行结果是:
014-11-07 17:05:22.128 Demo17[9620:303] retain count: str1=ffffffffffffffff, str2=ffffffffffffffff, str3=1, int1=7fffffffffffffff, long1=7fffffffffffffff, double1=1
Program ended with exit code: 0
EBOOK上讲的是常量字符串对象不参与计数,这个是正确的,但是实际运行结果发现,整形的NSNumber对象也好像不参与计数,浮点的NSNumber对象参与计数,即使整形数字很大也不参与计数。Java里面曾经由实现是对小额数字封装对象做缓存,所有小额数字封装对象不参与计数。但是OC里面看起来不是这样的,因为数字已经足够大,不能缓存这么多的整形对象吧?
OC的具体是什么后面再继续研究。
目前总结出的结论是:
1. 常量字符串不参与计数。
2. 常量整形NSNumber对象不参与计数。
3. 其余的对象参与计数。
打完收工,有问题再记录~
Object-C内存管理-对象引用计数的特例的更多相关文章
- 【python测试开发栈】python内存管理机制(一)—引用计数
什么是内存 在开始进入正题之前,我们先来回忆下,计算机基础原理的知识,为什么需要内存.我们都知道计算机的CPU相当于人类的大脑,其运算速度非常的快,而我们平时写的数据,比如:文档.代码等都是存储在磁盘 ...
- Objective C 内存管理[转]
1 配对原则 alloc – release new – release retain - release copy – release 2 new和alloc-init的区别 (1)区别只在于a ...
- iOS内存管理retain,assign,copy,strong,weak
转自:http://www.cnblogs.com/nonato/archive/2013/11/28/3447162.html iOS的对象都继承于NSObject, 该对象有一个方法:retain ...
- iOS-多线程-内存管理
iOS与OSX 多线程和内存管理 总结 一. 自动引用计数 1.自动引用计数(ARC)就是指内存管理中对引用采用自动计数的技术. 满足以下条件即可使用这种功能: Xcode ...
- Objective-C 高级编程:iOS与OS X多线程和内存管理
<Objective-C 高级编程:iOS与OS X多线程和内存管理> 基本信息 原书名: Pro Multithreading and Memory Management for iOS ...
- python9--内存管理 引用计数 标记清除 分代回收
复习 文件处理 1.操作文件的三步骤 -- 打开文件:硬盘的空间被操作系统持有 | 文件对象被应用程序持续 -- 操作文件:读写操作 -- 释放文件:释放操作系统对硬盘空间的持有 2.基础的读写 ...
- day09内存管理
复习 ''' 文件处理 1.操作文件的三步骤 -- 打开文件:硬盘的空间被操作系统持有 | 文件对象被应用程序持续 -- 操作文件:读写操作 -- 释放文件:释放操作系统对硬盘空间的持有 2.基础的读 ...
- day-09内存管理
内存管理 引用计数:垃圾回收机制的依据 # 1.变量的值被引用,该值的引用计数 +1# 2.变量的值被解绑,该值的引用计数 -1# 3.引用计数为0时就会被垃圾回收机制回收 引用计数会出现循环引用问 ...
- day_9内存管理
复习 '''文件处理1.操作文件的三步骤 -- 打开文件:硬盘的空间被操作系统持有 | 文件对象被应用程序持续 -- 操作文件:读写操作 -- 释放文件:释放操作系统对硬盘空间的持有 2.基础的读写 ...
随机推荐
- jquery设置自己的标识符
$(function(){ var $jc=jQuery.noConflict(); $jc('.main').css({'margin':'0 auto'}) })
- [知识整理]Java集合(二) - Set
一.实现Set的几个类 HashSet.LinkedHashSet.TreeSet.ConcurrentSkipListSet.CopyOnWriterArraySet 二.对应底层的数据结构 Has ...
- OpenLDAP双主
1:主A服务器 然后重新生成配置文件数据 主B服务器 注意:两个主服务器的rid必须得一样 在做主从的时候,必须得安装必要的软件包,comp ...
- 【Android端 APP GPU过度绘制】GPU过度绘制及优化
一.Android端的卡顿 Android端APP在具体使用的过程中容易出现卡顿的情况,比如查看页面时出现一顿一顿的感受,切换tab之后响应很慢,或者具体滑动操作的时候也很慢. 二.卡顿的原因 卡顿的 ...
- svn各个图标代表什么意思
最近参与公司项目开发要使用SVN,下面随笔记下在使用SVN中常见的图标各代表什么意思 灰色向右箭头:本地修改过 ,本地代码没有及时上库.灰色向右且中间有个加号的箭头:本地比SVN上多出的文件灰色向右且 ...
- Oracle数据库自动启动Shell脚本
为了保证Oracle在下次系统重启后,能自动启动服务,这里我们可以通过一个Shell脚步来实现这个功能.假定脚步名称为/app/oracle/oraclestart.sh,其内容如下: #!/bi ...
- 大批量GPS坐标转百度坐标
一. 百度地图API大批量转换时有数量限制,一个一个转. 用到的方法接口 /** 源坐标 格式:经度,纬度;经度,纬度… 最多支持100个; 源坐标类型:默认为1,即GPS ...
- 随机生成数字(ashx文件,调用上篇所写发送邮件代码)
public void ProcessRequest(HttpContext context) { //邮件标题 string Email_Title = Dsis.Core.SysCore.PubF ...
- NC 单据保存时间过长,判断数据库锁表解决办法
SELECT s.sid, s.serial# FROM gv$locked_object l, dba_objects o, gv$session s WHERE l.object_id = o.o ...
- nginx+uwsgi<django web环境的搭建>
1.sudo pip install uwsgi 2.sudo apt install nginx 3.sudo /etc/init.d/nginx start 4.netstat -tpnl 5./ ...