2012-07-27 2 views
2

xcode 4.4 (Apple LLVM 컴파일러 4.0 사용)로 업데이트 한 후 xcode 및 app (시뮬레이터에서) 사용자를 차단하여 콘솔에서 XML을 인쇄하려고 할 때 상호 작용 ... 나는 끝날 때까지 30 초 이상 기다려야합니다. (아무 것도 할 수 없습니다)Apple LLVM 컴파일러 4.0 인쇄 XML (NSLog)

AFNetworking과 TBXML을 사용하고 있습니다.하지만 구문 분석을 제거하면 문제가 계속됩니다. 문제가 계속됩니다. .

그래서 NSOperationQueue, NSBlockOperation, 그랜드 디스패치 센터를 시도해보십시오 ... 그리고 아무 것도 여전히 멈춰 있습니다.

XML이 너무 커서 때문입니까 ??? 요청에 대해 물어 TRUE (successBlock "에서 응답을 구문 분석

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 º (... 내가 디버그 및 테스트 것들에 인쇄 XML이 필요합니다) 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의 크기는 얼마입니까? (로그'[responseObject length]'). – trojanfoe

+0

[responseObject length] 44419 – silvaric

답변

2

이 문제는 4.4.1에 의해 8/7/2012에 발표 해결 될 것입니다.

+0

예, 그 사실 :) 감사합니다 – silvaric

+0

나를 위해 고정 너무 :) – banDedo

1

당신은 로그 (보고 또는 오류) 디버깅에 대한 응답 나는 당신이 (캐시 디렉토리에있는 파일 또는 해당 폴더는 아이폰 OS에서 무엇이든, 만약 그를 responseObject를 작성해야 생각해야하는 경우 O/S입니다.) 그런 다음이 파일에 액세스하여 응답이 무엇인지 확인할 수 있습니다. 그런데 극복해야 할 유일한 문제는 폴더가 너무 커지지 않도록하는 것입니다. 앱이 시작될 때 또는 일정한 간격으로 이전에 작성된 파일을 모두 삭제하십시오.

[NSData writeToURL:atomically:] 메서드를 사용하여 응답을 작성할 수 있으며, 먼저 문자열로 변환 할 필요가 없기 때문에 더 빠릅니다.

+0

did not work :(이미 writeToURL 또는 writeToFile을 사용했습니다. stringWithContentsOfURL을 사용하여로드하십시오. 문제가 계속 발생합니다. – silvaric

+0

'responseObject'를 문자열로 변환하지 않고도 작성하면 여전히 고정되어 있습니다. – trojanfoe

+0

hum ... 아마 내가 잘못하고있어, 그래서 URL에 경로를 정의하고 [NSString stringWithContentsOfURL : storeUrl 인코딩 : NSASCIIStringEncoding 오류 : & 오류] 또는 [NSData dataWithContentsOfURL]로로드 한 후 [dataXML writeToURL : storeUrl atomically : YES] : storeUrl] 여전히 두 가지 방식으로 모두 고정되어 있습니다. – silvaric

2

현재 동일한 문제가 발생합니다. NSLog 큰 문자열 때마다, 난 그냥 XCode 및 시뮬레이터 중단 (beachball) 참조하십시오. 하지만 2 ~ 3 분 정도 기다려야 앱이 진행됩니다.

은 엑스 코드 4.4에 버그가있는 것 같습니다 및 기타의 devs 같은 행동을보고 : 이 http://openradar.appspot.com/11972490

+0

감사합니다! 정보를 위해, 그것은 정확히 같은 문제입니다 ... – silvaric

관련 문제