【发布时间】:2012-03-06 11:50:38
【问题描述】:
我已使用 Xcode 4.3 中的“转换为 Objective C ARC”选项将在 Xcode 4.0 中启动的项目转换为使用 ARC。在修复了该工具发现的错误之后,我完成了迁移工具删除所有发布消息并在我的属性声明中保留属性的过程。所以现在我的所有属性都只有 (nonatomic) 属性。通过阅读文档,我仍然没有明确的答案。
所以我的问题是:如果你在属性声明中省略了关于 setter 语义(强、弱、保留、分配)的关键字,那么使用 ARC 时属性的默认属性是什么?
我在文档中发现默认属性属性是assign。但是,他们也说现在 ivars 的默认属性是 strong。
为了更好地解释我的问题,这里有一个例子。 I 头文件我们有声明:
@property (nonatomic) MyClass *objectToUse;
在我们的实现中,我们只有
@synthesize objectToUse;
如果我们再写一些方法:
self.objectToUse = [[MyClass alloc] init];
我们是否创建了强(保留)或弱(分配)引用?如果我们改为写
objectToUse = [[MyClass alloc] init];
通过使用 ivar,我们是否改变了有关对象保留策略的情况?在我看来,现在有了 ARC,使用属性进行内存管理的最佳做法不再是相同的做法了。
【问题讨论】:
标签: objective-c automatic-ref-counting