首页
学习
活动
专区
圈层
工具
发布

iOS类簇代码保护引发的Crash原因排查全记录

二、问题初步排查 在程序启动后,APP 会卡死一段时间,然后出现闪退,从闪退的堆栈上不难看出,这里是方法发生了循环调用: 这里的方法是对NSString方法的 - (NSString *)stringByAppendingString...尝试在这个方法交换中打个断点,看看在触发方法时发生了什么,发现这个方法被触发了多次,其中一次触发的堆栈很奇怪: 可以看到这个方法被第三方的 SDK 触发过一次,而这个 SDK 就是本次业务新增的,这里可以获取到一个信息...顺着堆栈找到了 K 歌的 MethodSwizzle 调用 可以发现 K 歌这里并不是直接对 NSString 和 NSMutableString 进行的方法替换,而是直接往其类簇的真正实现类 __NSCFString...我们这里可以尝试构建一个 __NSCFString 对象,看看其与 NSString 的继承关系。...我们可以通过在 LLVM 中 po 一下对象的 _ivarDescription 来观察__NSCFString 的继承信息 可以看到 __NSCFString 确实是继承于 NSString ,属于

56610

Core Foundation & Foundation

当 NSString 的其中一个私有子类实现即为 NSCFString,其内存的结构与 CFString 是相同的,CFString 的 isa 指针就指向 NSCFString 类,即,CFString...对象就是一个 NSCFString 类的实例。...所以,当 NSString 的实现刚好是 NSCFString 的时候,他们两者之间的转换是相当容易而直接的,他们就是同一个类的实例。...当 NSString 的实现不是 NSCFString 的时候(比如我们自己 subclass 了 NSString),我们调用 CF 函数,就需要先检查对象的具体实现。...如果发现其不是 NSCFString,我们不会调用 CF 函数的实现来获得结果,而是通过给对象发送与函数功能相对应的 ObjC 消息(调用相对应的 NSString 的接口)来获得其结果。

73230
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    ARC内存管理中容易忽略的问题

    0x7fb6e7d1c3a0 0x10e6a7280 (1) 关于stringWithFormat和initWithFormat的区别如果同学是从MRC开发者一路过来的话理解这个很简单,但是ARC...这种指针不通过解引用isa来获取其所属类,而是通过接下来三位的一个类表的索引。该索引是用来查找所属类是采用Tagged Pointer的哪个类。剩下的60位则存储数据。...(3)__NSCFString    对象被存储在堆上。 __NSCFString 对象是在运行时创建的一种 NSString 子类,他并不是一种字符串常量。...ARC下retainCount是无法使用的,获取引用计数(retain count)]的三种方法,虽然不是很准确,但是还是可以鉴别一下当前内存的 (1) 私有方法 OBJC_EXTERN int _...NSHashTable类似于NSSet和NSMutableSet合体,NSHashTable是可变的,可以使用 NSHashTableWeakMemory ,此选项使用weak存储对象,当对象被销毁的时候自动将其从集合中移除

    1.5K20

    从 GitHub 上获取文件内容

    的 Spring Cloud 中有一个重要的部分就是集中配置: 如图所示,将后台服务的配置文件集中存储于远程的GitHub库,然后通过配置服务去拉取库中的配置信息,而不同的微服务则统一通过配置服务获取其需要的配置信息...当然GitHub作为一个开放的平台用来存储配置文件完全没问题,而存储了之后怎么读取呢,这才是我想说的内容,也是本文的标题:从 GitHub 上获取文件内容。...01 — Developer API 如何从 GitHub 上获取文件内容,我的第一反应是爬虫啊,地址都知道直接爬就行了嘛,没错,爬虫没问题啊,但是爬下来还需要额外去抓取指定标签才能获取到你想要的内容,...获取指定库中文件内容的接口文档: 示例: 上述内容对公开库没问题,但是如果是私有库呢,我们就必须加上认证信息了。...本文简单描述了如何从 GitHub 上获取文件内容,完。

    5.8K50

    Power BI 从 Dataverse 获取数据

    AI builder:这是未来发展趋势,AI人工智能获取那些非结构化的模型以得到数据。 Dataverse:数据存储的元宇宙。不仅仅是个数据库。...今天只来说一说从Power BI中如何获取Dataverse里的数据,以及想要使用Dataverse需要的条件。...Power BI获取Dataverse数据 1、点击Power BI主页上的“数据”工作区的Dataverse: 当然,前提是你已经有了Power BI账号,并且已经有了Dataverse数据表。...(别急,慢慢说) 2、选择想要导入的表格,勾选并加载 3、选择数据连接模式 直接选择DirectQuery直连模式,为方便以后我们的实时数据修改与获取操作。...从一开始的无限刷新,到后来的异步刷新,从使用Forms借助于SharePoint List到现在的使用dataverse和powerapps来实时数据联动。

    5.6K30

    从 GitHub 上获取文件内容

    的 Spring Cloud 中有一个重要的部分就是集中配置: 如图所示,将后台服务的配置文件集中存储于远程的 GitHub 库,然后通过配置服务去拉取库中的配置信息,而不同的微服务则统一通过配置服务获取其需要的配置信息...当然 GitHub 作为一个开放的平台用来存储配置文件完全没问题,而存储了之后怎么读取呢,这才是我想说的内容,也是本文的标题:从 GitHub 上获取文件内容。...01 — Developer API 如何从 GitHub 上获取文件内容,我的第一反应是爬虫啊,地址都知道直接爬就行了嘛,没错,爬虫没问题啊,但是爬下来还需要额外去抓取指定标签才能获取到你想要的内容,...获取指定库中文件内容的接口文档: 示例: 上述内容对公开库没问题,但是如果是私有库呢,我们就必须加上认证信息了。...本文简单描述了如何从 GitHub 上获取文件内容,完。

    2.8K20
    领券