2013-07-11 5 views
0

내 응용 프로그램이 아래의 코드 포인트에서 충돌합니다. 그건 단지 장치에, 시뮬레이터 응용 프로그램을 통해 잘 작동합니다. iOS 기기에서만 dispatch_async가 작동하지 않는 이유는 무엇입니까?

  • 파싱 데이터 (libcurl에 사용) 및 모델은 모델 일단
  • 개체 생성

    • 얻기 데이터 웹 서비스로부터 JSON 응답에서 : 여기
      dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0) 
             , ^(void) { 
      
              // do some time consuming things here 
              // perform task here which required to be run on separate thread/queue 
      
              CPPClass& ptr = CPPClass::GetInstance(); 
              ptr.SyncTrackingData([newObject primaryID]); 
      
              dispatch_async(dispatch_get_main_queue(), ^{ 
      
               // after completion of those thread tasks 
               // do some things here in the main queue 
               // for example: update UI controls, etc. 
      
               NSLog(@" Synchronization Done "); 
              }); 
             }); 
      

      은 앱이 메소드 실행을위한 흐름이고 개체가 생성되면 해당 데이터를 로컬 db에도 동기화해야합니다. 따라서 SyncTrackingData 메서드를 호출하여 해당 시나리오를 처리합니다. SyncTrackingData 방법에 관한

    :이 방법은 CPP 클래스 파일에서 사용할 수 있습니다, 그것은 저기 새 스레드를 생성하고 스레드를 사용하고, 응용 프로그램 데이터 (문서 디렉토리에서) 로컬 데이터베이스 파일에 저장되어지고있다.

    우리는이 메소드에 별도의 스레드를 사용하고 있습니다. 이미 Model 객체가 있기 때문에 뷰 데이터를 표시하고 데이터베이스 채우기를 백그라운드 프로세스로 수행 할 수 있기 때문입니다.

    어떤 이유 일 수 있습니다.

  • +0

    충돌이 어떻게 생깁니 까? 스택 추적이 있습니까? –

    +0

    아니요, 기기에서만 발생합니다. 그러므로 나는 갖고 있지 않습니다. – Mrunal

    +0

    기기에서 충돌 보고서를받을 수 있으며 많은 도움이됩니다. –

    답변

    1

    코드에서 컴파일러 경고를 찾았습니까?

    해당 코드에 컴파일러 경고가 없으면 코드의 다른 지점에 NSLog 문을 몇 개 더 뿌려야합니다. 그런 다음 기기가 Xcode가 실행되는 기기에 연결되어있는 동안 기기에서 앱을 실행합니다. 앱 실행 중에 콘솔 출력을 봅니다.

    사실, 장치가 연결된 후에 콘솔 출력을 볼 수 있습니다. 구성 도우미 창을 가져 와서 장치의 "장치 로그"를 클릭하면됩니다.

    +0

    나는 장치에서 충돌 로그를 얻었습니다. 여기를 확인하십시오 : stackoverflow.com/questions/17649616/... 제발 나를 도와 주거나 같은 제안을하십시오 - – Mrunal

    관련 문제