在 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 那样将两者结合起来说。
我正在寻找一种方法来声明委托方法的实现有条件地相互链接。我知道 @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 那样将两者结合起来说。