gpt4 book ai didi

cocoa - (Cocoa) 我可以同时进行子类化和委托(delegate)吗?

转载 作者:行者123 更新时间:2023-12-03 17:44:56 25 4
gpt4 key购买 nike

@interface ClassB <ClassADelegate> : ClassA

id <ClassBDelegate> delegate;

@end

正如代码所示,ClassB 是 ClassA 的子类,并处理 A 类的形成协议(protocol)。但是,变量“delegate”将会重复。 (ClassA也有“委托(delegate)”)

其实不用子类也可以,但是看起来代码比较麻烦,即要使用ClassA的变量/函数,需要写[[ClassB classA] doSomething]而不是[classB doSomething],其中 doSomething: 是 ClassA 的函数。

有什么简洁的方法可以让我做到这一点吗?

最佳答案

在查看您发布的示例时,ClassB 符合 ClassADelegate 协议(protocol),并且 ClassB 有一个符合 ClassBDelegate 的委托(delegate)对象。如果 ClassB 符合 ClassADelegate 并且也是 ClassA 的子类,我很好奇为什么 ClassADelegate 方法不只是 ClassA 的一部分。

因此,我会重新考虑此设置的架构,并尝试将模型对象和委托(delegate)分开,这首先是委托(delegate)模式的要点。如果这对您的应用程序没有意义,那么有关子类化要完成的任务的一些更具体的信息将会有所帮助。

在今天做一些工作时,我突然想到 Apple 确实使用了委派和子类化,但绝对不是按照您提议的方式。看一下 NSTextField 和 NSControl 类。 NSTextField 当然是 N​​SControl 的子类,并且有自己的委托(delegate)方法,但 NSControl 也有一组委托(delegate)方法。但 NSTextField 不符合 NSControl 的委托(delegate)协议(protocol)(实际上无论如何也没有指定为协议(protocol))。

关于cocoa - (Cocoa) 我可以同时进行子类化和委托(delegate)吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2813159/

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