Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/111.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 设计模式:使用协议公开通知_Ios_Objective C_Design Patterns_Network Programming - Fatal编程技术网

Ios 设计模式:使用协议公开通知

Ios 设计模式:使用协议公开通知,ios,objective-c,design-patterns,network-programming,Ios,Objective C,Design Patterns,Network Programming,我有几种类型的逻辑控制器类,用于处理与远程资源的通信。为此,每个类都使用网络控制器类的一个实例来处理连接细节:连接到资源、发送数据、接收数据。逻辑控制器类使用通知从网络控制器类通知数据更改。因此,在我当前的解决方案中,每个逻辑控制器类注册通知,并实现特定的函数以不同方式处理它们 然而,如果我想进行适当的代码工程,我想知道使用协议和委托是否会更健壮 我想知道是否可以定义逻辑控制器类需要实现哪些方法才能接收通知。但是,我不确定这是否有意义,是否正确,因为我不想在这里继承 有什么建议吗?通常每个通知有

我有几种类型的逻辑控制器类,用于处理与远程资源的通信。为此,每个类都使用网络控制器类的一个实例来处理连接细节:连接到资源、发送数据、接收数据。逻辑控制器类使用通知从网络控制器类通知数据更改。因此,在我当前的解决方案中,每个逻辑控制器类注册通知,并实现特定的函数以不同方式处理它们

然而,如果我想进行适当的代码工程,我想知道使用协议和委托是否会更健壮

我想知道是否可以定义逻辑控制器类需要实现哪些方法才能接收通知。但是,我不确定这是否有意义,是否正确,因为我不想在这里继承

有什么建议吗?

通常每个通知有一个或两个(稍后解释)方法。所以这是一个非常简单的映射。这样做的原因是,每个“事件”都有一个通知,对于委派来说,几乎没有理由这样做

但是你的设计很好。委托和通知之间有什么区别?(鲁棒性并非如此。)

  • 委托是自定义委托实例行为的单个实例。因此,除了通常的“通知”方法(
    will…
    did…
    )之外,它还可以改变委托的行为,即。E将
    NO
    返回为“无效标记”(
    应…
    )或更改数据集,将对执行操作。(有时这是事件的第二种方法。)很明显,在这种情况下,一次不能有多个实例。委托与子类化竞争,通常是更好的选择(白拳击与黑拳击)

  • 您可以拥有任意数量的通知接收者。显然,它们无法更改通知发送者的行为。因此,如果您有几个实例只需要事件发生的信息,那么它是更好的选择

如果正确理解您的用例,通知将完全符合您的需求