zoukankan      html  css  js  c++  java
  • cocos2dx 3.9.1 mac模拟器log输出bug修正

    今天发现某些情况下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解码输出,这样就能看见输出了

      

  • 相关阅读:
    沙龙:超越敏捷 召集中![广州]
    超级扫盲什么是设计模式?
    大话UML
    敏捷开发纵横谈
    超越竞争对手的秘密武器技术重用
    1.1 基础知识——CMMI是什么东西?
    Tutorial 2: Rendering a Triangle
    Tutorial 4: 3D Spaces
    Tutorial 5: 3D Transformation
    D3D11中的绘制
  • 原文地址:https://www.cnblogs.com/ColaZhang/p/5136481.html
Copyright © 2011-2022 走看看