Bu çökmelerde teşhis deneyimi olan var mı? Ben tek bir kullanıcı sürekli olarak onları almak var ve iOS ilgili yazı bulundu rağmen, benim appTutarlı Sevkiyat sırası: com.apple.root.default-qos.overcommit crash
cevap
Sebep ... operasyonun aynı tip çökmesini değildir: IOS/TVOS içinde
vardır kuyruk/iş parçacığı, her iş parçacığı, "hizmet kalitesi" veya kısa "QOS" olarak bilinen kendi türüne veya önceliğine sahiptir, bu da cpu'nun bu iş parçacığıyla ilgilenmesi gereken aciliyet düzeyi anlamına gelir, olasılıklar şunlardır:
- QOS_CLASS_DEFAULT
- QOS_CLASS_USER_INITIA TED
- QOS_CLASS_UTILITY
- QOS_CLASS_BACKGROUND
- QOS_CLASS_UNSPECIFIED
- QOS_CLASS_USER_INTERACTIVE
aynı kuyrukta aynı anda birçok işi çalıştırmak kez, daha sonra OS hepsi bu görevleri yerine olamayacağını bildirir Aynı önceliğe aynı anda (her sıra için yığının boyutuna bir sınır vardır), orada "OverCommit" yazıyor, bu da sıraya göre işlem yaptığınız anlamına gelir (sizin durumunuzda "Default-QOS" sıra) ve bu konuda daha fazla görev alamadığı için çıkar zaman ve istediğin şekilde onları yürüt.
çözüm:
ilk o zaman, bu çökertmesidir "dispatch_async" komutunu bulmak diğer kuyruklar birini (daha sonra bu görev için beklenen daha yavaş bir tepki bekliyor demektir),
kullanmak olduğunu ne yapması gerektiğinigenellikle geliştirici bunu düşünmek ve sadece varsayılan öncelik ana kuyruk kullanmayın/böyle kuyruklarda:
uygulama olduğunu bildirmesi halinde (bunu düzeltmek içindispatch_async(dispatch_get_main_queue()) {
// some task to perform
print("This is my task")
}
hatta tamamen ve sadece dispatch_async komutu yok sayabilirsiniz, bir arka plan (veya paralel) işletilmesi gerektiğini yoksa
let qualityOfServiceClass = QOS_CLASS_BACKGROUND
let backgroundQueue = dispatch_get_global_queue(qualityOfServiceClass, 0)
dispatch_async(backgroundQueue, {
// some task to perform
print("This is my task")
})
: siz) ana kuyruğunu overcommitted gelmiş böyle diğer kuyruklardan birine değiştirmektir yürütmek böyle komutları:
// some task to perform
print("This is my task")
"(uygulama, ana sırayı fazla aştığınızı bildirirse)" nasıl bunu biliyor musun? –
Swift 3 Yeniden Yazma Shaybc cevabı: swift3 kullanım için
DispatchQueue.global(qos: .background).async {
// some task to perform
print("This is my task")
})
- 1. Sevkiyat işlevleri
- 2. TypeError: Tutarlı bir yöntem çözüm sırası oluşturulamıyor (MRO)
- 3. Gecikmeli Sevkiyat Çağır?
- 4. Program Crash
- 5. Crash O2
- 6. CloudKit güçlü bir şekilde tutarlı mı, yoksa tutarlı mı?
- 7. Nesneden dizeye tutarlı dönüştürme
- 8. Biçimlendirme numaraları tutarlı Python
- 9. Belirli bir Haritanın farklı Koleksiyon görünümleri boyunca yineleme sırası tutarlı mı?
- 10. ios8 UIImage imageNamed: crash
- 11. Outlook Crash Çöküntüleri Oluşturma
- 12. Swift "İhtisas" Crash
- 13. Crash Örnekleme System.Xml.Serialization.XmlSerializer C#
- 14. BadParcelableException - BroadcastReceiver intent crash
- 15. Crash iOS uygulaması: ZL36GetSFTrimCharSetForChineseOrJapanesePPK9TFontInfo_block_invoke
- 16. Android GridView Adaptör Crash
- 17. Crash (SonarQube 5.3)
- 18. IOS 6 Maps Crash
- 19. Android: rotasyonuna Crash
- 20. JavaScript kullanarak Crash firefox
- 21. Crash upon CGImageDestinationFinalize
- 22. Gizemli TwitterKit crash
- 23. jsprit belirli bir araca nasıl sevkiyat eklenir
- 24. Python projesinde tutarlı sürüm oluşturma
- 25. Ağırlık verileri hakkında tutarlı sonuç
- 26. UICollectionView tutarlı olmayan düzen, UICollectionViewFlowLayout
- 27. PhantomJS Crash - Çıkış Kodu 126
- 28. iOS 8 Crash - renderInContext: UIGraphicsGetCurrentContext()
- 29. Z-sırası
- 30. Veritabanının tutarlı alt kümesi nasıl dışa aktarılır
Bazen aynı sorunu yaşıyorum. Buna neyin sebep olduğu hakkında bir fikrim yok. – JackPearse
Bir sync dispatch_queue yürütmek için birden çok kez denerseniz, bu durumun oluştuğunu öğrendim. (sync dispatch_queue, hala çalışırken çalışırken birkaç iş parçacığı tarafından çağrılır. Sıra blok çalışırken, tüm iş parçacıkları bloğun bitmesini bekler.) – JackPearse