2013-04-02 3 views
1

동기화 알고리즘을 실행하는 앱이 있습니다.디버그와 릴리스의 차이점

디버그 모드에서 (내 iPhone 5에) 빌드하고 실행하면 모두 정상적으로 작동합니다.

그러나 내가 보관하고 TestFlight에 업로드 한 다음 동일한 iPhone 5에 다운로드하고 설치하면 동기화의 일부가 작동하지 않습니다.

충돌이 발생하지 않거나 아무 것도 없으며 동기화 부분 만 실행됩니다.

바보 같은 점은 실행되지 않는 단일 함수 안에 코드 줄이 있다는 것입니다. 그 함수의 다른 모든 함수가 실행됩니다.

어디서부터 시작해야할지 모르겠습니다. Mindaugas의 도움으로

편집

나는 이유를 정확하게 코드의 비트가 실행되고 있지 않은 것으로 나타났습니다.

기능은 ... 나는이 최적화 레벨을 설정

- (void)uploadData 
{ 
    NSLog(@"pushing photos"); 
    for (StoredImage *storedImage in self.recordArray) { 
     NSURL *url = [self urlForImageUpload:storedImage]; 

     if (url == nil) { 
      continue; 
     } 

     ImageUploadOperation *uploader = [[OJFImageUploadOperation alloc] init]; 
     uploader.image = storedImage.image; 
     uploader.url = url; 
     [self.recordQueue addOperation:uploader]; 
    } 
} 

에 "가장 빠른, 가장 작은은"그것은이 기능의 최대의 순서를 혼란에 보인다.

입력하면 배열에 단일 개체가 있음을 알 수 있으며 루프에 입력됩니다. 그런 다음 첫 번째 줄인 NSURL *url = [self urlForImageUpload:storedImage];을 완전히 건너 뛰고 끝까지갑니다. 업로드가 실제로 시작되지 않고 다음 항목으로 이동합니다.

+0

내 생각은 NSAssert 메서드 내부에 호출이 있으면 no-op로 변환됩니다. – borrrden

+0

신청서에 그러한 작업을 수행 할 권한이 있습니까? –

+0

현재 NSAssert를 사용하고 있지 않습니다. 나는 어떤 TestFlight 체크 포인트를 추가하여 정확하게 어떤 비트가 실행되고 있지 않은지 알아 내고있다. – Fogmeister

답변

9

릴리스는 기본적으로 구성 그래서 몇 가지 코드 라인을 최적화 할 수 있습니다, 디버그 구성과 다른 코드 최적화를 사용하고 생략

당신은 확인할 수 있습니다

/구성 변경 대상에서 -> 빌드 설정 -> 최적화 레벨

검색
+0

감사! 이제는 디버그 최적화 수준을 "가장 빠름 - 가장 작음"으로 변경하여 복제 할 수있었습니다. 그러나, 나는 그것이 왜 효과가 있는지 전혀 모른다? – Fogmeister

+0

그게 무슨 최적화입니다. 컴파일러가 특정 코드 행이 출력을 생성하지 않으며 다른 부분에 영향을 미치지 않는다고 생각하면 다른 부분에 영향을 미치지 않는다고 생각합니다. 다른 사람들이이 주제에 대해 자세히 설명 할 수 있습니다. – Mindaugas

+0

아, 다시 한 번 감사드립니다. 글쎄, 나는 더 깊은 표정을 지었고, 지금은 (당신의 도움으로) 어떤 비트가 실행되고 있지 않은지 정확하게 알고 있습니다. 질문에 추가하겠습니다. – Fogmeister

관련 문제