我们如何在 NSURLRequest 的类别中添加属性,并在 NSURLRequest 中实现 getter,在 NSMutableURLRequest 中实现 setter?
我想要做的是在 NSMutableURLRequest 中设置一些自定义属性并将其加载到 UiWebView 中。我想要来自 UIWebView 的所有请求,无论 NSMutableURLRequest 或 NSURLRequest 是否具有这些自定义属性,我可以在自定义 NSURLProtocol 中访问它们。
我们如何在 NSURLRequest 的类别中添加属性,并在 NSURLRequest 中实现 getter,在 NSMutableURLRequest 中实现 setter?
我想要做的是在 NSMutableURLRequest 中设置一些自定义属性并将其加载到 UiWebView 中。我想要来自 UIWebView 的所有请求,无论 NSMutableURLRequest 或 NSURLRequest 是否具有这些自定义属性,我可以在自定义 NSURLProtocol 中访问它们。
我们如何在 NSURLRequest 的类别中添加属性,并在 NSURLRequest 中实现 getter,在 NSMutableURLRequest 中实现 setter?
只是你会为任何其他课程做......
@interface NSURLRequest (MyCategory)
@property (nonatomic, assign) int foo;
@end
@implementation NSURLRequest (MyCatgeory)
- (int)foo
{
return 42;
}
- (void)setFoo:(int)f
{
otherVar = f;
}
@end
向 NSURLRequest 添加额外的属性是一种特殊情况,实现如下:
NSMutableURLRequest+JSONBody.h
@interface NSMutableURLRequest (JSONBody)
@property (nullable, copy, setter=mhf_setJSONBody:) id mhf_JSONBody;
@end
NSMutableURLRequest+JSONBody.m
@implementation NSMutableURLRequest (JSONBody)
-(id)mhf_JSONBody{
return [NSURLProtocol propertyForKey:NSStringFromSelector(@selector(mhf_JSONBody)) inRequest:self];
}
-(void)mhf_setJSONBody:(id)JSONBody{
[NSURLProtocol setProperty:JSONBody forKey:NSStringFromSelector(@selector(mhf_JSONBody)) inRequest:self];
}
@end
以这种方式而不是通过关联对象执行此操作可以让复制工作!