ios 开发探索源码三种方法

1.下符号断点的形式直接跟流程

2.通过摁住 control + step  into

3.汇编查看跟流程

1.符号断点直接跟流程

以alloc为例:

选择断点Symbolic Breakpoint

符号断点中输入 alloc

运行项目

这样,我们就找到了alloc 的源码libobjc.A.dylib库

最后,我们去苹果开源源码:https://opensource.apple.com/tarballs/找到对应的库,下载到本地电脑就可以查看源码啦

2.通过摁住 control + step  into

在alloc处打一个断点,当断点执行到alloc时,按住control然后点击step into

再下一个objc_alloc符号断点,符号断点后显示了 objc_alloc所在的源码库

3.汇编查看跟流程

按住control,点击 step into 键进入,看到断点断在objc_alloc部分

最后同样通过objc_alloc的符号断点,得知源码所在库

iOS底层原理01:源码探索的三种方式的更多相关文章

  1. Spring MVC工作原理及源码解析(三) HandlerMapping和HandlerAdapter实现原理及源码解析

    1.HandlerMapping实现原理及源码解析 在前面讲解Spring MVC工作流程的时候我们说过,前端控制器收到请求后会调⽤处理器映射器(HandlerMapping),处理器映射器根据请求U ...

  2. iOS --- UIWebView的加载本地数据的三种方式

    UIWebView是IOS内置的浏览器,可以浏览网页,打开文档  html/htm  pdf   docx  txt等格式的文件.  safari浏览器就是通过UIWebView做的. 服务器将MIM ...

  3. 底层原理Hashmap源码解析实例

    Map.java package com.collection; public interface Map<K, V> { public V put(K k, V v); public V ...

  4. Java获得字节码对象的三种方式

    1.Class 类的forName方法 Class clazz = Class.forName("com.test.Test"); 该方法要注意的是会抛出一个ClassNotFou ...

  5. OpenCV学习笔记(27)KAZE 算法原理与源码分析(一)非线性扩散滤波

    http://blog.csdn.net/chenyusiyuan/article/details/8710462 OpenCV学习笔记(27)KAZE 算法原理与源码分析(一)非线性扩散滤波 201 ...

  6. Golang源码探索(二) 协程的实现原理(转)

    Golang最大的特色可以说是协程(goroutine)了, 协程让本来很复杂的异步编程变得简单, 让程序员不再需要面对回调地狱,虽然现在引入了协程的语言越来越多, 但go中的协程仍然是实现的是最彻底 ...

  7. Golang源码探索(三) GC的实现原理(转)

    Golang从1.5开始引入了三色GC, 经过多次改进, 当前的1.9版本的GC停顿时间已经可以做到极短.停顿时间的减少意味着"最大响应时间"的缩短, 这也让go更适合编写网络服务 ...

  8. 《深入探索Netty原理及源码分析》文集小结

    <深入探索Netty原理及源码分析>文集小结 https://www.jianshu.com/p/239a196152de

  9. Mybaits 源码解析 (三)----- Mapper接口底层原理(为什么Mapper不用写实现类就能访问到数据库?)

    上一篇我们讲解到mapperElement方法用来解析mapper,我们这篇文章具体来看看mapper.xml的解析过程 mappers配置方式 mappers 标签下有许多 mapper 标签,每一 ...

  10. iOS底层原理总结 - 探寻block的本质(一)

        面试题 block的原理是怎样的?本质是什么? __block的作用是什么?有什么使用注意点? block的属性修饰词为什么是copy?使用block有哪些使用注意? block在修改NSMu ...

随机推荐

  1. C++数组(二):二维数组

    二维数组 什么是二维数组?二维数组就是在一维数组的基础上增加一个维度. 二维数组的定义方式 数据类型 数组名[行数][列数]; int arr[2][3]; arr[0][0] = 1; arr[0] ...

  2. 2022-05-11内部群每日三题-清辉PMP

    1.一个低概率/高影响的技术风险发生了. 项目经理该怎么做? A. 提交变更请求来调整成本和进度基准 B. 进行风险审查,评估其对项目可交付成果的影响 C. 实施风险登记册中概述的减轻计划 D. 查询 ...

  3. ENGG1310 Electricity and electronics P1.1 microelectronics & optoelectronics

    课程内容笔记,自用,不涉及任何 assignment,exam 答案 Notes for self use, not included any assignments or exams 听说这节课内容 ...

  4. Java基础学习:11、断点调试

    1.可以用来查看错误以及查看代码的运行过程. 2.如何使用:

  5. Pytorch实战学习(一):用Pytorch实现线性回归

    <PyTorch深度学习实践>完结合集_哔哩哔哩_bilibili P5--用Pytorch实现线性回归 建立模型四大步骤 一.Prepare dataset mini-batch:x.y ...

  6. kafka 常见命令以及增加topic的分区数

    基础命令 1.创建topic kafka-topics.sh --bootstrap-server ${kafkaAddress} --create --topic ${topicName} --pa ...

  7. java异常信息打印

    如果你不仅想在日志中查看异常信息,也想把异常信息保存起来作为数据查看,那么你可以这样做 public void printException(Exception e) { ByteArrayOutpu ...

  8. Android GNSS模块详解

    1. 参考https://blog.csdn.net/yang_mao_shan/category_12133410.html GNSS 架构是从 应用层 ---> 通过原生 jar 包 --- ...

  9. 浏览器是如何区分http和https协议的

    浏览器的默认解析 我们在浏览器的地址栏中输入一个域名 taobao.com(不要按回车), 然后将地址栏进行复制,粘贴到文本文件后,发现是 http://taobao.com/. 这是浏览器的默认解析 ...

  10. docker 安装 elasticsearch7.6.2 kibana7.6.2

    [root@abcdefg bin]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 6896f6e3202c ...