cocos2d Mac 模拟器打印报错 NSConcreteAttributedString initWithString:: nil value
出现问题是在 SimulatorApp.mm 文件里
- (void)handleNotification:(NSNotification *)note
{
// NSLog(@"Received notification: %@", note);
[_pipeReadHandle readInBackgroundAndNotify] ;
NSData *data = [[note userInfo] objectForKey:NSFileHandleNotificationDataItem];
NSString *str = [[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding] autorelease];
//show log to console
[_consoleController trace:str];
if(_fileHandle!=nil){
[_fileHandle writeData:[str dataUsingEncoding:NSUTF8StringEncoding]];
}
}
NSString *str = [[[NSStringalloc]initWithData:dataencoding:NSUTF8StringEncoding]autorelease];
转换成utf8时 str 为nil, 导致
[_consoleControllertrace:str];
方法
[[NSAttributedStringalloc]initWithString:msgattributes:attrsDictionary];
报出了 msg 为 nil 然后模拟器卡死。
问:为什么str 会为空呢?
答:data如果包含非utf8字符就会返回空,虽然data 可能有数据。
问:为什么data会有非utf8字符呢?
答:可能是由于中文原因,你的文件如果是gbk的编码格式,如果打印没进行转码就是导致这个问题。因为我是用lua写的,一个文件不知道什么情况变成了gbk编码。
就一直包这个错。
解决方法:
找到不是utf8编码的文件修改成 utf8。或者打印执行一次转码。