2012-02-21 46 views
31

Tôi đã thấy mô tả và debugDescription cho mục đích gỡ lỗi, nhưng chưa thấy giải thích chính xác về thời điểm sử dụng và trong điều kiện nào chúng có thể tạo ra các kết quả khác nhau.Mô tả và gỡ lỗi NSObjectMô tả

Tài liệu của NSObject cũng không có bất kỳ điều gì trên debugDescription. Câu hỏi: Khi nào nên sử dụng cái nào, và trong điều kiện nào, nên/đầu ra của họ có khác nhau không?

Trả lời

37

Technical Note TN2124

Lưu ý: in-đối tượng thực sự gọi phương thức debugDescription của đối tượng quy định. NSObject thực hiện phương thức này bằng cách gọi đến phương thức mô tả. Do đó, theo mặc định, mô tả gỡ lỗi của một đối tượng giống như mô tả của đối tượng. Tuy nhiên, bạn có thể ghi đè lên debugDescription nếu bạn muốn tách chúng ra; nhiều đối tượng Cocoa làm điều này.

Nếu bạn có debugDescription được triển khai, in đối tượng trong GDB sẽ hiển thị kết quả của nó. Biết rằng description được sử dụng trong giao diện người dùng (tôi biết các ràng buộc làm điều đó), bạn có thể muốn sử dụng điều này để in một số thông tin bổ sung mà người dùng không cần phải xem.

1

Một bổ sung cho những gì đã được thông báo.

Nếu bạn muốn cải thiện đầu ra khi làm việc với po trong lldb, bạn có thể ghi đè phương thức debugDescription. Chỉ cần ghi nhớ rằng tự in (bản thân đối tượng) sẽ gọi phương thức mô tả. Nếu vì lý do nào đó, <ClassName: objectAddress> không tốt cho bạn cũng sẽ ghi đè phương thức đó.

Vì vậy, quan điểm của tôi ở đây là nhấn mạnh rằng bản in sẽ gọi phương thức description, trong khi po gọi debugDescription theo mô tả cuộc gọi mặc định. Cho điều này bạn có thể phân biệt kết quả của các cuộc gọi đó.