【发布时间】:2012-11-20 21:24:13
【问题描述】:
Apple 在NSMutableURLRequest 上的 iOS 文档说:
NSURLConnection 对每个 NSMutableURLRequest 对象进行深拷贝 传递给它的初始化器之一。
这是如何实现的?我没有看到任何记录在案的方式来执行 NSMutableURLRequest 对象的深层复制。逐字段复制不够好,因为NSMutableURLRequest 可以被子类化。
我的用例:我正在为构建在 http 之上的自定义协议实现 NSURLProtocol。我的 NSURLProtocol 实现将执行其自定义内容,然后使用 NSURLConnection 和稍微修改的 NSURLRequest。
【问题讨论】:
-
NSMutableURLRequest 实现了 NSCopying 和 NSMutableCopying 协议,你可能应该使用 copy 方法来创建深拷贝
-
@phix23:
copy通常不执行深层复制。 -
我测试了 NSURLConnection 发现它根本没有创建请求的副本。我使用属性 originalRequest 和 currentRequest 并使用 NSLog(@"request: %p", request) 记录它们。
-
@phix23 它只复制可变变体。你测试过哪个?在我的测试中,它创建了我的可变请求的不可变副本。
标签: ios cocoa nsurlrequest nsurlprotocol