2011-09-18 28 views
6

Tôi muốn biết nếu có nhiều cuộc gọi NSLog() ảnh hưởng đến hiệu suất hoặc bộ nhớ của ứng dụng. Có ai biết về điều đó không?iPhone/iPad: Có nhiều cuộc gọi NSLog() ảnh hưởng đến hiệu suất hoặc bộ nhớ ứng dụng không?

Tôi muốn thực hiện cuộc gọi NSLog() trong mọi chức năng trong ứng dụng của tôi (rất nhiều) để tôi có thể xem nhật ký sự cố sau và phát hiện sự cố.

Cảm ơn.

Trả lời

10

Có. Vì vậy, tôi xác định điều này trong tập tin pch của tôi.

#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__); 

Thay vì sử dụng NSLog, tôi sử dụng DLog và ALog.

(Lưu ý hay bản quyền nào. Tôi có mã này từ lâu dài từ một số khác SO bài mà tôi không nhớ Dán nó một lần nữa từ thư viện đoạn của tôi)

+0

Vâng, cho NSLogs bạn mong đợi để rời trong mã để gỡ lỗi, bạn nên xác định macro cho phép người "gỡ rối" những người được biên dịch ra. Một số, tất nhiên, nên luôn luôn được đăng nhập, do đó, những người sử dụng một vĩ mô khác nhau. Việc thêm '__PRETTY_FUNCTION__' và' __LINE__' làm giảm nhu cầu xác định rõ ràng bạn đang ở đâu trong mã. (Không có gì vô dụng hơn là một thông báo "Tôi đã có lỗi" mà không có manh mối về nơi nó được gửi đi.) –

+0

Điều này dường như là nguồn gốc của ý tưởng này, cho những người tò mò muốn biết sự tiến hóa của nó: http: //iphoneincubator.com/blog/debugging/the-evolution-of-a-replacement-for-nslog – benvolioT

2

Có, nó làm chậm hiệu suất, đặc biệt nếu chức năng được cho là phải mất thời gian rất ngắn, NSLog (đây là quy trình I/O) sẽ mất nhiều thời gian hơn dự kiến.

7

Một giải pháp dễ dàng để 'undefine' NSLog

trong file .pch:

#ifndef DEBUG 
#define NSLog(...) /* */ 
#endif 
Các vấn đề liên quan