Saya tidak dapat benar-benar berbicara dengan NSAssert, tetapi saya membayangkan bahwa ia bekerja mirip dengan pernyataan C ().
assert () digunakan untuk menegakkan kontrak semantik dalam kode Anda. Apa artinya itu, Anda bertanya?
Yah, seperti yang Anda katakan: jika Anda memiliki fungsi yang seharusnya tidak pernah menerima -1, Anda dapat menegaskan () menegakkan bahwa:
membatalkan gimme_positive_ints (int i) {
menegaskan (i> 0);
}
Dan sekarang Anda akan melihat sesuatu seperti ini di log kesalahan (atau STDERR):
Pernyataan i> 0 gagal: file example.c, baris 2
Jadi tidak hanya itu melindungi dari input yang berpotensi buruk tetapi juga mencatatnya dengan cara yang bermanfaat dan standar.
Oh, dan setidaknya dalam C menegaskan () adalah makro, sehingga Anda bisa mendefinisikan kembali menegaskan () sebagai no-op dalam kode rilis Anda. Saya tidak tahu apakah itu masalahnya dengan NSAssert (atau bahkan menegaskan () lagi, tapi itu cukup berguna untuk menyusun cek itu.