240 发简信
IP属地:广东
  • 还有一种情况:
    crash 2、
    Thread name: main Dispatch queue: Internal _UICache queue
    Thread 0 Crashed:
    0 libobjc.A.dylib 0x0000000195caadd0 objc_release
    1 CoreFoundation 0x00000001810cd398 -[__NSDictionaryM removeAllObjects]
    2 libdispatch.dylib 0x0000000180dd381c _dispatch_client_callout
    3 libdispatch.dylib 0x0000000180de2910 _dispatch_lane_barrier_sync_invoke_and_complete
    4 UIFoundation 0x000000018a4d8910 __50-[_UICache setClearsCacheOnApplicationBackground:]_block_invoke
    5 Foundation 0x000000018246a53c -[__NSObserver _doit:]
    6 CoreFoundation 0x00000001811416d4 __CFNOTIFICATIONCENTER_IS_CALLING_OUT_TO_AN_OBSERVER__
    7 CoreFoundation 0x000000018114167c ___CFXRegistrationPost_block_invoke
    8 CoreFoundation 0x0000000181140be8 _CFXRegistrationPost
    9 CoreFoundation 0x00000001811405a8 _CFXNotificationPost
    10 Foundation 0x00000001824456ac -[NSNotificationCenter postNotificationName:object:userInfo:]
    11 UIKitCore 0x0000000183be0438 __47-[UIApplication _applicationDidEnterBackground]_block_invoke
    12 UIKitCore 0x00000001834b94d8 +[UIViewController _performWithoutDeferringTransitionsAllowingAnimation:actions:]
    13 UIKitCore 0x0000000183be01d0 -[UIApplication _applicationDidEnterBackground]
    14 UIKitCore 0x000000018322cc58 __101-[_UISceneLifecycleMultiplexer _evalTransitionToSettings:fromSettings:forceExit:withTransitionStore:]_block_invoke_2

    iOS crash分析实践

    背景 分享一些过去两个月遇到的crash。 正文 一、运行时错误 1、UICollectionView的调用顺序 从堆栈可以看出是indexPath无效,通常是indexPa...

  • 落影大哥,最近收集到一个非常难解的crash问题,都在主线程,crash日志如下:

    crash 1、
    Thread name: main Dispatch queue: Internal _UICache queue
    Thread 0 Crashed:
    0 libobjc.A.dylib 0x000000018b4d8020 objc_retain
    1 UIFoundation 0x000000018ee01f78 __25-[_UICache objectForKey:]_block_invoke
    2 libdispatch.dylib 0x000000018b463184 _dispatch_client_callout
    3 libdispatch.dylib 0x000000018b446dc8 _dispatch_lane_barrier_sync_invoke_and_complete
    4 UIFoundation 0x000000018ed47e98 -[_UICache objectForKey:]
    5 UIFoundation 0x000000018ede5504 UINewFontIgnoringLinkCheck
    6 UIFoundation 0x000000018ed48074 +[UIFont systemFontOfSize:traits:]

    我们目前能知道的就是,UIFont的缓存机制,在_UICache(进入后台释放UIFont,创建时使用UIFont缓存)中进行释放和持有时产生的crash。
    现在就是找不到原因,为什么会产生这种crash
    不知道大哥之前是否遇到过这种问题呢

    iOS crash分析实践

    背景 分享一些过去两个月遇到的crash。 正文 一、运行时错误 1、UICollectionView的调用顺序 从堆栈可以看出是indexPath无效,通常是indexPa...

  • 120
    基于runloop的线程保活、销毁与通信

    首先看一段AF2.x经典代码: 首先我们要明确一个概念,线程一般都是一次执行完任务,就销毁了。 而添加了runloop,并运行起来,实际上是添加了一个do,while循环,这...

  • 就是不要每次都去复用池中取cell,自己用一个属性保存cell,要更新cell,就直接更新自己保存的cell

    对UITableViewCell刷新造成动画失效的问题记录

    对UITableViewCell刷新造成动画失效的问题记录 现象: 在UITableViewCell刷新时,即调用- (UITableViewCell)tableView:(...

  • @落影loyinglin 所以NSMutableArray的话,如果为了共享数据是使用strong的吧。
    我理解的是:使用copy的初衷就是为了传递后,数据独立,不会相互影响。NSArray本身是不可变的,进行写操作后也是新的对象地址,所以使用strong和copy效果一样的。
    但是就怕外界传进来的NSArray是NSMutableArray类型,在外界会修改,如果使用strong就会导致数据相互影响。所以建议使用copy修改NSArray。
    如果就是需要外界的NSMutableArray用来共享数据,则使用strong。

    iOS crash分析实践

    背景 分享一些过去两个月遇到的crash。 正文 一、运行时错误 1、UICollectionView的调用顺序 从堆栈可以看出是indexPath无效,通常是indexPa...

  • @落影loyinglin 了解了,谢谢了哈。
    之前遇到一个字节的面试官问我修饰数组用什么关键字,我说看业务情况,比如有些业务就是需要读写共享同一个数组,那我就会用strong,否则用copy。但是面试官的意思就是使用copy,真的是只要用数组就用copy吗?

    iOS crash分析实践

    背景 分享一些过去两个月遇到的crash。 正文 一、运行时错误 1、UICollectionView的调用顺序 从堆栈可以看出是indexPath无效,通常是indexPa...

  • 最近遇到一个奇怪的问题,Demo如下:

    #import "TestObject.h"

    @interface TestObject ()

    @property (nonatomic, strong) NSDictionary *views;

    @end

    @implementation TestObject

    - (instancetype)init {
    self = [super init];
    if (self) {
    self.views = @{@"1" : @"a",
    @"2" : @"b"};
    }
    return self;
    }

    - (TestObject *)test {
    if (!self.views) {
    return self;
    }
    for (NSString *view in self.views.allKeys) {
    NSLog(@"== %@ ==", view);
    }
    return self;
    }

    - (void)dealloc {
    [self test];
    }

    @end

    该对象释放时必crash,原因是重复释放了

    如果删除test方法中的
    if (!self.views) {
    return self;
    }
    或者删除
    for (NSString *view in self.views.allKeys) {
    NSLog(@"== %@ ==", view);
    }
    或者将for in改成for
    都不会crash。。。我傻了

    iOS crash分析实践

    背景 分享一些过去两个月遇到的crash。 正文 一、运行时错误 1、UICollectionView的调用顺序 从堆栈可以看出是indexPath无效,通常是indexPa...

  • 120
    iOS:Category中的方法都在App启动时才添加吗?

    前言:Category在Objc中非常重要,在平时的iOS的面试中针对Category的问题更是层出不穷,如:1)Category中的方法加载顺序?2)Category中的方...

  • 为什么题目3可以正常运行?(答案见附录最后一篇)
    这个附录最后一篇不就是当前这篇博客吗

    iOS property的多线程问题解析

    正文 问题列表 1、以下这段代码,在主线程执行会输出什么? 2、稍作修改,以下代码在主线程执行会输出什么? 3、换了个类型,以下代码在主线程执行会输出什么? 问题分析 题目1...

  • 分类实现多继承,我的理解是原类继承了自己的多个分类的方法吧

    iOS多继承的实现及区别

    来自我的个人博客Minecode.link 多继承可以允许子类从多个父类派生,而Objective-C并不支持多继承,但我们仍可间接实现。 Objective-C实现多继承主...

  • 协议定义的属性只是自动声明set/get方法,没有对应的实例对象_property。

    iOS多继承的实现及区别

    来自我的个人博客Minecode.link 多继承可以允许子类从多个父类派生,而Objective-C并不支持多继承,但我们仍可间接实现。 Objective-C实现多继承主...

  • @So_Cool 我目前的解决策略就是文章中写的啊~

    对UITableViewCell刷新造成动画失效的问题记录

    对UITableViewCell刷新造成动画失效的问题记录 现象: 在UITableViewCell刷新时,即调用- (UITableViewCell)tableView:(...

  • 谢谢你的肯定啦,如果你可以使用一下,提点意见就更好了~

    一个基于CAAnimation的动画工具

    BinAnimation Link to GitHub 为什么使用 必要性:作为 iOS 开发工程师,在日常的开发工作中,虽然不需要像游戏开发一样设计各式各样酷炫的动画,但是...

  • 首先,你是我的第一位评论者,感谢!!!:smile:
    但是我这边的场景不是上下滑动,而是调用[self.tableview reloadData];的时候,会发现cell缓存池中的cell没有动画了。

    对UITableViewCell刷新造成动画失效的问题记录

    对UITableViewCell刷新造成动画失效的问题记录 现象: 在UITableViewCell刷新时,即调用- (UITableViewCell)tableView:(...

  • BinCodeScannerSDK

    BinCodeScannerSDK BinCodeScannerSDK 是一个扫码器。 我的优势是什么 其实 iOS 原生的扫码器已经可以应对绝大多数的使用场景,但是针对特殊...