码迷,mamicode.com
首页 > 系统相关 > 详细

cocos2dx 3.9.1 mac模拟器log输出bug修正

时间:2016-01-16 22:25:57      阅读:244      评论:0      收藏:0      [点我收藏+]

标签:

今天发现某些情况下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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!