gpt4 book ai didi

objective-c - 使用类别覆盖 NSURL 方法

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:56:47 24 4
gpt4 key购买 nike

类别问题:

我想在 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
}

谢谢

最佳答案

原样的代码无效,因为您使用的是 [super query] - 它并没有完全按照您的预期执行。类别不是父类(super class)。这里 [super query] 将尝试调用 - [NSObject query] - BOOM 无法识别的选择器错误。如果您使用类别来扩展类,您将无法调用原始方法 - 如果您不需要此功能,那么使用类别就可以了,如果您确实需要它,但是,您应该考虑子类化,(甚至更好的基础对象组合!)或使用 Objective-C 运行时执行 method swizzling - 这样您就可以访问该方法的原始实现。

关于objective-c - 使用类别覆盖 NSURL 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12337763/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com