最佳答案
我正在浏览 Scott Stevenson 维护的精彩博客,并试图理解 Objective-C 的一个基本概念,即分配委托的“分配”属性与“保留”属性。注意,在垃圾回收环境中,两者是相同的。我最关心的是一个非 GC 环境(例如: iPhone)。
直接来自 Scott 的博客:
”赋值关键字将生成一个 setter,它直接将值赋给实例变量,而不是复制或保留它。这对于 NSInteger 和 CGFloat 这样的基本类型,或者您不直接拥有的对象(如委托)来说是最好的。”
不直接拥有委托对象是什么意思?我通常会保留我的代表,因为如果我不想让他们走向深渊,保留就会帮我解决这个问题。我通常将 UITableViewController 从其各自的 dataSource 中抽象出来,并且也进行委托。我还保留着那件特别的物品。我想确保它永远不会消失,所以我的 UITableView 总是有它的代表在身边。
有没有人可以进一步解释一下我错在哪里/为什么错在哪里,这样我就可以理解 Objective-C 2.0编程中使用委托上的分配属性而不是保留的常见范例?
谢谢!