Saya mendapatkan kesalahan berikut di iOS 9:
-[UIApplication_handleNonLaunchSpecificActions:
forScene:
withTransitionContext:
completion:] unhandled action ->
<FBSSceneSnapshotAction: 0x150b2aef0>
{
handler = remote;
info = <BSSettings: 0x15333f650>
{
(1) = 5;
};
}
Adakah orang lain yang menemukan kesalahan ini atau implikasinya? Apa yang salah?
ios
objective-c
xcode
ios9
Roddy
sumber
sumber
Jawaban:
Tidak ada yang salah dengan kode Anda. Ini adalah pesan logging internal ke Apple, dan Anda harus mengajukan radar tentang hal itu.
Ada dua petunjuk yang menunjukkan bahwa ini mungkin kode Apple:
Garis bawah yang memimpin nama metode
_handleNonLaunchSpecificActions:forScene:withTransitionContext:completion
adalah konvensi yang menunjukkan bahwa metode ini bersifat pribadi / internal untuk kelas yang dideklarasikan. (Lihat komentar ini .)Masuk akal untuk menebak bahwa dua awalan huruf dalam
FBSSceneSnapshotAction
adalah singkatan untuk FrontBoard, yang menurut Rene Ritchie dalam " daftar keinginan iOS 9: Mode Tamu" adalah bagian dari seluruh keluarga perangkat lunak yang terkait dengan meluncurkan aplikasi:Saya tidak tahu untuk apa
BS
awalanBSSettings
ini, tetapi analisis pesan log ini akan menunjukkan bahwa itu bukan apa-apa yang Anda lakukan, dan Anda harus mengajukan radar dengan langkah-langkah untuk mereproduksi pesan logging.Jika Anda ingin mencoba dan mengambil jejak tumpukan, Anda dapat menerapkan kategori yang ditautkan ke sini . Beberapa orang akan berpendapat bahwa menimpa API pribadi adalah ide yang buruk, tetapi dalam hal ini injeksi sementara untuk mengambil jejak stack tidak bisa terlalu berbahaya.
EDIT:
Tapi, kami masih ingin tahu apa tindakan ini. Jadi saya meletakkan breakpoint
-[UIApplication _handleNonLaunchSpecificActions:forScene:withTransitionContext:completion]
dan mulai mencetak nilai register dan menemukan kelas bernamaFBSceneImpl
yang memiliki banyak informasi tentang aplikasi saya:Kami dapat mengetahui metode privat mana yang disebut selanjutnya (disimpan di konter program, daftar 15.)
Saya mencoba menemukan
FBSceneSnapshotAction
referensi yang tidak ditangani di log, tetapi tidak ada dadu. Kemudian, saya subklasifikasi aplikasi UIA, dan mengesampingkan_handleNonLaunchSpecificActions:forScene:withTransitionContext:completion
. Sekarang saya bisa melakukan aksi secara langsung, tapi tetap saja, kita tidak tahu apa itu.Kemudian, saya melihat FBSceneSnapshotAction lagi. Ternyata itu memiliki superclass bernama
BSAction
.Lalu saya menulis alat yang mirip dengan RuntimeBrowser dan mencari semua subclass dari BSAction. Ternyata ada cukup banyak dari mereka:
Dua nama metode yang kita miliki (satu dari log dan satu dari penghitung program pada perangkat) menunjukkan bahwa tindakan ini digunakan di bawah tenda untuk melewati tindakan di sekitar sistem.
Beberapa tindakan mungkin dikirim ke callback delegasi aplikasi, sementara yang lain ditangani secara internal.
Apa yang terjadi di sini adalah bahwa ada tindakan yang tidak ditangani dengan benar dan sistem memperhatikannya. Kami seharusnya tidak melihatnya, rupanya.
sumber