2015-12-22 20 views

回答

2

如果您正在使用如下的AFNetworking:

AFHTTPSessionManager *sessionManager = [AFHTTPSessionManager manager]; 

NSURLSessionDataTask *task = [sessionManager GET:@"http://example.com/resources.json" parameters:nil success:^(NSURLSessionTask *task, id responseObject) { 
    NSLog(@"JSON: %@", responseObject); 
} failure:^(NSURLSessionTask *operation, NSError *error) { 
    NSLog(@"Error: %@", error); 
}]; 

可以使用

[task cancel]; 

,如果你正在使用AFNetworking如下:

AFHTTPRequestOperationManager *operationManager=[AFHTTPRequestOperationManager manager]; 
requestOperation=[operationManager GET:@"" parameters:nil success:^(AFHTTPRequestOperation * _Nonnull operation, id _Nonnull responseObject) { 

} failure:^(AFHTTPRequestOperation * _Nullable operation, NSError * _Nonnull error) { 

}]; 

可以使用

[requestOperation cancel]; 
+0

我用這個[operationQueue.sessionmanager取消]。這是正確的嗎?這是不行的。您可以請發送示例代碼。 –

0

您的方法很好。但在這裏我建議一些新的方法。當你打算打字那時候每個角色爲什麼要調用web服務並增加負載。請檢查以下建議。

  1. 如果您要檢查用戶名,您應該在至少寫3個字母后調用api。因爲只有在那之後,任何單詞都可以用作用戶名,否則這些是字符。這完全取決於您正在實施的功能要求。

  2. 只是等到用戶停止輸入,然後才調用web服務。在用戶正在連續輸入(直到持續一段時間)之前,取消先前的請求,使用下面的代碼調用Web服務。

[NSObject cancelPerformSelectorsWithTarget:self]; 
[self performSelector:@selector(sendSearchRequest) withObject:searchText afterDelay:0.1f];