为什么Objective-C代理通常给予属性赋值而不是保留?
我正在浏览Scott Stevenson维护的精彩博客,我正在尝试理解一个基本的Objective-C概念,即为委托者分配'assign'属性vs'retain'。注意,两者在垃圾收集环境中是相同的。我主要关注的是非基于GC的环境(例如:iPhone)。
直接来自Scott的博客:
“assign关键字将生成一个setter,它直接将值赋给实例变量,而不是复制或保留它。这最适用于NSInteger和CGFloat等原始类型,或者你不直接拥有的对象,如委托。”
你不直接拥有委托对象是什么意思?我通常会保留我的代表,因为如果我不希望他们离开深渊,保留将为我照顾。我通常抽象UITableViewController远离其各自的dataSource和委托。我也保留那个特定的对象。我想确保它永远不会消失,所以我的UITableView总是有它的代表。
有人可以进一步解释我错在哪里/为什么,所以我可以理解Objective-C 2.0编程中使用委托上的assign属性而不是retain的常见范例吗?
谢谢!
暮色呼如
汪汪一只猫