iOS 10: "[Aplikasi] jika kita berada dalam penangan pra-komit yang sebenarnya, kita tidak dapat benar-benar menambahkan pagar baru karena pembatasan CA"
389
Saya kadang-kadang mendapatkan pesan ini di log Xcode 8b3 ketika menjalankan aplikasi saya, semuanya sepertinya berfungsi, tapi saya ingin tahu dari mana ini berasal. Google tidak membantu sama sekali.
Perlu diketahui bahwa saya secara acak tidak mendapatkan output NSLog ke Konsol dan menghapus ini lagi untuk memperbaikinya. Ini lebih dari pemrograman 'kelas tinggi' yang kita alami oleh preman di apel.
amergin
37
Untuk apa nilainya, saya mendapatkan pesan ini setiap kali perubahan orientasi dibuat dan saya DO menonaktifkan variabel lingkungan OS_ACTIVITY_MODE.
user2698617
5
Catatan: Menambahkan ini, Anda tidak akan melihat NSLogs di konsol juga.
niravdesai21
4
Bukankah ini seperti mematikan alarm kebakaran?
ScottyBlades
191
Itu berasal dari +[UIWindow _synchronizeDrawingAcrossProcessesOverPort:withPreCommitHandler:]via os_log API. Itu tidak tergantung dari komponen / kerangka kerja lain yang Anda gunakan (hanya dari UIKit) - ia mereproduksi dalam proyek aplikasi tampilan tunggal yang bersih pada perubahan orientasi antarmuka.
Metode ini terdiri dari 2 bagian:
menambahkan passommit handler yang lulus ke daftar handler;
melakukan beberapa pekerjaan, itu tergantung pada keadaan mesin negara saat ini.
Ketika bagian kedua gagal (sepertinya transisi dilarang), ia mencetak pesan di atas ke log kesalahan. Namun, saya pikir masalah ini tidak fatal: ada 2 tambahan kasus dalam metode ini, yang akan menyebabkan crash pada debug.
Tampaknya radar adalah yang terbaik yang bisa kita lakukan.
Dapatkah Anda, tolong, menguraikan alat-alat, yang Anda gunakan untuk debugging untuk mendapatkan nama metode pribadi ini dan strukturnya?
Oleksandr Karaberov
9
@AlexanderKaraberov Anda dapat menggunakan Hopper Disassembler untuk menemukan teks peringatan dalam kerangka kerja biner dan referensi ke teks ini dari metode pribadi.
k06a
Saya juga mendapatkan ini ketika keyboard masuk dan saya memiliki controller berlangganan untuk merespons dengan mengubah ukuran pandangannya.
yo.ian.g
82
Coba letakkan yang berikut di dalam environment variablesuntuk skema di bawahrun(debug)
Saya mendapatkan ini di simulator ketika memutar iPhone 7 menggunakan perangkat keras-> memutar item menu. Variabel lingkungan ini membuat pesan palsu hilang.
George D Girton
1
Jawaban dari @Foo di bawah berguna karena berisi rincian cara.
Kevin Owens
1
Itu juga tidak mencetak log peringatan kendala
chirag shah
36
OP bertanya dari mana pesan itu berasal. Hanya mengatakan bagaimana cara diam itu bukanlah jawaban yang tepat.
iCaramba
6
Jawaban "IOS_ACTIVITY_MODE = disable" mematikan SEMUA pendataan! Cukup tutup tampilan logging jika Anda tidak ingin melihat log. Jawaban yang benar-benar konyol, luar biasa karena memiliki begitu banyak suara! Tidak melakukan apa pun untuk mengatasi pesan yang sebenarnya. Aplikasi kami yang banyak menggunakan data inti berfungsi dengan baik, pesan ini dan lainnya mulai muncul setelah salah satu pembaruan Xcode terakhir. Sedih karena Apple tidak dapat menyelesaikan masalah seperti ini.
John
13
Kita dapat membisukannya dengan cara ini (perangkat dan simulator membutuhkan nilai yang berbeda):
Tambahkan Nama OS_ACTIVITY_MODEdan Nilai ${DEBUG_ACTIVITY_MODE}dan periksa (dalam Produk -> Skema -> Edit Skema -> Jalankan -> Argumen -> Lingkungan).
Tambahkan Pengaturan Buatan Pengguna DEBUG_ACTIVITY_MODE, lalu tambahkan Any iOS Simulator SDKuntuk Debugdan atur nilainya ke disable(dalam Proyek -> Bangun pengaturan -> + -> Pengaturan Buatan Pengguna)
Tidak berfungsi untuk saya: Saya juga melihat ini di konsol, meskipun sudah menonaktifkan mode aktivitas debug seperti yang disarankan di atas.
Johan
-1
Untuk memperbaikinya, saya menghapus aplikasi dari Simulator.
Saya juga menjalankan Bersih dulu.
Saya tidak berpikir apa pun yang terkait dengan orientasi memicu itu. Hal terbesar yang berubah sebelum gejala ini dimulai adalah bahwa kerangka kerja Swift mulai memanggil NSLogutas pekerja alih-alih utas utama.
Melakukan pembersihan bekerja dengan baik pada awalnya bagi saya ketika saya menjalankannya di simulator tanpa memutarnya, tetapi kemudian segera setelah saya uji lagi dengan perintah rotasi, ia melaporkan kesalahan yang sama.
cheznead
Saya menggunakan gerakan pan dan hanya mendapatkan kesalahan ini saat mengubah orientasi.
Jeremy Andrews
-8
OS_ACTIVITY_MODE = disable
Ini juga akan menonaktifkan kemampuan untuk debug di perangkat nyata (tidak ada output konsol dari perangkat nyata sejak saat itu).
willShowViewController
tidak pernah dipanggil, tidak ...Jawaban:
di Xcode Anda:
sumber
Itu berasal dari
+[UIWindow _synchronizeDrawingAcrossProcessesOverPort:withPreCommitHandler:]
via os_log API. Itu tidak tergantung dari komponen / kerangka kerja lain yang Anda gunakan (hanya dari UIKit) - ia mereproduksi dalam proyek aplikasi tampilan tunggal yang bersih pada perubahan orientasi antarmuka.Metode ini terdiri dari 2 bagian:
Ketika bagian kedua gagal (sepertinya transisi dilarang), ia mencetak pesan di atas ke log kesalahan. Namun, saya pikir masalah ini tidak fatal: ada 2 tambahan kasus dalam metode ini, yang akan menyebabkan crash pada debug.
Tampaknya radar adalah yang terbaik yang bisa kita lakukan.
sumber
Coba letakkan yang berikut di dalam
environment variables
untuk skema di bawahrun(debug)
sumber
Kita dapat membisukannya dengan cara ini (perangkat dan simulator membutuhkan nilai yang berbeda):
Tambahkan Nama
OS_ACTIVITY_MODE
dan Nilai${DEBUG_ACTIVITY_MODE}
dan periksa (dalam Produk -> Skema -> Edit Skema -> Jalankan -> Argumen -> Lingkungan).Tambahkan Pengaturan Buatan Pengguna
DEBUG_ACTIVITY_MODE
, lalu tambahkanAny iOS Simulator SDK
untukDebug
dan atur nilainya kedisable
(dalam Proyek -> Bangun pengaturan -> + -> Pengaturan Buatan Pengguna)sumber
Untuk memperbaikinya, saya menghapus aplikasi dari Simulator.
Saya juga menjalankan Bersih dulu.
Saya tidak berpikir apa pun yang terkait dengan orientasi memicu itu. Hal terbesar yang berubah sebelum gejala ini dimulai adalah bahwa kerangka kerja Swift mulai memanggil
NSLog
utas pekerja alih-alih utas utama.sumber
Ini juga akan menonaktifkan kemampuan untuk debug di perangkat nyata (tidak ada output konsol dari perangkat nyata sejak saat itu).
sumber