我是新来的MKNetworkKit
,但我已经能够将它添加到我的项目中,并且除了处理可达性更改外,它运行良好。
情况如下:
- 我禁用 WiFi 并运行应用程序。
- 即使没有可达性,我通过从我的子类
POST
创建一个来请求(使用)一些数据。在请求数据之前,该操作被设置为可冻结(根据Mugunth Kumar 的文档)。MKNetworkOperation
MKNetworkEngine
- 启用 WiFi 后,调用
checkAndRestoreFrozenOperations
inMKNetworkEngine
并检测到有一个挂起的操作(创建的没有可达性的操作),它试图入队。 - 在那之后,我的
onCompletion
块永远不会被调用。
关于冻结操作+可达性有什么我不明白的MKNetworkKit
吗?冻结是否仅适用于请求开始后可达性发生变化的操作?或者我应该实现自己的可达性更改块?
这是我的MKNetworkEngine
子类中创建操作并启动请求的代码。请注意,不相关的代码已被禁止。
NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObject:@"value" forKey:@"param"];
MKNetworkOperation *op = [self operationWithPath:MYPATH
params:params
httpMethod:@"POST"];
[op setFreezable:YES];
[op onCompletion:^(MKNetworkOperation *completedOperation) {
// ...
// Here is where I process response and send the result to my completion block
// It's called when WiFi is available, but not called otherwise.
// ...
} onError:^(NSError *error) {
// It's called when WiFi is available, but not called otherwise.
DLog(@"Some error");
}];
[self enqueueOperation:op];
return op;