IOs内存管理中遇到的坑

原创 2015年07月09日 20:20:49

NSString谜团


当初在进行内存管理这方面,对NSString进行[NSString retain]可输出的retainCount结果总是-1,这使我很困扰,为什么retainCount不会增加呢?

NSString *test2 = [[NSString alloc] initWithFormat:@"one"];

NSLog(@"test2 .......%ld", (unsigned long)[test2 retainCount]);

打印如下:

CFF327AB-86A2-4038-AA11-D6E1A7404A23.png

查阅文档如下:

NSString的特殊性:不管对NSString的变量进行多少次retain,NSString变量的retainCount的值任然是-1.

根据苹果官方文档

上面写着应该返回的是这个对象的UINT_MAX, 并且不会释放, 这个UINT_MAX最大二进制为(11111111111111111111111111111111)也是十六进制(0xffffffff),如果你当成有符号数取补码后输出就得-1;如果你当成无符号数就是最大数即:4294967295

在帮助文档中可以看到这么一句话:


The retainCount method does not account for any pending autorelease messages send to the receiver.


就是说retainCount 对于autorelease消息产生的的对象,并不可靠。

3.Do not use this method. (required) You should never use-retainCount, because it never tells you anything useful. 永远不要用这个方法,只要遵守alloc,new,copy以及任何需要分配内存的时候调用release就可以了


}





版权声明:本文为博主原创文章,未经博主允许不得转载。

iOS开发-做项目中遇到的坑

最近项目中遇到的问题和实际的解决方案的分享,还有一款小插件的分享,希望对遇到同类问题的作者有所帮助。 问题一 使用WebView加载网页时候进行加载时候,如果出现网络请求缓慢,并且使用MBProgre...
  • Zhai19931004
  • Zhai19931004
  • 2016年05月20日 10:44
  • 435

iOS学习过程中遇到的各种坑

前段时间因为各种原因需要学习iOS,因此我就开始了iOS学渣之路,因为是零基础,所以我在iOS开发过程中遇到了各种坑,现在将iOS开发过程中遇到的各种问题记录下来,以备后面复习。本来是应该从语言相关开...
  • Silence723
  • Silence723
  • 2018年01月21日 16:47
  • 129

vue遇到的坑

父级组件采用数据驱动渲染出来的导航栏之后,由于页面渲染的是子组件,这个时候在子组件中去触发父级组件上的事件并没有发生,这个时候反复找了网上查找了一些资料,刚开始百度到了一个关于v-for与click事...
  • limy_cxm
  • limy_cxm
  • 2017年06月08日 16:07
  • 877

iOS中GCD的那些坑

之前一个系列中iOS多线程编程Part 3/3 - GCD介绍了GCD的各类接口,别仅仅使用了最基本的dispatch_async和dispatch_sync接口提交个Block完事,那就白瞎GCD的...
  • u013250412
  • u013250412
  • 2015年01月06日 15:40
  • 599

iOS开发 ☞ Masonry的那些坑

1.自定义tableHeaderView如何使用Masonry布局 将其父视图设置问tableView 即可 2.Masonry布局scrollView 对于scrollView的子控件,在水平...
  • magicZYJ
  • magicZYJ
  • 2016年11月07日 13:59
  • 433

Java中常见的坑

原创:http://it.deepinmind.com/java/2014/03/06/Java%E4%B8%AD%E5%B8%B8%E8%A7%81%E7%9A%84%E5%9D%91.html ...
  • yb493071294
  • yb493071294
  • 2014年03月08日 14:16
  • 516

iOS 百度地图的坑

百度地图api点击BMKAnnotationView,不响应didSelectAnnotationView事件。 大家都知道,百度地图api封装的比较完整,但有时候,会给我们造成一定的麻...
  • yitailong
  • yitailong
  • 2014年06月11日 10:01
  • 968

Android开发遇到的坑

最近在开发中总会遇到各种坑,由于记忆力不好,先记录在这里。 以前看过的一些总结,基本上很齐全了: http://jcodecraeer.com/plus/view.php?aid=3773 https...
  • ly635676581
  • ly635676581
  • 2016年11月25日 16:31
  • 392

前端开发遇到的坑(纯属吐槽)

沟通问题!! 没别的就是沟通问题!!!
  • qq_2842405070
  • qq_2842405070
  • 2017年04月17日 16:44
  • 808

写js过程中遇到的坑

1.js中的变量提升机制 2.js中原生js的兼容性问题:eg:nextSibling和nextElementSibling在不同浏览器的应用范围 3.js中jquery对象和javaScript...
  • flying461
  • flying461
  • 2017年02月16日 14:48
  • 391
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:IOs内存管理中遇到的坑
举报原因:
原因补充:

(最多只允许输入30个字)