美文网首页
引用计数相关.md

引用计数相关.md

作者: CoderLNHui | 来源:发表于2017-03-15 16:46 被阅读9次

释放对象后的retainCount值

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    NSObject *object = [[NSObject alloc] init];
    NSLog(@"Reference Count = %u", [object retainCount]);
    [object release];
    NSLog(@"Reference Count = %u", [object retainCount]);
    return YES;
}
  • 执行结果
Reference Count = 1
Reference Count = 1

  • 最后一次输出,引用计数并没有变成 0。这是为什么呢?

因为该对象的内存已经被回收,而我们向一个已经被回收的对象发了一个 retainCount 消息,所以它的输出结果应该是不确定的,如果该对象所占的内存被复用了,那么就有可能造成程序异常崩溃.

  • 那为什么在这个对象被回收之后,这个不确定的值是 1 而不是 0 呢?

    这是因为当最后一次执行 release 时,系统知道马上就要回收内存了,就没有必要再将 retainCount 减 1 了,因为不管减不减 1,该对象都肯定会被回收,而对象被回收后,它的所有的内存区域,包括 retainCount 值也变得没有意义。不将这个值从 1 变成 0,可以减少一次内存的写操作,加速对象的回收。

相关文章

  • 引用计数相关.md

    释放对象后的retainCount值 执行结果 最后一次输出,引用计数并没有变成 0。这是为什么呢? 因为该对象的...

  • 引用计数相关几个问题

    引用计数相关几个问题(一) —— alloc init 引用计数引用计数相关几个问题(二) —— NSString...

  • share_cnt 或 file_ref_cnt

    使用share cnt引用计数器,记录文件被分享或被引用的次数,同时应使用哈希校验和(hash_digest_md...

  • iOS内存区域分布

    说到iOS的内存管理,大家首先想到的可能是引用计数相关的东西,而跟引用计数相关的内存都是分布在堆区(heap),也...

  • (一) 垃圾回收器

    一、引用计数器 引用计数是一种简单但速度很慢的垃圾回收技术。 创建的每一个对象都有一个与之相关联的引用计数...

  • iOS内存管理初探 – 引用计数、AutoRelease与ARC

    引用计数式内存管理 引用计数 iOS通过引用计数管理对象的生命周期,每个对象有其引用计数。 对象被强引用时引用计数...

  • Obj-C高级编程--内存管理

    自动引用计数 自动引用计数:指内存管理中对引用采取自动计数的技术。 内存管理/引用计数 持有对象引起引用计数加...

  • GC算法

    引用计数 每个对象有一个引用计数,当对象被多引用一次,引用计数加一,当引用被释放,引用计数减一,当引用计数为零,则...

  • iOS内存管理(4)-引用计数的存储、weak原理

    1. 引用计数存储 如果想了解引用计数的存储情况我们得需要事先了解三个相关的概念,Tagged Pointer,N...

  • 内存管理与自动引用计数—第一日

    自动引用计数 1.1 什么是自动引用计数 内存管理中对引用采用自动计数的计数 1.2 内存管理/引用计数 这一张举...

网友评论

      本文标题:引用计数相关.md

      本文链接:https://www.haomeiwen.com/subject/vfzlnttx.html