Tôi thực sự không thể nói chuyện với NSAssert, nhưng tôi tưởng tượng rằng nó hoạt động tương tự như khẳng định của C ().
assert () được sử dụng để thực thi hợp đồng ngữ nghĩa trong mã của bạn. Điều đó có nghĩa là gì, bạn yêu cầu?
Vâng, giống như bạn đã nói: nếu bạn có một hàm không bao giờ nhận được -1, bạn có thể xác nhận () thực thi rằng:
void gimme_poseitive_ints (int i) {
khẳng định (i> 0);
}
Và bây giờ bạn sẽ thấy một cái gì đó như thế này trong nhật ký lỗi (hoặc STDERR):
Xác nhận i> 0 không thành công: tệp example.c, dòng 2
Vì vậy, nó không chỉ bảo vệ an toàn trước các đầu vào xấu mà còn ghi lại chúng theo cách tiêu chuẩn, hữu ích.
Ồ, và ít nhất trong C assert () là một macro, vì vậy bạn có thể xác định lại assert () là không có trong mã phát hành của bạn. Tôi không biết đó có phải là trường hợp của NSAssert (hoặc thậm chí khẳng định () nữa không), nhưng nó khá hữu ích để biên dịch các kiểm tra đó.