Apa nilai default BOOL
variabel di Objective-C?
95
Tidak ada nilai default jika Anda menulis
-(void)somemethod {
BOOL x; // <--- no default value
Ini diinisialisasi ke sampah.
Namun, untuk BOOL
ivar , itu akan diinisialisasi NO
, karena keseluruhan instance diisi dengan 0 pada inisialisasi.
(Catatan: Saat ARC diaktifkan, penunjuk objek lokal akan selalu memiliki nilai default nil
, tetapi variabel lokal jenis non-objek seperti BOOL masih diinisialisasi ke sampah. Lihat Variabel lokal disetel ke nil? (Objective-C) .)
Saya melakukan beberapa percobaan sendiri menggunakan Xcode 5.1, OS X Mavericks 10.9.4. Bagi yang belum tahu ALog adalah NSLog yang dimodifikasi. Bagaimanapun, percobaan pertama adalah digunakan
isLandscape
sebagai variabel publik, dengan@synthesize
, untuk diakses oleh pengontrol tampilan induk (ditampilkan di bawah). Eksperimen kedua tidak digunakan@synthesize
dan saya, jelas, duluself.isLandscape
mendapatkan hasil yang sama di konsol. Output konsol di bawah kode saya. Eksperimen ketiga menggunakan 'isLandscape' sebagai variabel lokal di dalam metode.Hasil ini berasal dari dua percobaan pertama…
Dalam EKSPERIMEN KETIGA 'isLandscape' tidak lagi menjadi properti. Saya mengaturnya menjadi variabel lokal dengan hasil yang menarik:
Hasil ini berasal dari percobaan ketiga…
Saya menduga properti diinisialisasi oleh saya atau Xcode secara otomatis, tetapi variabel lokal tidak mendapatkan nilai sama sekali. Meski begitu, lihat variabel lokal [Baris 164] bukan YA atau TIDAK tapi bukan nihil? Saya kira itu adalah nilai sampah (acak) yang tidak dapat Anda andalkan. Saya harap ini membantu orang berikutnya. Saya belajar sesuatu tetapi saya menantikan komentar. Terima kasih dan semoga berhasil!
sumber