[闪退!!!][崩溃!!Crash]LayaNative 2.8.0 js 调用 oc 同步方法,有返回值的时候崩溃

附件上传一直提示失败,复现工程 ts代码 加 oc 代码 传百度云了:链接:https://pan.baidu.com/s/1UwniVdD-KQKbjv56s5RYiw 
提取码:1111 
复制这段内容后打开百度网盘手机App,操作更方便哦
 
问题:我在oc层写了个获取电量 和 获取系统剪切板的方法。然后js层通过native调用,我发现调用这两个方法的会后,app突然奔溃了。
ts代码中我注释了获取剪切板类容的代码,保留了同步获取电量信息的方法调用。一下子就奔溃了。希望官网帮忙看看。感激不尽。
 
bug1.png bug2.png
已邀请:

唐家灬三少

赞同来自: nothing

我之前也遇到 IOS Native 工程 SDK 1.0.7,也是会出现崩溃,闪退的问题。主要是我这边的崩溃,闪退是随机出现,不知道在何种时候就会出现,而且频率很高,经测试在 ios 13.1.3版本从是 必现。其他版本,出现频率很高。我这边又接了很多第三方SDK,我全屏蔽注释掉还是会奔溃,还是没找到什么原因,用bugly,听云,来定位只能定位到底层的问题。最后,我是彻底换了 wk项目,倒是没有出现崩溃,闪退的问题了

130*****753

赞同来自:

经测试LayaNative2.6.0也存在此问题。百度说,这个错误是访问的对象已经被释放了!

130*****753

赞同来自:

经反复测试,如返回 NSString *s = [NSString StringWithString:@"哈哈哈,辣鸡laya"];
return s;
app必定奔溃。
而直接返回
return @"哈哈哈";
则不会奔溃。

nothing

赞同来自:

个人开发者实在无力解决,希望官方帮忙看看呀

nothing

赞同来自:

 
2020-12-10 19:03:43.642443+0800 layabox[1694:38272] xhr.get url=http://192.168.31.159:8900/bin/prefab/DropBox.json
2020-12-10 19:03:43.649089+0800 layabox[1694:38272] found the file in the package:b2c6176d
 
2020-12-10 19:03:47.362020+0800 layabox[1694:38272] -------------开始测试js call oc ------------------
2020-12-10 19:03:47.362549+0800 layabox[1694:38272]  JSBridge getCurrentElectricQuantity []
2020-12-10 19:03:47.363139+0800 layabox[1694:38272] method return type @
2020-12-10 19:03:47.363832+0800 layabox[1694:38272] JSRuntime::callMethod {
  "v" : "{\"msg\":\"Ëé∑ÂèñÊàêÂäü\",\"data\":{\"level\":0.94999999999999996,\"state\":1},\"code\":1}"
}
2020-12-10 19:03:47.364409+0800 layabox[1694:38272] 测试 js获取到电量信息:{"msg":"获取成功","data":{"level":0.94999999999999996,"state":1},"code":1}
2020-12-10 19:03:48.108975+0800 layabox[1694:38272] -------------开始测试js call oc ------------------
2020-12-10 19:03:48.109688+0800 layabox[1694:38272]  JSBridge getCurrentElectricQuantity []
2020-12-10 19:03:48.110664+0800 layabox[1694:38272] *** -[CFString release]: message sent to deallocated instance 0x600001940000

nothing

赞同来自:

把 官方教程里面的 设置背景颜色方法 像这样 给一个 返回值,就重现bug 崩溃了..
+(NSString *)bgColor:(NSString*)color
{
    
    NSString *str = @"hahahahahaha";
    NSDictionary *dict = @ {
        @"code" : @(1),
        @"msg": @"获取成功",
        @"data": @ {
            @"level": @(0.95),
            @"state" :@(1)
        }
    };
    NSString *res = [JSBridge convertToJsonData:dict];
    
    dispatch_async(dispatch_get_main_queue(), ^{
        AppDelegate * appDelegate = (AppDelegate*)[UIApplication sharedApplication].delegate;
        [appDelegate.launchView setBackgroundColor:color];
    });
    return res;
}
 
+ (NSString *)convertToJsonData:(NSDictionary *)dict
{
    NSError *error;
    NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dict options:NSJSONWritingPrettyPrinted error:&error];
    NSString *jsonString;
 
    if (!jsonData) {
        NSLog(@"%@",error);
    } else {
        jsonString = [[NSString alloc]initWithData:jsonData encoding:NSUTF8StringEncoding];
    }
 
    NSMutableString *mutStr = [NSMutableString stringWithString:jsonString];
 
    NSRange range = {0,jsonString.length};
 
    //去掉字符串中的空格
    [mutStr replaceOccurrencesOfString:@" " withString:@"" options:NSLiteralSearch range:range];
 
    NSRange range2 = {0,mutStr.length};
 
    //去掉字符串中的换行符
    [mutStr replaceOccurrencesOfString:@"\n" withString:@"" options:NSLiteralSearch range:range2];
 
    return mutStr;
}

nothing

赞同来自:

对laya 真的太失望了…写demo不试试有这种返回值的嘛 它写的demo 直接return@“字符串”。没return 字符串对象的…官方运行器我跑起来,返回字符串对象 也是一样的崩…

唐家灬三少

赞同来自:

哦,卧槽,难怪,我查了很久始终没解决这玩意,多谢,大佬的提醒,那你这边是怎么处理的呢

130*****753

赞同来自:

有毒。

唐家灬三少

赞同来自:

@nothing  熊第,你按照这个方式修改就可以了 
截屏2020-12-14_上午9.40_.42_.png
这个是 以前的, 
截屏2020-12-14_上午9.41_.00_.png

这个是在github上最新的,我也是根据 184*****872  这位大佬的提示去看的,果然是做了改变,只是没看到有官方说明,,而且我还是用的1.x版本这些改动根本就没有也没有对应说明, 我这更蛋疼,你去github下载2.x版本 NAtive就行

唐家灬三少

赞同来自:

这个问题也终于解决了,我之前用 Native版本时出现的崩溃问题.https://ldc.layabox.com/layadownload/?type=layaairnative-LayaAir%20Native%20SDK%201.0.7这个是 1.x的更新日志, 这个是https://ldc2.layabox.com/layadownload/?type=layaairnative-LayaNative-Release-2.9.0 2.x的更新日志。我这边也没看到他们有说明,这个真的蛋疼,我现在这边 用 Wkwebview 又遇到一个 问题,Http Post body失效的问题也是个蛋疼的问题

1631504294用户

赞同来自:

iOS这个问题解决了嘛?现在哪个版本的native修复了这个问题,还是说只能通过回调传值。

要回复问题请先

商务合作
商务合作