【发布时间】:2010-10-29 10:56:08
【问题描述】:
我正在浏览由 Scott Stevenson 维护的精彩博客,我正在尝试理解一个基本的 Objective-C 概念,即为代表分配“分配”属性与“保留”。请注意,两者在垃圾收集环境中是相同的。我最关心的是非基于 GC 的环境(例如:iPhone)。
直接来自 Scott 的博客:
“assign 关键字将生成一个 setter,它直接将值分配给实例变量,而不是复制或保留它。这最适用于 NSInteger 和 CGFloat 等原始类型,或者您不直接拥有的对象,例如代表。”
您不直接拥有委托对象是什么意思?我通常会保留我的代表,因为如果我不希望他们陷入深渊,保留会为我解决这个问题。我通常将 UITableViewController 从其各自的数据源和委托中抽象出来。我也保留了那个特定的对象。我想确保它永远不会消失,所以我的 UITableView 总是有它的委托。
有人可以进一步解释我错在哪里/为什么错,这样我就可以理解在 Objective-C 2.0 编程中使用委托而不是保留的分配属性的常见范例?
谢谢!
【问题讨论】:
-
重新标记为“delegates”,没有“iphone”。
-
为什么是委托分配而不是复制(如NSString?)
标签: objective-c ios cocoa delegates