Là một lập trình viên mới hơn, tôi đã khám phá ra sự kỳ diệu của NSlog
và sử dụng tất cả thông qua mã của tôi. Nó rất hữu ích (cùng với NSZombieEnabled
) khi gỡ lỗi.Có chi phí để sử dụng NSLog một cách tự do không?
Tôi có thể thấy lần truy cập hiệu suất nhất định trên trình mô phỏng vì nó in ra tất cả nội dung này. Tôi không nghĩ rằng tôi thấy bất kỳ hit như vậy trên các thiết bị, nhưng tôi không chắc chắn.
Vì vậy, bạn có mất bất kỳ chi phí nào để rời khỏi tất cả các số NSLogs
không? Có sử dụng nhiều bộ nhớ hơn trên thiết bị không? Hay trình biên dịch chỉ bỏ qua chúng, giống như nó bình luận khi tôi biên dịch cho một thiết bị?
EDIT:
Dưới đây là những gì tôi thực hiện, theo gợi ý từ rano.
Trong file App_Prefix.pch
của tôi, tôi nói thêm:
// DLog is almost a drop-in replacement for NSLog
// DLog();
// DLog(@"here");
// DLog(@"value: %d", x);
// Unfortunately this doesn't work DLog(aStringVariable); you have to do this instead DLog(@"%@", aStringVariable);
#ifdef DEBUG
# define DLog(fmt, ...) NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__);
#else
# define DLog(...)
#endif
// ALog always displays output regardless of the DEBUG setting
#define ALog(fmt, ...) NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__);
Và sau đó trong Project Info
thanh tra của tôi, cho cấu hình Debug
, dưới tiêu đề GCC 4.2 - Preprocessing,
Tôi đã thêm giá trị DEBUG
vào mục nhập cao nhất được gọi là, Preprocessor Macros.
Hoạt động như một nét duyên dáng - DLog
kết quả đầu ra khi tôi tạo một phiên bản Debug
và ALog
luôn là kết quả đầu ra.
Xem thêm [Có đúng là một người không nên sử dụng NSLog() trên mã sản xuất không?] (Http://stackoverflow.com/questions/300673/is-it-true-that-one-should-not-use -nslog-on-production-code) –