我创建了一个协议,要求类客户端实现一个方法。在客户端类中,我还需要执行此方法中定义的相同操作,而不仅仅是在委托调用它时。我不认为复制粘贴代码是个好主意,但我不知道在客户端类中直接调用此方法是否是一个好习惯。我在想,也许委托方法只能由代表调用。
我应该创建第三个方法,它在委托方法中调用,何时需要它?或者,我可以直接调用委托方法吗?
答案 0 :(得分:2)
使用blocks
代替delegates
来解决您的问题。块与委托做同样的工作,只是它更清洁,需要更少的管道工作(考虑所有那些实例变量/属性,你必须在类和它们的代理之间穿梭..在块中,所有信息都被封装在块中),以及与iOS / objective-c社区的发展方向一致(你会发现许多高知名度的图书馆正在逐步用代表委托和其他东西来代替)。
如果您对块不熟悉或者发现它的古怪语法很烦人,here是一个用户友好的指南。
同样here是一个很好的答案,它将基于delegate
的解决方案与基于block
的解决方案进行比较,并说明了块解决方案如何比委托解决方案更清晰。
答案 1 :(得分:1)
没有必要创建第三种方法,但这是一种很好的做法。
假设您需要对某种委托调用进行某些检查,那么您的代码将填充许多if-then-else语句。最好是重复但简单的代码而不是混乱的代码。