我需要修改 NSURLResponse 中的响应头。这可能吗?

最佳答案

我刚刚和一个 friend 谈论这个。我的建议是编写一个 NSURLResponse 的子类。沿着这些路线的东西:

@interface MyHTTPURLResponse : NSURLResponse { NSDictionary *myDict; }
- (void)setAllHeaderFields:(NSDictionary *)dictionary;
@end

@implementation MyHTTPURLResponse
- (NSDictionary *)allHeaderFields { return myDict ?: [super allHeaderFields]; }
- (void)setAllHeaderFields:(NSDictionary *)dict  { if (myDict != dict) { [myDict release]; myDict = [dict retain]; } }
@end

如果您正在处理一个不是您制作的对象,您可以尝试使用 object_setClass 来调整类。但是我不知道这是否会添加必要的实例变量。如果您可以支持足够新的 SDK,您也可以使用 objc_setAssociatedObject 并将其全部放入一个类别中。

关于nsurlconnection - 可变 NSHTTPURLResponse 或 NSURLResponse,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2096651/

10-12 14:43