我正在寻找一种方法来声明委托方法的实现有条件地相互链接。我知道标记特定方法的@required
和@optional
的方式。但是,我希望有一种方法可以根据需要标记方法,如果实现了另一种方法。这可能吗?
我喜欢做的事情是这样的:
考虑以下委托方法:
- (void) firstSuccessDelegateMethod;
- (void) firstErrorDelegateMethod;
- (void) secondSuccessDelegateMethod;
- (void) secondErrorDelegateMethod;
有没有办法宣布像
这样的东西如果实施firstSuccessDelegateMethod
,则需要firstErrorDelegateMethod
如果secondSuccessDelegateMethod
已实施,则需要secondErrorDelegateMethod
谢谢!
答案 0 :(得分:3)
可悲的是,这是不可能的,尽管你总是可以将两个委托方法合并为一个,例如,
- (void)delegateMethodWithResult:(id)result error:(NSError *)error
答案 1 :(得分:0)
这不可能在运行时要求委托,但可以在运行时动态添加/实现方法。check that here
因此,唯一可能的选择是在触发时需要firstSuccessDelegateMethod
并将firstErrorDelegateMethod
添加到目标类,但最简单的方法是将两者结合起来,就像@johnpatrickmorgan所说的那样。