2015-02-28 6 views
4

Я разрабатываю приложение iOS с помощью Swift. Приложение сосредоточено вокруг Apple Maps. Я новичок в разработке iOS. Я использую Fabric.io, чтобы бета-версию распространить приложение и получить отчеты о сбоях. Тем не менее, многие отчеты о сбоях, которые я получаю, не очень полезны. Иногда в отчетах о сбоях указывается только способ, в котором произошел сбой, но не дает мне подсказки, почему он разбился. Я пытаюсь понять, является ли это стандартным, или я должен переключиться на другую службу отчетов о сбоях.Unhelpful Swift отчеты о сбоях iOS

Вот пример таких отчетов о сбоях:

Crashed: com.apple.main-thread 
EXC_BREAKPOINT UNKNOWN at 0x00000001000a68f8 

Thread : Crashed: com.apple.main-thread 
0 <APP NAME>      0x00000001000a68f8 <APP NAME>.MapViewController.(getMapAnnotations (<APP NAME>.MapViewController) -> (Swift.Double, long : Swift.Double) ->()).(closure #1).(closure #1) (MapViewController.swift) 
1 <APP NAME>      0x00000001000a6570 <APP NAME>.MapViewController.(getMapAnnotations (<APP NAME>.MapViewController) -> (Swift.Double, long : Swift.Double) ->()).(closure #1).(closure #1) (MapViewController.swift) 
2 libdispatch.dylib    0x0000000192ed13ac _dispatch_call_block_and_release + 24 
3 libdispatch.dylib    0x0000000192ed136c _dispatch_client_callout + 16 
4 libdispatch.dylib    0x0000000192ed5980 _dispatch_main_queue_callback_4CF + 932 
5 CoreFoundation     0x00000001820f9fa4 __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 12 
6 CoreFoundation     0x00000001820f804c __CFRunLoopRun + 1492 
7 CoreFoundation     0x00000001820250a4 CFRunLoopRunSpecific + 396 
8 GraphicsServices    0x000000018b1bf5a4 GSEventRunModal + 168 
9 UIKit       0x0000000186956aa4 UIApplicationMain + 1488 
10 <APP NAME>      0x00000001000f1914 main (AppDelegate.swift:16) 
11 libdyld.dylib     0x0000000192efaa08 start + 4 

Вот определение метода метода, где происходит ошибка:

func getAnnotations(lat: Double, long: Double){ // ignore the lat long arguments 

    var apiWrapper = apiWrapper() 

    apiWrapper.search(completionHandler: {(error: NSError?, mediaElements: [MediaElement]?) in 
     if error == nil { 
      dispatch_async(dispatch_get_main_queue(), { 
       self.myMapView!.removeAnnotations(self.myMapView!.annotations) 
       self.mediaAnnotations = [] 
       for m in mediaElements! { 
        var annotation = CustomAnnotation(lat: m.lat,long: m.long, mediaTuple: (media.url, media.type)) 
        self.mediaAnnotations.append(annotation) 
       } 
       self.reorganizeAnnotations(self.mediaAnnotations) 
      }) 
     } 

    }) 
} 
+1

Почему бы вам просто не опубликовать код, который разбивает ваше приложение? –

+1

Забыл об этом :) хотя мой вопрос заключается не столько в получении помощи для этой конкретной ошибки, сколько о том, почему отчет о сбое не очень полезен (то есть не сообщается номер строки, где произошел сбой или причина) – Anthony

+0

По моему опыту, самой распространенной причиной этого сбоя является то, что у вас есть принудительное приведение ('foo as SomeClass'), но' foo' на самом деле не является классом. –

ответ

0

Это отчет о сбое скомпилированного кода. То, что вы видите, это трассировка стека. Я не уверен, на каких языках вы знакомы, но я предполагаю что-то вроде python, где это интерпретируемый язык, и ваша трасса дает номера строк и т. Д.

Если бы это было так быстро, также означает, что людям было бы намного проще перепроектировать ваш скомпилированный код.

+0

Хорошо. Поэтому я понимаю, почему я, например, не получал номера строк, но нормально ли, что он даже не сообщает, что вызвало крах? (например, говоря, что я попытался принудительно развернуть опцию с нулевым значением, если это было так) – Anthony

+0

В отчете о сбое нет. В этот момент это скомпилированный код. Вы не разворачиваете опционально, делая то, что было оптимизировано до того момента, когда оно было скомпилировано. Если вы хотите описать отладочную информацию, вам нужно запустить ее в режиме отладки. –

+0

И я сказал, что из моего понимания вы можете получить такие вещи, как номера строк, которые вызвали крах, символизируя журналы сбоев. И фактически, в некоторых отчетах о сбоях, которые я возвращаю, я вижу номера строк. – Anthony

Смежные вопросы