{"id":13903025,"url":"https://github.com/Desgard/iOS-Source-Probe","last_synced_at":"2025-07-18T00:33:05.235Z","repository":{"id":43137106,"uuid":"63923940","full_name":"Desgard/iOS-Source-Probe","owner":"Desgard","description":"🔎 iOS 源码探求系列 ","archived":false,"fork":false,"pushed_at":"2018-08-08T17:37:34.000Z","size":19311,"stargazers_count":916,"open_issues_count":6,"forks_count":129,"subscribers_count":42,"default_branch":"master","last_synced_at":"2024-11-21T16:59:57.753Z","etag":null,"topics":["apple","ios","markdown","source-code-analysis"],"latest_commit_sha":null,"homepage":"http://www.desgard.com/iOS-Source-Probe/","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Desgard.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-07-22T04:37:00.000Z","updated_at":"2024-11-19T11:51:28.000Z","dependencies_parsed_at":"2022-08-12T10:20:49.506Z","dependency_job_id":null,"html_url":"https://github.com/Desgard/iOS-Source-Probe","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Desgard%2FiOS-Source-Probe","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Desgard%2FiOS-Source-Probe/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Desgard%2FiOS-Source-Probe/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Desgard%2FiOS-Source-Probe/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Desgard","download_url":"https://codeload.github.com/Desgard/iOS-Source-Probe/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":226320865,"owners_count":17606368,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["apple","ios","markdown","source-code-analysis"],"created_at":"2024-08-06T22:01:34.080Z","updated_at":"2024-11-25T11:31:12.799Z","avatar_url":"https://github.com/Desgard.png","language":"Shell","funding_links":[],"categories":["Shell"],"sub_categories":[],"readme":"![](banner-logo.jpg) \n\n(图片设计：**[冬瓜](https://www.behance.net/gallery/41562273/Gua-iOS-Source-Prode)**）\n## Link\n\nGitbook：[iOS 源码探求](https://www.gitbook.com/book/desgard/source-probe/details)\n\n个人博客：[Guardia · 瓜地](http://desgard.com)\n\n小专栏：[iOS 源码探求](https://xiaozhuanlan.com/ios-source-probe)\n\n\u003e 其中**小专栏**需要付费，其他均为免费。当然如果觉得其中收录文章有价值，欢迎到小专栏付费阅读。**如果需要下载成 pdf、mobi 或 epub 可以到 Gitbook 上免费下载。**\n\n## Description\n\n为什么要做这个仓库，是为了促进自己阅读代码，从而巩固自身基础。从非科班出身、acm的错误洗礼下，本人需要认识更多的底层知识，从而纠正自己对*Computer Science*的观念。我将自己理解和阅读的一些源码、文档的笔记与博文与大家分享，接受希望大家的指正。倘若你有兴趣和我一起来阅读源码并分享阅读笔记，可以发起`pull request`。\n\n如有疑问，可以在issue中发起。讨论得出结论，才能获得进步。\n\n本仓库的源码分享暂时以*Objective-C*、*Swift*、*C++*、*C*、*Python*为主，这些是笔者日常接触的语言。如果想与笔者交流，可以关注新浪微博 [@冬瓜争做全栈瓜](http://weibo.com/3633493894/profile?topnav=1\u0026wvr=6)\n\n另外，也可以访问作者个人blog来阅读：[http://www.desgard.com](http://www.desgard.com/)\n\n## Content\n\n| Language | Framework | Version | Article |\n| ----- | --------- | ------ | -------- |\n| Objective-C | `\u003cobjc/runtime.h\u003e` | `708` | [浅谈Associated Objects](https://github.com/Desgard/iOS-Source-Probe/blob/master/Objective-C/Runtime/%E6%B5%85%E8%B0%88Associated%20Objects.md)\u003cbr /\u003e[对象方法消息传递流程](https://github.com/Desgard/iOS-Source-Probe/blob/master/Objective-C/Runtime/objc_msgSend%E6%B6%88%E6%81%AF%E4%BC%A0%E9%80%92%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0%20-%20%E5%AF%B9%E8%B1%A1%E6%96%B9%E6%B3%95%E6%B6%88%E6%81%AF%E4%BC%A0%E9%80%92%E6%B5%81%E7%A8%8B.md)\u003cbr /\u003e[消息转发过程分析](https://github.com/Desgard/iOS-Source-Probe/blob/master/Objective-C/Runtime/objc_msgSend%E6%B6%88%E6%81%AF%E4%BC%A0%E9%80%92%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0%20-%20%E6%B6%88%E6%81%AF%E8%BD%AC%E5%8F%91.md)\u003cbr /\u003e[用 isa 承载对象的类信息](https://github.com/Desgard/iOS-Source-Probe/blob/master/Objective-C/Runtime/%E7%94%A8%20isa%20%E6%89%BF%E8%BD%BD%E5%AF%B9%E8%B1%A1%E7%9A%84%E7%B1%BB%E4%BF%A1%E6%81%AF.md)\u003cbr /\u003e[weak 弱引用的实现方式](https://github.com/Desgard/iOS-Source-Probe/blob/master/Objective-C/Runtime/weak%20%E5%BC%B1%E5%BC%95%E7%94%A8%E7%9A%84%E5%AE%9E%E7%8E%B0%E6%96%B9%E5%BC%8F.md)\u003cbr /\u003e[load 方法全程跟踪](https://github.com/Desgard/iOS-Source-Probe/blob/master/Objective-C/Runtime/load%20%E6%96%B9%E6%B3%95%E5%85%A8%E7%A8%8B%E8%B7%9F%E8%B8%AA.md)\u003cbr /\u003e[浅谈 block（1） - clang 改写后的 block 结构](https://github.com/Desgard/iOS-Source-Probe/blob/master/Objective-C/Runtime/%E6%B5%85%E8%B0%88%20block%EF%BC%881%EF%BC%89%20-%20clang%20%E6%94%B9%E5%86%99%E5%90%8E%E7%9A%84%20block%20%E7%BB%93%E6%9E%84.md)\u003cbr /\u003e[浅谈 block（2） - 截获变量方式](https://github.com/Desgard/iOS-Source-Probe/blob/master/Objective-C/Runtime/%E6%B5%85%E8%B0%88%20block%EF%BC%882%EF%BC%89%20-%20%E6%88%AA%E8%8E%B7%E5%8F%98%E9%87%8F%E6%96%B9%E5%BC%8F.md)\n| C | `cctools/include/mach-o` | `895` | [Mach-O 文件格式探索](https://github.com/Desgard/iOS-Source-Probe/blob/master/C/mach-o/Mach-O%20%E6%96%87%E4%BB%B6%E6%A0%BC%E5%BC%8F%E6%8E%A2%E7%B4%A2.md) |\n| C | `Fishhook` |  | [巧用符号表 - 探求 fishhook 原理（一）](https://github.com/Desgard/iOS-Source-Probe/blob/master/C/fishhook/%E5%B7%A7%E7%94%A8%E7%AC%A6%E5%8F%B7%E8%A1%A8%20-%20%E6%8E%A2%E6%B1%82%20fishhook%20%E5%8E%9F%E7%90%86%EF%BC%88%E4%B8%80%EF%BC%89.md)\u003cbr /\u003e[验证试验 - 探求 fishhook 原理（二）](https://github.com/Desgard/iOS-Source-Probe/blob/master/C/fishhook/%E9%AA%8C%E8%AF%81%E8%AF%95%E9%AA%8C%20-%20%E6%8E%A2%E6%B1%82%20fishhook%20%E5%8E%9F%E7%90%86%EF%BC%88%E4%BA%8C%EF%BC%89.md) |\n| Objective-C | Foundation | | [从经典问题来看 Copy 方法](https://github.com/Desgard/iOS-Source-Probe/blob/master/Objective-C/Foundation/%E4%BB%8E%E7%BB%8F%E5%85%B8%E9%97%AE%E9%A2%98%E6%9D%A5%E7%9C%8B%20Copy%20%E6%96%B9%E6%B3%95.md)\u003cbr /\u003e[CFArray 的历史渊源及实现原理](https://github.com/Desgard/iOS-Source-Probe/blob/master/Objective-C/Foundation/CFArray%20%E7%9A%84%E5%8E%86%E5%8F%B2%E6%B8%8A%E6%BA%90%E5%8F%8A%E5%AE%9E%E7%8E%B0%E5%8E%9F%E7%90%86.md)\u003cbr /\u003e[Runloop 记录与源码注释(作者：@kylinroc)](https://github.com/Desgard/iOS-Source-Probe/blob/master/Objective-C/Foundation/Run%20Loop%20%E8%AE%B0%E5%BD%95%E4%B8%8E%E6%BA%90%E7%A0%81%E6%B3%A8%E9%87%8A.md)\n| Objective-C | UIKit | | [复用的精妙 - UITableView 复用技术原理分析](https://github.com/Desgard/iOS-Source-Probe/blob/master/Objective-C/Foundation/%E5%A4%8D%E7%94%A8%E7%9A%84%E7%B2%BE%E5%A6%99%20-%20UITableView%20%E5%A4%8D%E7%94%A8%E6%8A%80%E6%9C%AF%E5%8E%9F%E7%90%86%E5%88%86%E6%9E%90.md)\u003cbr /\u003e[AutoLayout 中的线性规划 - Simplex 算法](https://github.com/Desgard/iOS-Source-Probe/blob/master/Objective-C/UIKit/AutoLayout%20%E4%B8%AD%E7%9A%84%E7%BA%BF%E6%80%A7%E8%A7%84%E5%88%92%20-%20Simplex%20%E7%AE%97%E6%B3%95.md) |\n| Objective-C | SDWebImage |`v3.8.1` | [SDWebImage Source Probe: WebCache](https://github.com/Desgard/iOS-Source-Probe/blob/master/Objective-C/SDWebImage/SDWebImage%20Source%20Probe%20-%20WebCache.md)\u003cbr /\u003e[SDWebImage Source Probe: Manager](https://github.com/Desgard/iOS-Source-Probe/blob/master/Objective-C/SDWebImage/SDWebImage%20Source%20Probe%20-%20Manager.md)\u003cbr /\u003e[SDWebImage Source Probe: Downloader](https://github.com/Desgard/iOS-Source-Probe/blob/master/Objective-C/SDWebImage/SDWebImage%20Source%20Probe%20-%20Downloader.md)\u003cbr /\u003e[SDWebImage Source Probe: Operation](https://github.com/Desgard/iOS-Source-Probe/blob/master/Objective-C/SDWebImage/SDWebImage%20Source%20Probe%20-%20Operation.md)\n| Swift | Source Code | `v4.0` | [Swift Probe - Optional](https://github.com/Desgard/iOS-Source-Probe/blob/master/Swift/Swift%20Probe%20-%20Optional.md) |\n| Python | Shadowsocks | `v2.9.1` | [Shadowsocks Probe I - Socks5 与 EventLoop 事件分发](https://github.com/Desgard/iOS-Source-Probe/blob/master/Python/Shadowsocks/Shadowsocks%20Probe%20I%20-%20Socks5%20%E4%B8%8E%20EventLoop%20%E4%BA%8B%E4%BB%B6%E5%88%86%E5%8F%91.md)\u003cbr /\u003e[Shadowsocks Probe II - TCP 代理过程](https://github.com/Desgard/iOS-Source-Probe/blob/master/Python/Shadowsocks/Shadowsocks%20Probe%20II%20-%20TCP%20%E4%BB%A3%E7%90%86%E8%BF%87%E7%A8%8B.md) |\n\n\n## Errata\n\n可以发起issue或者pull request进行勘误。\n\n## Copyright\n\n© 以下文章版权属于 **《iOS 成长之路》** 所有。\n\n* [load 方法全程跟踪](https://github.com/Desgard/iOS-Source-Probe/blob/master/Objective-C/Runtime/load%20%E6%96%B9%E6%B3%95%E5%85%A8%E7%A8%8B%E8%B7%9F%E8%B8%AA.md)\n* [CFArray 的历史渊源及实现原理](https://github.com/Desgard/iOS-Source-Probe/blob/master/Objective-C/Foundation/CFArray%20%E7%9A%84%E5%8E%86%E5%8F%B2%E6%B8%8A%E6%BA%90%E5%8F%8A%E5%AE%9E%E7%8E%B0%E5%8E%9F%E7%90%86.md)\n* [复用的精妙 - UITableView 复用技术原理分析](https://github.com/Desgard/iOS-Source-Probe/blob/master/Objective-C/Foundation/%E5%A4%8D%E7%94%A8%E7%9A%84%E7%B2%BE%E5%A6%99%20-%20UITableView%20%E5%A4%8D%E7%94%A8%E6%8A%80%E6%9C%AF%E5%8E%9F%E7%90%86%E5%88%86%E6%9E%90.md)\n\n© 以下文章版权属于 **[Devqa 专栏](https://xiaozhuanlan.com/DevQA)** 所有。\n\n* [巧用符号表 - 探求 fishhook 原理（一）](https://xiaozhuanlan.com/topic/9605283741)\n* [验证试验 - 探求 fishhook 原理（二）](https://github.com/Desgard/iOS-Source-Probe/blob/master/C/fishhook/%E9%AA%8C%E8%AF%81%E8%AF%95%E9%AA%8C%20-%20%E6%8E%A2%E6%B1%82%20fishhook%20%E5%8E%9F%E7%90%86%EF%BC%88%E4%BA%8C%EF%BC%89.md)\n\n## The MIT License (MIT)\n\niOS-Source-Probe 以 MIT 开源协议发布，转载引用请注明出处。\n\n![MIT License](https://upload.wikimedia.org/wikipedia/commons/f/f8/License_icon-mit-88x31-2.svg)\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FDesgard%2FiOS-Source-Probe","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FDesgard%2FiOS-Source-Probe","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FDesgard%2FiOS-Source-Probe/lists"}