2009-09-09 23 views
7

Mô tả mặc định cho phiên bản lớp trả về "ClassName: 0x105120". Làm cách nào tôi có thể sửa đổi phương thức bên dưới để chỉ trả về "ClassName"?Mô tả để chỉ trả về ClassName?

// The code below just returns the address ... 
- (NSString *)description { 

NSString *result; 

result = [NSString stringWithFormat:@"%p", self]; 
    return result; 
} 

EDIT: trong trường hợp này có đúng không? Mặc dù tôi hiểu rằng nếu tôi muốn thực sự có được className như một NSString tôi nên sử dụng NSStringFromClass ([tự lớp])

- (id)init { 
NSLog(@"_init: %@", [self class]); 
[super init]; 
return self; 
} 

cảm ơn trước -gary-

+0

tại sao bạn không chỉ cần sử dụng một cách chính xác để có được tên của lớp 'NSLog (@ "_ init: % @ ", NSStringFromClass ([lớp tự]]);'? –

Trả lời

20

iPhoneOS: NSStringFromClass([self class])
MacOS : [self className]

... mang đến cho bạn một NSString với tên lớp

Chỉnh sửa:

Đối với cả hai iPhoneOS và MacOS con đường để đi là:

NSStringFromClass([self class])

+4

'NSStringFromClass' thực sự là cách thích hợp để thực hiện trên Mac OS X. '-className' là một phần của một thể loại trên NSObject có nghĩa là cho kịch bản. – kperryua

+0

Tôi không biết điều đó, cảm ơn! –

+0

Hoặc, trong Mục tiêu-C 2.0 và cao hơn, bạn có thể chỉ cần nói: 'NSStringFromClass (self.class)' sử dụng ký pháp chấm. –

Các vấn đề liên quan