Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. iOS SDK

Tip Cepat: Sesuaikan NSLog untuk Debug Lebih Mudah

by
Read Time:4 minsLanguages:

Indonesian (Bahasa Indonesia) translation by Aprianti Tita (you can also view the original English article)

Dalam tip cepat ini kita akan belajar cara menyesuaikan keluaran yang dihasilkan oleh NSLog untuk mendebug program secara lebih efisien. Baca terus! 


Masalah

Secara default, NSLog menampilkan output dalam format berikut: 

Contoh dunia nyata mungkin terlihat seperti ini: 

Keluaran defaultnya bagus, tetapi meninggalkan sesuatu yang diinginkan. Seringkali, kami ingin melihat yang berikut ini dalam pernyataan log: 

  • Nama file sumber di mana NSLog () dipanggil 
  • Nomor baris kode sumber di mana NSLog () dipanggil 
  • Nama kelas dan metode di mana NSLog () dipanggil 
  • Sembunyikan cap waktu tanggal, nama aplikasi, dan info id proses 
  • Mengaktifkan/menonaktifkan informasi log dengan mengubah mode (misal, debug, rilis, pementasan)

Singkatnya, kita ingin NSLog menjadi lebih seperti ini


Solusi

Pertama mari kita lihat bagaimana NSLog bekerja tidak berubah.NSLog hanya fungsi C yang dibangun dalam konteks Kakao, dan berperilaku sama seperti fungsi Variadic C lainnya. Secara khusus, NSLog mengirim pesan kesalahan ke fasilitas Apple System Log. Ia melakukan ini hanya dengan meneruskan argumennya kefungsi NSLogv.

Karena NSLog hanyalah pembungkus untuk NSLogv, kita dapat mendefinisikan NSLog dengan panggilan khusus kita sendiri ke NSLogv. Itulah tepatnya yang akan saya tunjukkan kepada Anda bagaimana melakukannya dalam tutorial ini.


1. Mulai Proyek Baru

Buat proyek iOS baru di Xcode, dengan template Empty Applicatoin Sebut saja ExtendNSLog. Periksa opsi untuk Penghitungan Referensi Otomatis, tetapi jangan centang opsi untuk Pengujian Data dan Unit Inti.

Buat proyek iOS dengan template Aplikasi Kosong
Nama produk harus "ExtendNSLog"

2. Buat Kelas Objective-C

Sekarang buat file header bersama dengan proyek. Pilih New File > Objective-­C Class. Setel nama kelas ke ExtendNSLogFunctionality. yang akan menjadi subkelas dari NSObject.

Buat template kelas Objective-C
Setel nama kelas ke ExtendNSLogFunctionality

3. Tambahkan Logika NSLog Kustom

Langkah 1

Buka ExtendNSLogFunctionality.h dan letakkan kode berikut di dalam header:

Ketentuan di atas akan mendefinisikan pernyataan NSLog hanya ketika DEBUG didefinisikan. Ketika DEBUG tidak didefinisikan, pernyataan NSLog tidak akan melakukan apa-apa. Pertanyaan muncul: bagaimana Anda mengontrol kapan DEBUG didefinisikan? Ini dapat dilakukan dengan menetapkan DEBUG=1 dalam pengaturan preprocessor untuk proyek Anda. 

Untuk melakukannya, klik target aplikasi Anda, dan pilih tab Pengaturan Build. Selanjutnya pastikan bahwa opsi "Semua" dan "Gabungan" dipilih. Cari "preprocessing" dan cari bagian yang berjudul "Preprocessor Macros". Selanjutnya, cukup tambahkan "DEBUG=1" ke bagian Debug.

Tambahkan bendera DEBUG=1 ke pengaturan preprocessor

Perhatikan bahwa dalam templat proyek Xcode yang lebih baru, sudah ada makro DEBUG=1 yang ditetapkan untuk konfigurasi Debug build di bagian Preprocessor Macros. Untuk informasi lebih lanjut, lihat posting ini di StackOverflow.

Langkah 2

Dengan mendefinisikan makro debug, tugas kita selanjutnya adalah menulis versi kustom NSLog. Buka ExtendNSLogFunctionality.m dan tambahkan kode berikut:

Langkah 3

Sekarang tambahkan ExtendNSLogFunctionality.h include ke awalan awalan file Prefix.pch dalam bagian #ifdef __OBJC__.

Untuk pemahaman yang lebih baik tentang header awalan, lihat entri ini di Wikipedia. Mengenai praktik terbaik header awalan, lihat posting StackOverflow ini.


4. Contoh Log Khusus

Sekarang tambahkan NSLog di mana saja dalam kode proyek Anda. Dalam kasus saya, saya memutuskan untuk menambahkan satu di dalam metode AppDelegate.m -(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions.

Jika Anda membangun dan menjalankan proyek dengan konfigurasi Debug sekarang, Anda akan melihat sesuatu seperti ini:

Tepuk tangan! Output ini jauh lebih bermanfaat daripada implementasi default. Mudah-mudahan Anda menemukan bahwa teknik ini akan menghemat banyak waktu ketika Anda men-debug program Anda sendiri!

Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.