如何在URL加载期间“复制”NSURL?

时间:2015-01-26 00:29:11

标签: ios objective-c cocoa nsurl nsurlprotocol

我正在编写NSURL的子类(以及NSURLProtocol的合作子类)。我故意在URL对象上存储一个额外的数据属性,以便在URL加载中检索和使用。 (这只是一个实验;不要判断。)

但是,当我通过创建其中一个自定义URL对象然后尝试从中加载来测试类组合时......

NSData * data = [NSData dataWithContentsOfURL:myURL];

...我的URL协议交给实际的 NSURL实例进行检查,而不是我创建的实例。它的absoluteString是我所期望的 - 换句话说,加载内部已经将我的原始URL复制到一个新的 - 但它不是我的自定义子类,所以它缺少额外的属性。

请注意,我的NSURL子类正确覆盖了-copyWithZone:的NSCopying合规性,以及-initWithCoder:-encodeWithCoder:的{​​{1}}合规性。这应该确保任何制作我的类实例的浅或深副本的人都应该获得完整,正确的副本。但是在这个过程中没有调用这些方法。 (NSSecureCodingabsoluteStringpath等都不是。)

有人在没有调用我期望看到的任何方法的情况下“复制”我的URL(字符串)内容。我想另一个基础类可能绕过公共接口并访问私有/内部属性来执行此操作。

任何人都可以确认NSURL是否从根本上是不可继承的?或者如果我可能遗漏了什么?

0 个答案:

没有答案