Các macro tiền xử lý thực sự tuyệt vời để gỡ lỗi. Không có gì sai với NSLog (), nhưng thật đơn giản để xác định chức năng ghi nhật ký của riêng bạn với chức năng tốt hơn. Đây là cái tôi sử dụng, nó bao gồm tên tệp và số dòng để giúp theo dõi các báo cáo nhật ký dễ dàng hơn.
#define DEBUG_MODE
#ifdef DEBUG_MODE
#define DebugLog( s, ... ) NSLog( @"<%p %@:(%d)> %@", self, [[NSString stringWithUTF8String:__FILE__] lastPathComponent], __LINE__, [NSString stringWithFormat:(s), ##__VA_ARGS__] )
#else
#define DebugLog( s, ... )
#endif
Tôi thấy dễ dàng hơn khi đặt toàn bộ câu lệnh này trong tiêu đề tiền tố thay vì tập tin riêng của nó. Nếu bạn muốn, bạn có thể xây dựng một hệ thống ghi nhật ký phức tạp hơn bằng cách để DebugLog tương tác với các đối tượng Objective-C bình thường. Chẳng hạn, bạn có thể có một lớp ghi nhật ký ghi vào tệp nhật ký (hoặc cơ sở dữ liệu) của riêng nó và bao gồm một đối số 'ưu tiên' bạn có thể đặt trong thời gian chạy, vì vậy các thông báo gỡ lỗi không được hiển thị trong phiên bản phát hành của bạn, nhưng thông báo lỗi là ( nếu bạn đã làm điều này, bạn có thể tạo DebugLog (), WarningLog (), v.v.).
Ồ, và hãy nhớ rằng #define DEBUG_MODE
có thể được sử dụng lại ở những nơi khác nhau trong ứng dụng của bạn. Ví dụ: trong ứng dụng của mình, tôi sử dụng nó để vô hiệu hóa kiểm tra khóa giấy phép và chỉ cho phép ứng dụng chạy nếu trước một ngày nhất định. Điều này cho phép tôi phân phối một bản sao beta đầy đủ thời gian, đầy đủ chức năng với nỗ lực tối thiểu từ phía tôi.