2012-07-27 63 views
2

我更新爲xcode 4.4(與蘋果LLVM編譯器4.0),並從那時起,當我嘗試在控制檯xcode和應用程序(在模擬器)塊用戶打印XML互動...我需要等待30秒或更長時間直到完成(我什麼都不能做)蘋果LLVM編譯器4.0凍結Xcode和應用程序時打印XML(NSLog)

我使用AFNetworking和TBXML,但問題不在於解析,因爲如果我刪除解析問題繼續。

因此,我嘗試NSOperationQueue,NSBlockOperation,大調度中央......沒有什麼,仍然凍結。

是因爲XML太大? (...我需要打印XML調試和測試的東西)

1°的請求和打印XML

- (void) doRequestPOST:(NSString*)URL params:(NSString*)params withSuccess:(void(^)(BOOL,id))successBlock{ 

(....) 

AFHTTPRequestOperation *op = [sharedAPI HTTPRequestOperationWithRequest:request success:^(AFHTTPRequestOperation *operation, id responseObject) { 

      NSString* xml = [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding]; 

      //>>>>>PROBLEM HERE<<<<< if i remove next line (nslog) the problem does not occur 
      NSLog(@"\n\nResponse \nURL :\n%@\nXML :\n%@\n \n",operation.request.URL,xml); 
      [xml release]; 

      TBXML * tbxml = [TBXML newTBXMLWithXMLData:responseObject error:nil]; 
      [self saveCookiesFromHTTPHeaderFields:[operation response] withTBXML:tbxml.rootXMLElement]; 

      if (successBlock) { 
       successBlock(TRUE,responseObject); 
      } 
} 

2º會詢問請求並解析「successBlock 響應(TRUE, responseObject);」

[self doRequestPOST:stringURL params:nil withSuccess:^(BOOL success, id response) { 

     if (success) { 

      //will parse response 

      [self.dictionaryCategoryContents setObject:[Parser parseVodContent:response] forKey:idCategory]; 
      if (responseBlock){ 
       responseBlock (YES,[dictionaryCategoryContents objectForKey:idCategory]); 
      } 

     }else { 

      if (responseBlock){ 
       responseBlock (NO,response); 
      } 
     } 
    }]; 
+0

XML有多大? (log'[responseObject length]')。 – trojanfoe 2012-07-27 11:10:41

+0

[響應對象長度] 44419 – silvaric 2012-07-27 11:15:18

回答

2

這個問題似乎是由4.4.1固定在2012/8/7釋放。

+0

是的,那真的:)謝謝 – silvaric 2012-08-08 15:29:28

+0

固定對我也:) – banDedo 2012-08-08 18:38:45

1

如果需要日誌調試(或錯誤報告)的響應,那麼我認爲你應該寫responseObject在高速緩存目錄中的文件(或其他等效文件夾的iOS下,如果是O/S)。然後你可以訪問這個文件來看看響應是什麼。唯一需要克服的問題是如何避免文件夾過大;也許應用程序啓動時或定期刪除所有以前編寫的文件。

您可以使用[NSData writeToURL:atomically:]方法編寫響應,這會更快,因爲它不需要先轉換爲字符串。

+0

沒有工作:(,我已經嘗試writeToURL或writeToFile ..用stringWithContentsOfURL加載,並且問題繼續 – silvaric 2012-07-27 12:02:21

+0

你是說,當你寫'responseObject'而不將它轉換爲字符串時,它仍然凍結? – trojanfoe 2012-07-27 12:07:32

+0

嗡嗡聲...可能我做錯了,所以我定義URL的路徑和寫入[數據XML writeToURL:storeUrl原子:是]我加載後[NSString stringWithContentsOfURL:storeUrl編碼:NSASCIIStringEncoding錯誤:&錯誤]或[NSData dataWithContentsOfURL :storeUrl]但仍然凍結在兩種方式 – silvaric 2012-07-27 12:14:44

2

我目前遇到同樣的問題。每當我NSLog一個大字符串,我只看到XCode和模擬器掛起(沙灘球)。但是如果我等2-3分鐘,應用程序將繼續。

似乎與4.4 XCode的一個bug,和其他開發者報告了相同的行爲: http://openradar.appspot.com/11972490

+0

謝謝!的信息,這是完全一樣的問題... – silvaric 2012-08-01 15:23:34