gpt4 book ai didi

iphone - 方法的条件实现

转载 作者:行者123 更新时间:2023-12-03 18:06:14 24 4
gpt4 key购买 nike

好吧..想想objectA..objectA在其协议(protocol)中定义了可选属性。委托(delegate)人可能会或可能不会实现这些,但如果您决定实现它们,则必须提供有效的返回。

现在,如果我将 objectA.delegate 设置为 objectB 但 object 需要在编译时实现所有这些,并在运行时决定它可能支持或不支持哪些。将它们全部实现为 stub 的问题意味着 objectA 将简单地使用“respondsToSelector”来查看委托(delegate)是否正在尝试使用可选属性,如果是,它将假设它们是有效的并使用它们。

由于 objectB(delegate) 必须有条件地决定要实现哪些,我能看到的唯一解决方案是使用“class_addMethod”。

我希望能有一个更优雅、可能更优化的解决方案,但不确定它是什么。

最佳答案

任何时候你认为需要使用class_addMethod()来实现某些东西,你几乎总是做错了。

根据您所描述的内容(相当模糊),一个简单的解决方案是创建既可以充当委托(delegate)又可以根据需要有条件转发方法的东西。

现在,您说如果委托(delegate)确实实现了一个方法,它必须返回一个有效值。如果是这种情况,class_addMethod() 并没有真正的帮助。大多数实现委托(delegate)的类将检查一次委托(delegate)是否实现了该方法,然后假设它永远执行,除非委托(delegate)发生更改。您可能会经常从事更换代表的业务,但沿着这条路走下去就会变得疯狂。

更好的答案可能是提出问题; 你想做什么?

关于iphone - 方法的条件实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1931362/

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