c/c++语言开发共享Objective C委托还是C风格的块回调?

我正在设计一个类,当发生某些事情时,它会“触发事件”。 这些事件往往与非UI相关。 我想知道这样做的最佳方法是什么。 我一直在探索:

代表

我将定义一个委托类,在init函数中接受委托,并在事件发生时调用委托类上的方法。

C风格的积木

我将定义一个函数指针,并在init函数中接受一个函数。 我会在事件发生时调用它。

在这两种情况下,我可能需要处理多个“源”,因此我需要一组委托或块。

我注意到在iOS编程中,代表往往更喜欢UI框架。 但是我来自函数编程背景,我非常适合接受函数点并在调用站点传递lambdas,我喜欢编译器为你处理吊装变量,你通常需要较少的类状态。 但我发现许多iOS开发人员正在使用委托。

iOS中通常首选的机制是什么?

    每个都有它的用途。

    当有多个“事件”告诉代表和/或何时类需要从代理获取数据时,应使用代理。 一个很好的例子是UITableView

    当只有一个(或两个)事件时,最好使用块。 完成块(可能是故障块)就是一个很好的例子。 一个很好的例子是NSURLConnection sendAsynchronousRequest:queue:completionHandler: .

    第三个选项是通知。 当事件中可能存在多个(和未知的)相关方时,最好使用此方法。 另外两个仅在有一个(并且已知)感兴趣方时才有用。

    使用委托意味着在架构方面比使用简单的回调块更紧密耦合。 对于非复杂的情况,代表可能是一种过度杀伤力。

    在某个容器中存储块是正常的,但是您应该提前考虑在以后某些时候删除它们的可能性(这将需要一些工作),我的意思是用于删除已经添加的处理程序的附加接口。

    对于您的用例, NSNotification似乎是最佳选择。 然后,需要这些事件的对象可以注册这些通知。

    需要了解更多c/c++开发分享Objective C委托还是C风格的块回调?,也可以关注C/ C++技术分享栏目—计算机技术网(www.ctvol.com)!

      以上就是c/c++开发分享Objective C委托还是C风格的块回调?相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/980101.html

      (0)
      上一篇 2021年12月13日
      下一篇 2021年12月13日

      精彩推荐