在自动引用计数(ARC)下,我是否应继续使用iVar和@property(nonatomic,retain)加上@synthesize?

9

长期以来,我一直在接口文件的声明中使用 Instant Variables(iVar)和 @property。

@interface MainGameViewController : UIViewController {
     UserFactorsViewController *userFactorsViewController;
     UITableView *myTableView;
}
@property (nonatomic, retain) UserFactorsViewController *userFactorsViewController;
@property (nonatomic, retain) IBOutlet UITableView *myTableView;

在自动引用计数(ARC)下,我是否应该放弃使用iVar并全部使用@property?在属性中是否需要保留“retain”关键字?如果我要部署到iOS 4.3,我是否仍然应该使用ARC?
1个回答

10

尽管编译器会为您添加ivars,但是许多人(包括许多书籍作者)仍然声明它们,以使代码更易于阅读(更易于区分ivar和property)。不要感到困惑。

现在创建属性时,苹果公司希望您从对象图的角度思考,因此请研究“strong”和“weak”属性属性,而不是retain和releases。

iOS 4被设置为ARC的目标,因此您应该没问题。但是,如果您想支持iOS 3.0,则必须像以前一样手动管理retain和releases。


谢谢。但是在ARC下,有什么“正确”的方法来做这件事吗?我应该只是拥有属性并让synthesize处理其余部分吗?并且对于我拥有的每个STRONG对象变量,只需放置属性(nonatomic)即可? - Ben
2
@property (nonatomic, strong) UserFactorsViewController *userFactorsViewController; @property (nonatomic, strong) IBOutlet UITableView *myTableView; - 5StringRyan
非常感谢你,汉斯。非常感激。 - Ben
2
这篇博客文章可能有助于理解ARC http://longweekendmobile.com/2011/09/07/objc-automatic-reference-counting-in-xcode-explained/ - pchap10k
2
如果你运行编辑>重构>转换为ARC工具,它实际上会为你转换所有的属性。 - Nick Lockwood
正确的方法是遵循标准,不要定义ivars,也不要使用@synthesize。使用现代Objective C特性。 - aryaxt

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接