首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    iOS Crash不崩溃

    用户在使用App的过程中,经常遇到闪退的情况,体验不太好,本文尝试探索引发闪退的原因,以及在遇到crash的情况下,尽可能的保持程序运行,并及时上报错误。...2.Signal层面的crash 除了OC层面的异常捕获之外,很多内存错误、访问错误的地址产生的crash则需要利用unix标准的signal机制,注册SIGABRT, SIGBUS, SIGSEGV等信号发生时的处理函数...2.3 针对unrecognized selector解决方案 通常,当我们不能确定一个对象是否能接收某个消息时,会先调用respondsToSelector:来判断一下。...如下代码所示: if ([self respondsToSelector:@selector(method)]) { [self performSelector:@selector(method)];...如果都不中,调用doesNotRecognizeSelector抛出异常。

    2.2K20

    NSObject头文件解析 消息机制 Runtime解读 (一)

    , 还可以用来阻止某一个方法被继承,后面我们再单独演示下 - (void)doesNotRecognizeSelector:(SEL)aSelector; //当消息经过动态解析后尚未被处理时, 重写这个方法后会调用这个方法进行重定向给其他类去实现...BOOL)allowsWeakReference UNAVAILABLE_ATTRIBUTE; - (BOOL)retainWeakReference UNAVAILABLE_ATTRIBUTE; //检查是否为...使用instanceType类型返回的对象编译器能找到他的属性方法 所以使用InstanceType是为了能更好的帮助编译器找到对象的属性和方法, 减少不必要的错误 Copy 和MutableCopy..., 多用来阻止子类继承某一方法 在子类重写父类的方法, 加入doesNotRecognizeSelector方法 - (void)methodA { [self doesNotRecognizeSelector...printA后打印print A, 调用modify方法后再调用printA打印print C - (void)viewDidLoad { [super viewDidLoad];

    1.3K31

    小萝莉说Crash(二): Unrecognized selector xxx 之 ForwardInvocation

    ^_^ 在上篇的分享中,小萝莉给大家介绍了一个入门必现的应用崩溃问题 —— Unrecognized selector sent to instance xxx,通过分析其出现的主要场景,给大家提出了一些避免出现此类问题的建议...sent to instance xxx问题是在一个消息传递转发流程执行完毕后,实在是找不到可以接收消息的对象时,才会抛出一个崩溃错误。...对应方法的签名,如果有方法签名返回,则根据方法签名创建描述消息的NSInvocation,向当前对象发送forwardInvocation:消息,如果没有方法签名返回,即返回值为nil,则向当前对象发送doesNotRecognizeSelector...nil) { // 使用代理类处理消息 ForwardProxy *p = [[ForwardProxy alloc] init]; if ([p respondsToSelector...后,通过宏定义控制在发布版本生效,在开发阶段的还是要把此类问题暴露,并尽早做修复处理。

    2.4K50
    领券