在 iOS 中声明条件委托方法

Declare conditional delegate methods in iOS

我正在寻找一种方法来声明委托方法的实现有条件地相互链接。我知道 @required@optional 标记特定方法的方式。但是我希望有一种方法可以根据需要标记一个方法,如果另一个方法被实现的话。这可能吗?

我喜欢做的事情是这样的:

考虑以下委托方法:

- (void) firstSuccessDelegateMethod;
- (void) firstErrorDelegateMethod;
- (void) secondSuccessDelegateMethod;
- (void) secondErrorDelegateMethod;

有没有办法声明类似

的东西

如果实施firstSuccessDelegateMethod,则需要firstErrorDelegateMethod 如果实施 secondSuccessDelegateMethod,则需要 secondErrorDelegateMethod

谢谢!

遗憾的是,这是不可能的,尽管您始终可以将两个委托方法合并为一个,例如,

- (void)delegateMethodWithResult:(id)result error:(NSError *)error 

在运行时需要委托是不可能的,但可以在运行时动态 add/implement 方法.. check that here

因此,唯一可能的选择是要求 firstSuccessDelegateMethod 并在触发时将 firstErrorDelegateMethod 添加到目标 class,但最简单的方法是像 @johnpatrickmorgan 那样将两者结合起来说。