ฉันไม่สามารถพูดกับ NSAssert ได้จริง ๆ แต่ฉันจินตนาการว่ามันทำงานคล้ายกับการยืนยันของ C ()
assert () ใช้ในการบังคับใช้สัญญาความหมายในรหัสของคุณ คุณถามว่าอะไร
มันก็เหมือนกับที่คุณพูดว่า: ถ้าคุณมีฟังก์ชั่นที่ไม่ควรได้รับ -1 คุณสามารถยืนยัน () บังคับใช้:
โมฆะ gimme_positive_ints (int i) {
ยืนยัน (i> 0);
}
และตอนนี้คุณจะเห็นสิ่งนี้ในบันทึกข้อผิดพลาด (หรือ STDERR):
การยืนยัน i> 0 ล้มเหลว: ไฟล์ example.c, บรรทัด 2
ดังนั้นไม่เพียงป้องกันความปลอดภัยที่อาจเกิดจากอินพุตที่ไม่ดีเท่านั้น แต่ยังบันทึกข้อมูลเหล่านั้นด้วยวิธีมาตรฐานที่เป็นประโยชน์
โอ้และอย่างน้อยก็ใน C assert () เป็นมาโครดังนั้นคุณสามารถกำหนด assert () ใหม่เป็นแบบไม่ใช้ในโค้ดการเปิดตัวของคุณ ฉันไม่ทราบว่าเป็นกรณีของ NSAssert (หรือแม้กระทั่งยืนยัน () อีกต่อไป) แต่มันมีประโยชน์มากที่จะรวบรวมเช็คเหล่านั้น