[英](iPhone) AFNetworking Using same shared client for different operations?
Basically i browsed stack overflow for a while to get a hang of AFNetworking framework. 基本上我浏览堆栈溢出一段时间以获得AFNetworking框架的挂起。 I decided to use AFHTTPClient, by making singleton class that extends AFHTTPClient.
我决定使用AFHTTPClient,通过制作扩展AFHTTPClient的单例类。 Some of the code that I have seen goes like this:
我见过的一些代码是这样的:
(InspectionClient*) sharedClient {
static InspectionClient *client = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
client = [[InspectionClient alloc] initWithBaseURL: [NSURL URLWithString:kServerName]];
});
return client;
} }
- (id) initWithBaseURL:(NSURL *)url {
self = [super initWithBaseURL:url];
if (self) {
// register operation class
[self registerHTTPOperationClass:[AFJSONRequestOperation class]];
}
return self;
}
I have noticed that when creating new instance of client, you must register operation class. 我注意到在创建新的客户端实例时,必须注册操作类。 And that seems ok, if you just wonna send JSON files.
这似乎没问题,如果你只是想发送JSON文件。 But i would like for my client to be more universal, so he can post pictures, and JSON to server.
但我希望我的客户能够更加通用,因此他可以将图片和JSON发布到服务器上。 For this do I need to un register operation class and register new class?
为此,我需要取消注册操作类并注册新类吗?
I'm using a subclass of AFHTTPClient
and I don't register the operation class in the instance. 我正在使用
AFHTTPClient
的子类,我没有在实例中注册操作类。 You can find more information about the usage of registerHTTPOperationClass
here . 您可以在此处找到有关
registerHTTPOperationClass
用法的更多信息。
I also recommend reading the comments in the AFNetworking
source to understand the usage of the register operation class: 我还建议阅读
AFNetworking
源中的注释,以了解注册操作类的用法:
/**
Attempts to register a subclass of `AFHTTPRequestOperation`,
adding it to a chain to automatically generate request operations from a
URL request.
@param operationClass The subclass of `AFHTTPRequestOperation` to register
@return `YES` if the registration is successful, `NO` otherwise.
The only failure condition is if `operationClass` is not a subclass of
`AFHTTPRequestOperation`.
@discussion When `enqueueHTTPRequestOperationWithRequest:success:failure`
is invoked, each registered class is consulted in turn to see if it can
handle the specific request. The first class to return `YES` when sent a
`canProcessRequest:` message is used to create an operation using
`initWithURLRequest:` and do `setCompletionBlockWithSuccess:failure:`.
There is no guarantee that all registered classes will be consulted.
Classes are consulted in the reverse order of their registration.
Attempting to register an already-registered class will move it to the
top of the list.
*/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.