Tidak ada yang dicetak dari NSLog
Xcode 8.0 beta (8S128d). printf
tidak berubah
Ini kode saya:
NSLog(@"hello from NSLog");
printf("hello from printf");
Inilah keluaran dari iOS 9 Simulator:
2016-06-17 09:49:10.887 calmapp-dev[28517:567025] hello from NSLog
hello from printf
Inilah keluaran dari iOS 10 Simulator:
hello from printf
Jawaban:
Bisa jadi Anda menambahkan properti "OS_ACTIVITY_MODE": "disable" di variabel lingkungan Skema (untuk menyembunyikan keluaran OS dari simulator) dan melupakannya, dan sekarang sedang berjalan di perangkat sebenarnya.
Di Xcode 8:
Hanya tambahkan
OS_ACTIVITY_MODE
dan centang saja (Jangan tambahkan nilai)Ringkasan: Ini adalah bug dari Xcode 8 + iOS10, kita dapat menyelesaikannya dengan cara ini:
Saat menggunakan simulator, tambahkan Nama "OS_ACTIVITY_MODE" dan Nilai "nonaktifkan" dan periksa.
Saat berada di perangkat nyata, hanya tambahkan "OS_ACTIVITY_MODE" dan centang (Jangan tambahkan Nilai). Anda akan melihat NSLog di Konsol Xcode8.
sumber
disable
dengandefault
.Jika Anda memeriksa catatan rilis Xcode 8 beta , Anda akan menemukan bahwa tertulis:
sumber
NSlog atau print sebenarnya dijalankan tetapi tersembunyi di antara banyak output debug konsol lain untuk mengatasi masalah ini Buka Xcode8:
tambahkan "OS_ACTIVITY_MODE" dan setel Nilai ke "nonaktifkan" dan centang.
klik tutup
xcode9
tambahkan "OS_ACTIVITY_MODE" dan setel Nilai ke "default" dan centang.
sumber
disable
dengandefault
.Juga, pastikan Konsol benar-benar terlihat di Xcode (yaitu, pastikan ikon sebelah kanan disorot dengan warna biru, seperti gambar di bawah). Setelah saya mengupgrade Xcode, itu menyembunyikan Konsol dan menunjukkan hanya tampilan Variabel. Ini membuatnya terlihat seperti
NSLog()
tidak berfungsi dengan baik, padahal memang berfungsi dengan benar, saya hanya tidak bisa melihat hasilnya.sumber
Shift + ⌘ + C
Xcode versi 8.3.3Saya tidak dapat melihat keluaran NSLog di perangkat iOS 10 yang sebenarnya juga. Jika Anda menggunakan perangkat nyata, Anda dapat membuka jendela Perangkat dari Xcode (Shift + Command + 2) dan melihat log perangkat di sana, tetapi sulit untuk melihat log aplikasi Anda karena konsol menampilkan log dari sistem dan semua aplikasi.
(Saya menggunakan Xcode 7, jadi itu mungkin bukan masalah Xcode tetapi masalah iOS 10)
sumber
os_log
.Hmmm ... sepertinya properti "OS_ACTIVITY_MODE": "nonaktifkan" CEGAH NSlog muncul di log Xcode 9.
Menghapus centang pada nilai ini di skema saya memulihkan log saya.
sumber
Untuk siapa saja yang mengetahui hal ini di masa depan. Alasan NSLog tidak mencetak ke syslog di iOS 10 dan iOS 11 adalah karena Apple mengubah ke Unified Logging.
Anda dapat melihat WWDC membicarakannya di sini: https://developer.apple.com/videos/play/wwdc2016/721/
Dokumentasi di sini: https://developer.apple.com/documentation/os/logging
Dari 10 Anda harus menggunakan os_log daripada NSLog.
Cara menemukan log di disk: https://www.blackbagtech.com/blog/2017/09/22/accessing-unified-logs-image/
Untuk meringkas, log berada di
/var/db/diagnostics
mana dapat ditemukan VM di/Users/USERNAME/Library/Developer/CoreSimulator/Devices/SIMULATOR-GUID/data/var/db/
Salin semua item di dalam
diagnostics
danuuidtext
ke dalam satu folder (jangan sertakan folder diagnostik atau uuidtext apa yang ada di dalamnya).Ubah nama folder itu
foldername.xarchive
.Buka di Console.app atau gunakan OSX util
log
:log show <path to archive> --info --predicate <options>
sumber
Saya menggunakan Xcode 8, jadi saya juga mengalami masalah yang sama. Dan saya memecahkan masalah ini dengan menambahkan
value = disable
simulator, tetapi pada mesin nyata saya tidak menambah nilai.sumber
disable
dengandefault
.OS_ACTIVITY_MODE
dengandisable
ataudefault
langsungNSLog
pesan tidak lagi ditampilkan ketika saya meningkatkan ke Xcode 9.1 + iOS 11.1. Awalnya jawaban yang diterima memberi saya cara untuk mengatasi ini menggunakan aplikasi Konsol dan mengaktifkan Simulator ( lihat jawaban Lucas ).Di aplikasi Konsol di bawah
Action
saya mencoba memilihInclude Debug Messages
dan membatalkan pilihanInclude Info Messages
(sehingga Konsol tidak dibanjiri dengan pesan sistem).NSLog
pesan muncul di jendela Konsol di Xcode tetapi tidak di aplikasi Konsol.Saya menyadari bahwa harus ada cara yang lebih langsung
disable
atau mengaktifkan (yaitudefault
)NSLogs
berkat komentar Coeur dalam menanggapi jawaban ini. Menurut pendapat saya itu adalah jawaban terbaik karena pengaturanOS_ACTIVITY_MODE
untukdisable
ataudefault
akan lebih masuk akal untuk pemula.sumber