相关疑难解决方法(0)

为什么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的常见范例吗?

谢谢!

cocoa delegates objective-c ios

176
推荐指数
3
解决办法
5万
查看次数

可以保留ASIHTTPRequest委托吗?

是否可以保留子类的委托ASIHTTPRequest

我做了一个ASIHTTPRequest被调用的子类JSONRequest.每个实例JSONRequest都是它自己的委托,处理回调,并将它们传递给它jsonDelegate,它是一个私有属性JSONRequest,并响应requestFinished:withResult:,其中result是NSDictionaryJSON响应的表示.要做到这一点,我重载setDelegate:JSONRequestsuper.delegate = self; self.jsonDelegate = newDelegate.

jsonDelegate在这种情况下保留是否可以,因为通常jsonDelegate是一个视图控制器,如果用户点击"返回"等,有时会在加载请求时解除分配.我将jsonDelegateJSONRequest调用回调方法后释放.

我怎么知道这没关系,也不会导致保留循环.

delegates objective-c retain asihttprequest assign

0
推荐指数
1
解决办法
1074
查看次数

标签 统计

delegates ×2

objective-c ×2

asihttprequest ×1

assign ×1

cocoa ×1

ios ×1

retain ×1