【发布时间】: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