如何调配具有相同名称的方法(NSNotificationCenter postNotificationName)?
How to swizzle methods with identical names (NSNotificationCenter postNotificationName)?
我对方法调配相当陌生,我想用它来解决我遇到的问题,这可能是对 NSNotificationCenter 的错误调用的结果。为此,我想重新注销对 NSNotificationCenter 的 postNotification 方法的每次调用。我遇到的问题是有两个方法的名称开头相同(这里是它们可能会被调配的实现):
- (void) xxx_postNotificationName:(nonnull NSString *)notiifcationName object:(nullable id) obj {
[self xxx_postNotificationName:notiifcationName object:obj];
}
- (void) xxx_postNotificationName:(nonnull NSString *)notificatioName object:(nullable id)obj userInfo:(nullable NSDictionary *)userInfo {
[self xxx_postNotificationName:notificatioName object:obj userInfo:userInfo];
}
如何通过如下调用将它们识别为单独的选择器?
SEL originalSelector = ...
他们不会都有表格吗?
SEL originalSelector = @selector(postNotificationName:)
我错过了什么?
没有。方法的名称是postNotificationName:object:
和postNotificationName:object:userInfo:
,所以它们是不一样的。
我对方法调配相当陌生,我想用它来解决我遇到的问题,这可能是对 NSNotificationCenter 的错误调用的结果。为此,我想重新注销对 NSNotificationCenter 的 postNotification 方法的每次调用。我遇到的问题是有两个方法的名称开头相同(这里是它们可能会被调配的实现):
- (void) xxx_postNotificationName:(nonnull NSString *)notiifcationName object:(nullable id) obj {
[self xxx_postNotificationName:notiifcationName object:obj];
}
- (void) xxx_postNotificationName:(nonnull NSString *)notificatioName object:(nullable id)obj userInfo:(nullable NSDictionary *)userInfo {
[self xxx_postNotificationName:notificatioName object:obj userInfo:userInfo];
}
如何通过如下调用将它们识别为单独的选择器?
SEL originalSelector = ...
他们不会都有表格吗?
SEL originalSelector = @selector(postNotificationName:)
我错过了什么?
没有。方法的名称是postNotificationName:object:
和postNotificationName:object:userInfo:
,所以它们是不一样的。