objective-c - iOS中的delegate的原理是怎么回事?

【字号: 日期:2023-12-14浏览:40作者:雯心

问题描述

如题,以前是个c#新手,在c#里也经常用委托,回来熟了lambda后都是直接写个lambda过去。当时没觉着二者区别多大。但现在搞iOS有点晕了,怎么这里block和delegate是不同的东西?然后再看看委托的使用上怎么又觉着这不是和使用传统意义上的接口然后多态一个意思嘛?只是delegate有optional和request而已啊。哎呦不对,我在写这个问题的时候突然感觉好像委托就是我所说的这个原理?求大神给解惑……

问题解答

回答1:

objc 里的 delegate 跟 c# 里的不是一个概念, obj c 里 delegate 是设计模式里的委托模式,一般就是个协议(别的语言里都叫 interface,objc 里叫 protocol),optional 和 required(我猜你说 request 应该是拼错了)是说实现协议时的某个方法或者变量是必须的还是可选的。比如 table view 本身是不知道自己要显示几行,要显示什么东西的, 需要显示的时候,它就会去问它的 delegate(另外一个服从了 UITableViewDelegate/UITableViewDatasource 的对象的弱引用),我要显示几行?每行多高?显示什么东西?一个类服从了 UITableViewDelegate 的话,有一些方法是必须实现的(required), 有一些是可选的(optional)。你就当在 objc 里跟 c# 里只是用重了关键词吧,但是意思不一样。

相关文章: