iOS 诡异的崩溃EXC_BREAKPOINT (code=1, subcode=0x1c5691d2c)

6 篇文章 0 订阅

系统 : iOS 13.3.1
机型: iPhone7
在这里插入图片描述

  dispatch_async(_jsContextQueue, ^{
        JSContext *jscontent = [[JSContext alloc] init];
        [UIWebView class];
    });

看代码,按照正常思维理解, [UIWebView class]是无论如何都不应崩溃的。

起初按照惯性思维去查找僵尸变量,忙活了半天没有定位。
最终定位结果如下:
在没有调用过UIWebView的任何方法时,先在非主线程中调用UIWebView方法,则会导致崩溃

本文的相关代码如下

#import "ViewController.h"
#import <JavaScriptCore/JavaScriptCore.h>

@interface ViewController ()<UITableViewDelegate,UITableViewDataSource>
{
    dispatch_queue_t _jsContextQueue;
}
@end

@implementation ViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
    _jsContextQueue = dispatch_queue_create("jscontext", NULL);
    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
        dispatch_async(_jsContextQueue, ^{
            JSContext *jscontent = [[JSContext alloc] init];
            [UIWebView class];
        });
    });
}
@end

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
"thread 1: exc_bad_access code" 是指在程序运行时发生了“访问非法内存”的错误。这种错误通常是由于代码中对一个不存在或不可访问的内存地址进行读取或写入操作引起的。 当一个线程尝试访问一个无效的内存地址时,操作系统会报告一个异常(exception),通常称为“exc_bad_access”。这个异常的错误代码(code)可能会提供更多关于错误的具体信息。 常见的导致“exc_bad_access code”错误的情况包括: 1. 空指针引用:尝试访问一个指向空地址的指针。 2. 野指针引用:尝试访问一个已经释放或不再有效的内存。 3. 数组越界访问:尝试访问一个数组之外的元素。 4. 访问已释放的对象:尝试访问一个已经释放的对象的成员变量或方法。 5. 内存溢出:尝试访问操作系统未分配给程序的内存空间。 要解决“thread 1: exc_bad_access code”错误,可以通过以下方式: 1. double-check代码中的指针或数组访问,确保没有空指针引用或越界访问。 2. 确保在访问动态分配的内存(如对象或数组)之前,它们已经正确地分配和初始化。 3. 如果有多个线程访问同一块内存,请使用同步机制(如互斥锁)来避免竞争条件和数据访问冲突。 4. 调试程序以查找并纠正任何内存错误,可以使用调试器或打印出相关变量的值进行排查。 总之,“thread 1: exc_bad_access code”表示程序出现了访问非法内存的错误,需要审查代码并修复相关问题才能消除错误。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值