今天发现某些情况下mac模拟器会出现不输出log的情况, 跟踪了一下发现问题出现在mac/SimulatorApp.mm文件的handleNotification方法。
NSString *str = [[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding] autorelease];
这句代码在某些情况下str会为nil值导致模拟器不会输出任何log, 原因可能是data的编码中存在个别字符乱码导致整体不输出的情况。
修改后的代码如下
- (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];
if (!str)
{
str =[[[NSString alloc]initWithData:data encoding:NSASCIIStringEncoding] autorelease];
}
if (!str)
{
str = @"encoding NSData to NSString error";
}
//show log to console
[_consoleController trace:str];
if(_fileHandle!=nil)
{
[_fileHandle writeData:[str dataUsingEncoding:NSUTF8StringEncoding]];
}
}
当用utf8无法正常解码改用asc解码输出,这样就能看见输出了
cocos2dx 3.9.1 mac模拟器log输出bug修正
原文:http://www.cnblogs.com/ColaZhang/p/5136481.html