Sea*_*ser 2 objective-c nsurl ios objective-c-category
分类问题:
我想在NSURL上放置一个类别,在执行其他操作时,会覆盖查询方法,以便能够从不符合RFC 1808的URL提供查询字符串.在我的类别中做这样的事情是否合法:
- (NSString *)query //real NSURL method
{
if (stringIsRFC1808) //want to get the default implementation
return [super query];
else
return somethingElse; //want to get my custom implementation
}
Run Code Online (Sandbox Code Playgroud)
谢谢
小智 6
代码按原样无效,因为您正在使用[super query]- 这并不能完全按照您的预期执行.类别不是超类.这里[super query]将尝试调用- [NSObject query]- BOOM无法识别的选择器错误.如果你使用类别来扩展一个类,你将无法调用原始方法 - 如果你不需要这个功能,那么使用类别就没问题,如果你确实需要它,你应该考虑子类化,(甚至更好的基础对象组合!)或使用Objective-C运行时执行方法调配 - 这样您就可以访问该方法的原始实现.
| 归档时间: |
|
| 查看次数: |
317 次 |
| 最近记录: |