我创建了一个协议(protocol),要求类客户端实现一个方法。在客户端类中,我还需要执行此方法中定义的相同操作,而不仅仅是在委托(delegate)调用它时。我不认为复制粘贴代码是个好主意,但我也不知道直接在客户端类中调用此方法是否是一个好习惯。我在想也许委托(delegate)方法应该只由委托(delegate)调用。
我是否应该创建在委托(delegate)方法中调用的第三个方法以及何时需要它?或者,我可以直接调用委托(delegate)方法吗?
最佳答案
使用blocks
而不是delegates
来解决您的问题。 block 与委托(delegate)做同样的工作,只是它更干净,需要更少的管道工作(想想你必须在类和它们的委托(delegate)之间穿梭的所有那些实例变量/属性......在 block 中,所有信息都封装在 block 中),并且与 iOS/objective-c 社区的发展方向一致(您会发现许多高知名度的库正在发展以用 block 代替委托(delegate)和其他内容)。
如果您不熟悉 block 或者您发现它的古怪语法很烦人,here是一个用户友好的指南。
还有 here是一个很好的答案,它将基于 delegate
的解决方案与基于 block
的解决方案进行了比较,并说明了 block 解决方案如何比委托(delegate)解决方案更干净。
关于objective-c - 在objective-c中直接调用delegate的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18604180/