2015-11-06 17 views
5

Uygulamam Xcode aracılığıyla hata ayıklama modunda iyi çalışıyordu, ancak TestFlight aracılığıyla indirildiğinde, bu hatayla kilitleniyor: EXC_BAD_ACCESS KERN_INVALID_ADDRESS 0x000200013f7b9e78.EXC_BAD_ACCESS KERN_INVALID_ADDRESS kilitlenme

Bu satırda çöküyor. Muhtemelen ilgili olan bu yığın izinde specialized Array.withUnsafeMutableBufferPoint görüyorum. Swift 1.3 olarak

self.array.sortInPlace. { 
       (($0 as Dictionary<String, AnyObject>)["time"] as? String) > (($1 as Dictionary<String, AnyObject>)["time"] as? String) 
      } 

Ben sort kullanıyordum ve şimdi Swift 2'de ben sortInPlace kullanıyorum. Bunun bir fark yaratıp yaratmadığından emin değilim, ancak sort sonucunun değişmez olduğu için çağrılmadığını biliyorum.

Thread : Crashed: com.apple.main-thread 
    0 libswiftCore.dylib    4302688056 _swift_retain_(swift::HeapObject*) + 8 
    1 App       4295962040 specialized LiveFeedViewController.(viewDidLoad(LiveFeedViewController) ->() ->()).(closure #3).(closure #1) (LiveFeedViewController.swift) 
    2 App       4295785356 specialized thunk (LiveFeedViewController.swift) 
    3 App       4295953880 specialized _siftDown<A where ...> (inout A, A.Index, Range<A.Index>, inout (A.Generator.Element, A.Generator.Element) -> Bool) ->() (LiveFeedViewController.swift) 
    4 App       4295952448 specialized _heapSort<A where ...> (inout A, Range<A.Index>, inout (A.Generator.Element, A.Generator.Element) -> Bool) ->() (LiveFeedViewController.swift) 
    5 App       4295938144 specialized _introSortImpl<A where ...> (inout A, Range<A.Index>, inout (A.Generator.Element, A.Generator.Element) -> Bool, Int) ->() (LiveFeedViewController.swift) 
    6 App       4295938120 specialized _introSortImpl<A where ...> (inout A, Range<A.Index>, inout (A.Generator.Element, A.Generator.Element) -> Bool, Int) ->() (LiveFeedViewController.swift) 
    7 App       4295938120 specialized _introSortImpl<A where ...> (inout A, Range<A.Index>, inout (A.Generator.Element, A.Generator.Element) -> Bool, Int) ->() (LiveFeedViewController.swift) 
    8 App       4295938120 specialized _introSortImpl<A where ...> (inout A, Range<A.Index>, inout (A.Generator.Element, A.Generator.Element) -> Bool, Int) ->() (LiveFeedViewController.swift) 
    9 App       4295938120 specialized _introSortImpl<A where ...> (inout A, Range<A.Index>, inout (A.Generator.Element, A.Generator.Element) -> Bool, Int) ->() (LiveFeedViewController.swift) 
    10 App       4295938120 specialized _introSortImpl<A where ...> (inout A, Range<A.Index>, inout (A.Generator.Element, A.Generator.Element) -> Bool, Int) ->() (LiveFeedViewController.swift) 
    11 App       4295938120 specialized _introSortImpl<A where ...> (inout A, Range<A.Index>, inout (A.Generator.Element, A.Generator.Element) -> Bool, Int) ->() (LiveFeedViewController.swift) 
    12 App       4295938120 specialized _introSortImpl<A where ...> (inout A, Range<A.Index>, inout (A.Generator.Element, A.Generator.Element) -> Bool, Int) ->() (LiveFeedViewController.swift) 
    13 App       4295938120 specialized _introSortImpl<A where ...> (inout A, Range<A.Index>, inout (A.Generator.Element, A.Generator.Element) -> Bool, Int) ->() (LiveFeedViewController.swift) 
    14 App       4295938120 specialized _introSortImpl<A where ...> (inout A, Range<A.Index>, inout (A.Generator.Element, A.Generator.Element) -> Bool, Int) ->() (LiveFeedViewController.swift) 
    15 App       4295960640 specialized specialized MutableCollectionType<A where ...>.sortInPlace<A where ...>((A.Generator.Element, A.Generator.Element) -> Bool) ->() (LiveFeedViewController.swift) 
    16 App       4295730388 _TPA__TTSg5GSaGVSs10DictionarySSPSs9AnyObject___GSaGS_SSPS0____Ss21MutableCollectionTypeSs_GVSs17IndexingGeneratorGSaGS_SSPS0_____GS2_GSaGS_SSPS0_____Ss13GeneratorTypeSs_GS_SSPS0____SiSiSs21RandomAccessIndexTypeSs_SiSiSs18_SignedIntegerTypeSs_SiSiSs33_BuiltinIntegerLiteralConvertibleSs_SiSiSs16SignedNumberTypeSs_SiSiS6_Ss_Si_GVSs10ArraySliceGS_SSPS0____GS8_GS_SSPS0____Ss9IndexableSsGS8_GS_SSPS0____Ss12SequenceTypeSs_GS2_GS8_GS_SSPS0_____GS2_GS8_GS_SSPS0_____S3_Ss_GS_SSPS0____SiSiSs16ForwardIndexTypeSs_SiSiS5_Ss_SiSiS6_Ss_Si_GS8_GS_SSPS0_____GS_SSPS0____GS_SSPS0______TFFeRq_Ss21MutableCollectionTypeqq_Ss16MutableIndexable5IndexSs21RandomAccessIndexType_SsS_11sortInPlaceuRq_S_qq_S0_5IndexS1__FRq_FFTqqq_Ss14CollectionType9GeneratorSs13GeneratorType7Elementqqq_S2_9GeneratorS3_7Element_SbT_U_FTGVSs20UnsafeMutablePointerQQQPS_9Generator7Element_Si_T_ (LiveFeedViewController.swift) 
    17 App       4295730548 _TPA__TTSg5GSaGVSs10DictionarySSPSs9AnyObject___GSaGS_SSPS0____Ss21MutableCollectionTypeSs_GVSs17IndexingGeneratorGSaGS_SSPS0_____GS2_GSaGS_SSPS0_____Ss13GeneratorTypeSs_GS_SSPS0____SiSiSs21RandomAccessIndexTypeSs_SiSiSs18_SignedIntegerTypeSs_SiSiSs33_BuiltinIntegerLiteralConvertibleSs_SiSiSs16SignedNumberTypeSs_SiSiS6_Ss_Si_GVSs10ArraySliceGS_SSPS0____GS8_GS_SSPS0____Ss9IndexableSsGS8_GS_SSPS0____Ss12SequenceTypeSs_GS2_GS8_GS_SSPS0_____GS2_GS8_GS_SSPS0_____S3_Ss_GS_SSPS0____SiSiSs16ForwardIndexTypeSs_SiSiS5_Ss_SiSiS6_Ss_Si_GS8_GS_SSPS0_____GS_SSPS0____GS_SSPS0______TTRGRq_Ss21MutableCollectionTypeqq_Ss16MutableIndexable5IndexSs21RandomAccessIndexType_XFo_dGVSs20UnsafeMutablePointerqqq_Ss14CollectionType9GeneratorSs13GeneratorType7Element_dSi_dT_zoPSs9ErrorType__XFo_dGS2_qqq_S3_9GeneratorS4_7Element_dSi_iT_zoPS5___ (LiveFeedViewController.swift) 
    18 App       4295730716 _TPA__TTSg5GVSs10DictionarySSPSs9AnyObject___T____TFFSa42_withUnsafeMutableBufferPointerIfSupportedu__rFRGSaq__FzFzTGVSs20UnsafeMutablePointerq__Si_qd__GSqqd___U_FzRGVSs26UnsafeMutableBufferPointerQd___Q_ (LiveFeedViewController.swift) 
    19 App       4295954668 specialized Array.withUnsafeMutableBufferPointer<A><B>((inout UnsafeMutableBufferPointer<A>) throws -> B) throws -> B (LiveFeedViewController.swift) 
    20 App       4295959880 specialized specialized MutableCollectionType<A where ...>.sortInPlace<A where ...>((A.Generator.Element, A.Generator.Element) -> Bool) ->() (LiveFeedViewController.swift) 
    21 App       4295895596 LiveFeedViewController.(viewDidLoad(LiveFeedViewController) ->() ->()).(closure #3) (LiveFeedViewController.swift:1862) 
    22 libdispatch.dylib    6875551464 _dispatch_call_block_and_release + 24 
    23 libdispatch.dylib    6875551400 _dispatch_client_callout + 16 
    24 libdispatch.dylib    6875573680 _dispatch_main_queue_callback_4CF + 1844 
    25 CoreFoundation     6518931960 __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 12 
    26 CoreFoundation     6518923360 __CFRunLoopRun + 1628 
    27 CoreFoundation     6518066336 CFRunLoopRunSpecific + 384 
    28 GraphicsServices    6704955528 GSEventRunModal + 180 
    29 UIKit       6609391612 UIApplicationMain + 204 
    30 App       4296344512 main (AppDelegate.swift:23) 
    31 libdyld.dylib     6875752632 start + 4 

Update:

Bu Swift 2'deki tüm olduğu ve dizi var array = [[String:AnyObject]]() olarak ilan sözlüklerde bir dizidir. Bunun gibi bir dizi sözlük ekleyerek doldurulur.

self.dict["foo"] = 0 
self.dict["bar"] = "dog" 
self.array.append(self.dict) 

Benim endişem onun dispatch_group_notify; dispatch_group_leave s dizisinde bekliyor. Bununla bir ilgisi olabilir mi? Yani şuna benzer: UPDATE kodu İlişkin

dispatch_group_notify(group, queue) {() -> Void in 

     self.array.sortInPlace { 
      (($0["foo"] as? Int) > (($1)["foo"] as? Int)) 
     } 
} 
+0

Peki bu dizi nedir, nasıl bildirilir, nasıl doldurulur, içinde ne var? – matt

+0

@matt güncellendi. Daha fazla bilgiye ihtiyacın olursa haberim olsun. – chicobermuda

+0

Bu alakalı olmayabilir, ancak _Optionals_'ı sıralamaya çalışmanın ne anlama geldiğini görmekte güçlük çekiyorum. Bu şeylerin Int veya String olduğunu ya da her neyse, bunları Int veya String ya da her neyse sıralamanız gerekir. Döndüğünüzde başarısızlık şansınız var mı, eğer öyleyse, bu durumda ne olmasını bekliyorsunuz? – matt

cevap

3

:

dizi doldurulur yana "el" en güvenilir (ve etkin ve uygun Swift'in tip güvenliği) yolu ile özel bir sınıf kullanmaktır jenerik sözlükten ziyade isteğe bağlı olmayan özellikler.

class Item { 
    var foo : Int 
    var bar : String 

    init(foo : Int, bar : String) { 
    self.foo = foo 
    self.bar = bar 
    } 
} 

var array = [Item]() 
array.append(Item(foo: 0, bar: "dog")) 
array.append(Item(foo: 1, bar: "cat")) 

array.sortInPlace { $0.foo > $1.foo } 

Tüm türler iyi bilinen ve isteğe bağlı değildir.

Hiçbir tür döküm yok, çıkartma yok, ek yük yok, sorun yok.

4

Aynı sorunu alıyorum ancak yalnızca aygıtların ~% 50'sini etkiliyor ve yalnızca uygulamanın sürümünü çalıştıranlar sürümünü yayınlıyor. Kodum dispatch_group gibi bir şey kullanmıyor.

contacts = contacts.sort({ $0.name.localizedCaseInsensitiveCompare($1.name) == .OrderedAscending }) 

sadece kullanıcıların sınırlı bir miktarda etkilediği için, bir de çöküyor: Ben onun yerini O giderilmiştir

contacts.sortInPlace({ $0.name.localizedCaseInsensitiveCompare($1.name) == .OrderedAscending }) 

: gibi ben kod kullanıyordum Benim durumumda

düşük seviye Swift API'sı ve sort ile değiştirilerek giderildi, bunun Apple'ın kodundaki bir hata olduğuna inanıyorum.

Bu arada filing a bug with Apple ürününü ve sort numaralı telefonu kullanıyorum.

Not: Kodunuz ve benimki arasında bir başka benzerlik shorthand argument names (yani 0 $ ve 1 $) kullanımıdır. Bununla birlikte, bunları adlandırılmış argümanlarla değiştirsem bile, hala çöküyor.

Güncelleştirme: Birçok kişi experiencing the same issue on the apple forums'dir. Bu iş parçacığına göre en son Xcode beta sürümünde sabitlenmiş gibi görünüyor.

0

Bu eski bir sorudur, ancak hata ayıklama işlemlerinde EXC_BAD_ACCESS KERN_INVALID_ADDRESS'i çoğaltmanın zor olmasının ana nedeni, ayrıştırılmış bir nesnenin yaşam döngüsünün hata ayıklama sürümlerinde ve sürüm sürümlerinde farklı olmasıdır. İkincisinde bellek hemen kaybolur ve muhtemelen ilgisiz bir nesne ile değiştirilirken, eskide bellek kısa bir süre için hala korunabilir, böylece uygulamanız hala sorunsuz bir şekilde hata yapabilir. Ayrıca, yayın sürümünde bu gerçekleştiğinde, çakışma izinin son satırı kafa karıştırıcı olabilir, çünkü başvurulan nesne bazı ilişkisiz türden olabilir. Eğer durum böyleyse, yığın ağacında biraz fazla bakmalı ve umarım daha fazla ipucu bulmalıyız.

0

Bu hatayla karşılaştığım bir durum, Objective-C'de null olmayan bir özellik beyan ettim ama başlatmayı unuttum ve daha sonra Swift'de kullanmayı denemem gerekiyor.