gpt4 book ai didi

ios - Objective C - 共享*几乎*相同委托(delegate)方法的类

转载 作者:行者123 更新时间:2023-11-29 11:56:35 24 4
gpt4 key购买 nike

我有两个类,A 类和 B 类,它们使用方法 A 和 B 实现委托(delegate)。它们对方法 A 和 B 的实现可能如下所示:

Class A {
Method A {
Action 1;
Action 2;
Action 3;
}
Method B {
Action 4;
Action 5;
Action 6;
}
}

Class B {
Method A {
Action 2;
Action 3;
}
Method B {
Action 4;
Action 5;
}
}

这两个类实现了两个几乎相同的委托(delegate)方法,除了 B 类在每个方法中执行的操作比 A 类少。有没有一种方法可以将 B 类的实现分解为两个类共享的委托(delegate)类,并在需要时(对于 A 类)以某种方式将 Action 1 和 Action 6“注入(inject)”委托(delegate)方法?如果不是,构建此代码的最佳方式是什么?

编辑:此外,在实际实现中,A 类和 B 类非常不同,除了它们以类似的方式实现方法 A 和 B。

最佳答案

最好的办法就是继承。像这样:

Class A: B {
Method A {
Action 1;
super.Method A;
}
Method B {
Action 4;
super.Method B;
}
}

Class B {
Method A {
Action 2;
Action 3;
}
Method B {
Action 4;
Action 5;
}
}

已更新

看了你的评论后,我觉得动态消息发送可能会有帮助。(下面的所有代码都在A中)1.获取B的IMP:

class_getMethodImplementation(Class cls, SEL name);

2.添加IMP:

class_addMethod(Class cls, SEL name, IMP imp, const char *types);

3.发送消息:

objc_msgSend(self, SEL name, parameter1, parameter2, parameter3);

有点复杂但是符合DRY。

关于ios - Objective C - 共享*几乎*相同委托(delegate)方法的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38840993/

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