12.委托是什么?委托的property声明用什么属性?为什么?

委托是delegate(笑),delegate就是将某个方法 要求外部方法来实现.通常是传参数和数据
delegate是cocoa中实现 MVC的一种重要机制.
举例说.假如我用自己的代码重现一个TableView的话. 在TableView的代码实现里.就用protocol 定义了Delegate和Datasource(都是delegate)应该提供的一些方法和参数传进来.
property的声明属性通常用的是assgin,
为什么说通常.假如delegate 比如说 我们写的tableViewController 是tableView的 ref holder的话.那么 显然TableViewController的生存周期是大于等于tableView的 这个时候用assgin,是可以保证任何时候 访问delegate总是不会叫到野指针.
但有一些情况是这样的举例说我创建了一个请求比如网络连接的.而且把自己作为delegate传给了这个 request.那么这里就需要解决一个问题.首先有没有可能在这个请求返回的时候(异步的)这个请求的类已经不存在了或者改变了.这里得看具体情况,具体处理.
通常来说不建议 delegate用 retain 这样容易造成抱死.既相互retain 造成一个instrument都可能无法发现的leak 而且通常是大块的leak

转载于:https://www.cnblogs.com/sqq521/archive/2012/10/17/2728291.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值