我正在设计一个类,每当有事情发生时就会“触发事件”。这些事件往往与 UI 无关。我想知道这样做的最佳方法是什么。我一直在探索:
代表们
我将定义一个委托类,在 init 函数中接受委托,并在事件发生时调用委托类上的方法。
C型块
我将定义一个函数指针,并在 init 函数中接受一个函数。当事件发生时我会调用它。
在这两种情况下,我可能需要处理多个“源”,因此我需要一组委托或块。
我注意到,在 iOS 编程中,委托往往是首选,尤其是 UI 框架。但我有函数式编程背景,我非常乐意接受函数点并在调用站点传递 lambda,而且我喜欢编译器为您处理提升变量,并且您通常需要较少的类状态。但我发现很多 iOS 开发人员都在使用委托。
iOS 中通常首选的机制是什么?
各有各的用处。
当有多个“事件”需要通知委托时和/或类需要从委托获取数据时,应使用委托。一个很好的例子是UITableView
.
当只有一个(或两个)事件时最好使用块。完成块(也可能是失败块)就是一个很好的例子。一个很好的例子是NSURLConnection sendAsynchronousRequest:queue:completionHandler:
.
第三个选项是通知。当事件中可能有多个(且未知)相关方时,最好使用此方法。其他两项仅在有一个(且已知)感兴趣方时才有用。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)