【问题标题】:Is reference counting the same as ownership counting?引用计数与所有权计数相同吗?
【发布时间】:2017-02-07 20:55:59
【问题描述】:

考虑以下来自“Big Nerd Ranch:Objective-C 编程”的语句 - 第 21 章:对象实例变量和属性:

当一个对象有一个对象实例变量时,带有指针的对象被称为拥有被指向的对象。

现在考虑以下场景:

#import <Foundation/Foundation.h>

int main(int arc, const char * argv[])
{
    @autoreleasepool {
        NSString *message = @"Hello, world!";
    }
    return 0;
}

这里,message 对象具有一 (1) 个引用。但是……它有所有者吗?

如果我们严格遵守引用的定义,则没有 带有指针的对象 引用此 NSString。这是否意味着 message 有一 (1) 个引用但没有 (0) 个所有者?

如果是这样,ARC 在决定是否释放对象时会考虑什么?引用计数还是所有权计数?

【问题讨论】:

  • 您的代码示例没有用处,因为没有涉及有意义的引用计数、所有权或释放。字符串文字具有静态生命周期。它们从过程开始到结束都存在。

标签: objective-c pointers reference automatic-ref-counting


【解决方案1】:

引用计数只是对象维护的一个数字。

所有权是一种政策,几乎是一种哲学。这是一种尝试确保您对对象的引用计数进行连贯干预的思维方式。

【讨论】:

猜你喜欢
  • 2017-03-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-04
  • 1970-01-01
  • 2019-03-15
  • 1970-01-01
相关资源
最近更新 更多