我正在浏览斯科特·史蒂文森(Scott Stevenson)维护的精彩博客,我试图理解一个基本的Objective-C概念,即为代表分配"分配"属性与"保留".请注意,在垃圾收集环境中,这两种方法是相同的.我最关心的是一个非基于GC的环境(例如:iPhone).
直接来自斯科特的博客:
assign关键字将生成一个setter,该setter直接将值分配给实例变量,而不是复制或保留它.这最适用于NSInteger和CGFloat等基本类型,或您不直接拥有的对象,如委托
不直接拥有委托对象意味着什么?我通常会保留我的代表,因为如果我不想让他们陷入深渊,retain会帮我解决这个问题.我通常将UITableViewController从其各自的数据源和委托中抽象出来.我还保留了那个特定的对象.我想确保它永远不会消失,这样我的UITableView就会一直有它的委托.
有人能进一步解释一下我哪里错了吗?为什么我错了?这样我就可以理解Objective-C2.0编程中使用委托的赋值属性而不是保留的这种常见范例了吗?
谢谢!