ios - 通过几个不相关的类传递方法调用

标签 ios objective-c

这有一种响应者链的感觉,但不同之处在于,响应者链是专门针对 View 和 View Controller 定义的操作。

嗯,我需要通过几个不相关的类传递方法调用,并且对 Objective-C 相当陌生,我不确定定义一个协议(protocol),然后在每个类上实现该协议(protocol)是否是一种黑客行为。调用需要经过的类。

例如... ClassA 是 ClassB 的委托(delegate)。
ClassB 是 ClassC 的委托(delegate)
...因此有“响应者链”的感觉。

这对于将调用从 C 传递到 B 再到 A 的代码有意义吗?

我假设在某个时候,当链变得太长时,您可能会推荐一种通知技术,但我不知道推荐的长度可能是多少。

@protocol DidSomething
  -(void)userDidSomething:(NSString*)something
@end


ClassA <DidSomething>
  -(void)userDidSomething:(NSString*)something
  {
    NSLog(@"The user did something %@",something);
  }


ClassB <DidSomething>
  -(void)userDidSomething:(NSString*)something
  {
    [self.delegate userDidSomething:something];
  }


ClassC <DidSomething>
  -(void)thatWasInteresting
  {
    [self.delegate userDidSomething:@"Cool"];
  }

最佳答案

不。没有错。避免潜在的复杂性。

如果需要,您可以将其定义为协议(protocol)。或者您可以将其定义为公共(public)抽象父类(super class)(如果可能)。

协议(protocol)通常是当今的主流方式,使用 @Optional 需要使用 respondsToSelector: 测试(或 conformsToProtocol:) .

总而言之,您应该非常小心地使用这种模式。具体来说,它暗示了很多关于应用程序架构的信息,因此,您希望确保该架构是健全的。

关于ios - 通过几个不相关的类传递方法调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31665300/

相关文章:

ios - PFTableViewCell imageView 为 Nil(使用 Storyboard)

ios - Interface Builder 裁剪可设计的 View

取消引用弱引用时,iOS 应用程序有时会崩溃

ios - 如何在 Firebase 中删除具有多个子对象的对象?

ios - 如何避免 UICollectionView 重复单元格?

ios - UITableViewCONtroller 中的快速多个单元格子类

iphone - Facebook iOS 授权并在没有对话的情况下发布?

ios - 识别哪个View调用Tap函数

ios - 在 Objective-C 中执行基于 curl 的操作

ios - 响应式表格在除默认 iOS 7 邮件应用程序之外的所有内容中都能完美呈现