2012-04-18 26 views
0

我有以下代碼從PHP腳本中獲取一些數據。我發現它阻止了界面,所以進度指示器不會旋轉。 是否有一種簡單的方法將其發送到後臺,以便UI可以自由地執行任何需要的操作?我的印象是,使用塊會達到這個目標,但我顯然是錯誤的(一次只學習Obj-C!)AFHTTPRequestOperation塊UI

謝謝!

NSDictionary *params = [NSDictionary dictionaryWithObjectsAndKeys: 
         self.user.username, @"username", 
         self.user.password, @"password", 
         nil]; 
AFHTTPClient *client = [[AFHTTPClient alloc] initWithBaseURL: 
         [NSURL URLWithString:@"http://domain.com"]]; 

    // Show animated progress indicator, etc  
[self enbleLoadingState:YES]; 

[client postPath:@"/en/api/login" parameters:params success:^(AFHTTPRequestOperation *operation, id response) { 
    [self enbleLoadingState:NO]; 
    // Do stuff 

} failure:^(AFHTTPRequestOperation *operation, NSError *error) { 
    [self enbleLoadingState:NO]; 
    // Show error 
}]; 
+0

此代碼應該工作,請求在後臺加載。問題必須在別處。 – Felix 2012-04-18 19:01:43

+0

更好的子類AFHTTPClient並使其成爲單例類 – Felix 2012-04-18 19:05:25

+0

@ phix23但它不起作用:(在我的PHP腳本中,我做了一個等待5秒的睡眠(5),並且進度指示器停留在那裏,而且我不能點擊UI上的任何其他按鈕,我使用的是最新的Xcode和iOS SDK,這發生在模擬器以及第一代iPad上,我正在使用ARC ...我想不出任何東西我會嘗試繼承客戶端,就像你說的一樣(我想我在某處看到了一個例子) – Julian 2012-04-18 20:33:24

回答

0

此代碼應該工作,請求在後臺加載。問題一定在其他地方。 我不知道在主線程上花費的時間,可能在enbleLoadingState:?啓動請求的方法應該立即返回。通過在方法的開始和結束插入NSLog並在成功塊內部進行測試。成功塊中的NSLog應該最後打印出來。

相關問題