作者ratbert (鼠伯特)
看板MacDev
标题Re: [问题] - (NSString *)description 中文印不出来
时间Sun Nov 20 17:40:20 2011
※ 引述《ratbert (鼠伯特)》之铭言:
: obj-c 新手请问
: 我有一个 instance variable type 是 id:
: @interface A : NSObject
: @property (retain) id item;
: @end
: 然後我帮这个 class implement 一个简单的 description:
: @implementation A
: @synthesize item;
: - (NSString *)description
: {
: return [NSString stringWithFormat:@"(%@)", self.item];
: }
: @end
: 我把一个 NSString assign 给 id 这个 type 的 instance variable
: 然後我想印 A 这种 object:
: A *a = [[A alloc] init];
: a.item = @"8月";
: NSLog(@"%@", a);
: 印出来的东西变成类似这样:
: "(8\U6708)"
: 请问这是为什麽呢?
发现跟 NSArray 有关
修改一下 uranusjr 网友的 source code
----------->8----------->8-----------
#import <Foundation/Foundation.h>
@interface ObjectA : NSObject
@property (retain) id item;
@end
@implementation ObjectA
@synthesize item;
- (NSString *)description
{
return [NSString stringWithFormat:@"(%@)", [self item]];
}
@end
NSArray *test(void)
{
ObjectA *obj = [[[ObjectA alloc] init] autorelease];
obj.item = @"8月";
NSMutableArray *array = [[[NSMutableArray alloc] init] autorelease];
[array addObject:obj];
return array;
}
int main (int argc, const char * argv[])
{
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
NSArray *array = test();
NSLog(@"%@", array);
[pool drain];
return 0;
}
-----------8<-----------8<-----------
这样的话印出来的结果是
2011-11-20 17:27:45.615 TestUTF8[2154:207] (
"(8\U6708)"
)
是不是问题出在 NSArray 本身的 description method 就是会印成这样咧?
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.37.145.173
1F:→ uranusjr:看来是这样没错 11/20 18:25
2F:→ ratbert:伤脑筋, 酱很难用咧... 11/20 19:14