2009-07-09 21 views

Trả lời

240

Đây là phương pháp description dụ, khai báo là:

- (NSString *)description 

Dưới đây là ví dụ triển khai (nhờ grahamparks):

- (NSString *)description { 
    return [NSString stringWithFormat: @"Photo: Name=%@ Author=%@", name, author]; 
} 
+5

Lưu ý nếu bạn đang sử dụng CoreData, thuộc tính 'description' [được dành riêng] (http://stackoverflow.com/questions/4717519/why-cant-i-use- description-as-an-attribute-name-cho-một-core-dữ liệu-thực thể) ... và sẽ cung cấp thông tin gỡ lỗi hữu ích! Trong trường hợp đó, bạn sẽ cần phải đưa ra tên phương thức duy nhất của riêng mình. – Nuthatch

+0

«debugDescription' có được bảo lưu không? Mặc dù tôi nghĩ rằng 'DebugDescription' là nghĩa vụ phải được sử dụng bởi một trình gỡ lỗi như LLDB. – MaddTheSane

24

Bạn có thể ghi đè lên các phương pháp mô tả của NSObject:

- (NSString *)description 

Về vấn đề khai thác gỗ Tôi khuyên bạn nên blog post này cho khai thác gỗ tốt hơn trong Objective-C.

+4

không Đây có phải là một phương pháp tĩnh? Tôi muốn điều này hoạt động trên các đối tượng hơn là lớp học. Ví dụ, nếu tôi có một lớp "Ảnh", với các trường "tên" và "tác giả", tôi muốn NSLog in các trường đó khi chúng được gán trong đối tượng. –

+2

Có - phát hiện tốt - tôi đã nhấn phím sai. Tôi rõ ràng nên chú ý hơn khi đọc bằng chứng đọc câu trả lời của tôi. Rất may khi có ai đó để mắt đến quả bóng :-) – teabot

34

Thêm phần này vào @implementation của lớp hình ảnh của bạn:

- (NSString *)description { 
    return [NSString stringWithFormat:@"Photo: Name=%@ Author=%@",name,author]; 
} 
13

Có hai chức năng bạn có thể se.

- (NSString*)description 

Điều này sẽ được hiển thị khi bạn đặt đối tượng là, I.E. thông số cho NSLog. Chức năng mô tả khác là:

- (NSString*)debugDescription 

Điều này sẽ được gọi khi bạn làm po anInstanceOfYourClass trong cửa sổ lệnh gỡ lỗi. Nếu lớp học của bạn không có chức năng debugDescription thì chỉ cần description mới được gọi.

Lưu ý rằng lớp cơ sở NSObject không có description được triển khai, nhưng nó khá trống: nó chỉ hiển thị địa chỉ của đối tượng. Đây là lý do tại sao tôi khuyên bạn nên triển khai description trong bất kỳ lớp nào bạn muốn nhận thông tin, đặc biệt nếu bạn sử dụng phương thức description trong mã của mình. Nếu bạn sử dụng description trong mã của mình, tôi khuyên bạn cũng nên triển khai debugDescription, đồng thời cũng làm cho chi tiết hơn là chi tiết hơn.

1

chí đầu ra này tiếng nói có sẵn:

NSLog((@"speechVoices:%", [[AVSpeechSynthesisVoice speechVoices] description])); 
Các vấn đề liên quan