gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:25:54 24 4
gpt4 key购买 nike

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

好吧,我需要通过几个不相关的类传递一个方法调用,而且我对 Objective-C 还很陌生,我不确定定义一个协议(protocol)然后在每个类上实现该协议(protocol)是否是一种 hack调用需要经过的类。

例如……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)。或者您可以将其定义为通用抽象父类(super class)(如果可能)。

协议(protocol)通常是现在的方式,使用 @optional 需要使用 respondsToSelector: 测试(或 conformsToProtocol:) .

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

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

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com