【发布时间】:2014-08-07 15:13:48
【问题描述】:
假设我在 Objective-C 中有三个自定义对象:ClassA: UIViewController <ClassBDelegate>、ClassB: NSObject <ClassCDelegate>、ClassC: NSObject。 ClassA 是 UIViewController 的子类,它将显示一个活动指示器,直到 ClassC 中发生某个网络事件。 ClassB 在其他类中还有一个 ClassC,负责将事件从 ClassC 中继到 ClassA。 ClassA 有一个 ClassB,ClassB 有一个 ClassC,ClassA 到 ClassC 之间没有直接的联系。
现在让我们说,一旦特定的网络事件发生在 ClassC 中,ClassC 将触发 - (void)someAction;。 ClassB 符合 ClassC 委托协议,调用其- (void)classC:(ClassC *)classC didPerformSomeAction; 方法。反过来,ClassB 触发 -(void)thisOtherAction;,并且由于 ClassA 符合 ClassB 委托协议,它的 -(void)classB:(ClassB *)classB didPerformThisOtherAction; 被调用,这有效地从 ClassC 检索网络事件。
我的问题是,这是不好的做法,如果是,是否有更简单的方法来弥合 ClassA 和 ClassC 之间的差距?我对使用 NSNotification 犹豫不决,因为我认为委托协议更优雅。然而,这对我来说似乎有点像接力赛。在这种情况下,我将不胜感激有关流行约定的任何信息。
【问题讨论】:
-
直到您可以遵循自己的代码,这没关系 - 但是如果您想避免创建长链,本地通知仍然在这里为您服务。
标签: objective-c delegates protocols