如何在NSURLRequest类别中添加属性并实现getter和setter?

时间:2013-02-27 16:17:00

标签: ios objective-c

我们如何在NSURLRequest类别中添加属性并在NSURLRequest中实现getter并在NSMutableURLRequest中实现setter?

我想要做的是在NSMutableURLRequest中设置一些自定义属性并在UiWebView中加载它。我想要UIWebView上的所有请求,无论NSMutableURLRequest还是NSURLRequest都有这些自定义属性,我可以在自定义NSURLProtocol中访问它们。

2 个答案:

答案 0 :(得分:0)

  

我们如何在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

答案 1 :(得分:0)

向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

这样做而不是通过关联对象允许复制工作!