Analyze: A Chinese-Language Deep Dive Into iOS and Objective-C Source Code
GitHub describes it as Draven's Blog. The repository metadata lists Objective-C as its primary language. This article stays within the project description and details documented in the GitHub repository README.
At a glance
- What is it?
- Analyze is a GitHub repository of long-form technical essays by Draveness, dissecting the internals of Objective-C, ReactiveCocoa, AFNetworking, and other iOS libraries. It is not a software project but a steadily maintained reading list for engineers who want source-level understanding.
- Who is it for?
- Adopt Analyze if you read Chinese and want a structured, source-level tour of classic iOS and Objective-C internals, from isa pointers to RACSignal to AFNetworking's session manager. Skip it if you prefer video tutorials or need coverage of SwiftUI, Combine, or modern async/await, because the newest entries stop around CocoaPods 1.1.0 and the repository has no release cadence.
- Can I use it commercially?
- Not without permission. GitHub finds no licence file in the repository, and without a licence all rights are reserved by default: you may read the code but not reuse it. Check the README, or ask the authors, before using it.
- Is it still maintained?
- Probably not. The repository last received commits 60 months ago, on November 14, 2021.
- What is it written in?
- Mainly Objective-C, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on October 23, 2026, and from our analysis. They are not legal advice.
Star history
- draveness/analyze8,071 ★ · -10
| Repository | 2026-08-13 | 2026-10-23 |
|---|---|---|
| draveness/analyze | 8.1k | 8.1k |
-10 Stars in the last 71 days, measured from the daily GitHub snapshot. Compare with other projects
Editorial analysis
What This Repository Actually Is
Analyze is not a library, a tool, or a framework. It is a collection of Markdown articles, written in Chinese, that walk through the source code of well-known iOS and Objective-C projects. The author, Draveness, states in the README that reading open source framework source code improves skill, and this repository is where he records his analysis. The intended audience is iOS developers who want to understand how popular libraries work internally, not just how to call their APIs. The primary language is Objective-C, which matches the era of the projects covered. There is no license file in the supplied material, so the legal terms for reuse are unclear beyond the Creative Commons Attribution 4.0 notice in the README. That notice governs the articles themselves, but the repository as a whole has no explicit license, which is a practical concern if you plan to redistribute any part of it.
The Structure: A Table of Projects, Versions, and Articles
The README organizes content in a table that maps each covered project to a specific version and a list of articles. For example, ReactiveObjC is pinned to version 2.1.2 and has eight articles, from RACSignal to RACChannel. AFNetworking is pinned to 3.0.4 and has five articles covering the session manager, serialization, reachability, and HTTPS certificate verification. This version pinning is a double-edged sword. It tells you exactly what code the author analyzed, which is good for reproducibility. But it also means the analysis can become stale quickly. AsyncDisplayKit is pinned to 1.9.81, a version from 2016, and that project has since been renamed and heavily rewritten. The table is the core navigation device, and it works well for browsing, but there is no search index or tag system, so finding a specific topic requires scanning the table or guessing file paths.
The Actual Content: From isa to RACMulticastConnection
The articles cover a wide range of low-level topics. In the ObjC section, titles include 'From NSObject's initialization to understanding isa', 'A deep dive into the structure of methods in ObjC', and 'The past and present of autorelease pools'. These are not API tutorials. They are source code walkthroughs that trace how the Objective-C runtime actually works. The ReactiveObjC section explains concepts like cold signals, hot signals, and multicasting, with articles on RACSubject, RACCommand, and RACMulticastConnection. The AFNetworking section breaks down the library into layers: the session manager, request and response serialization, network reachability, and HTTPS certificate validation. The tone is explanatory and methodical, typical of a blog series. Each article appears to be self-contained, so you can read one without reading the rest, though the MVX articles form a small series on architecture patterns.
How to Use It: Commands, Paths, and Reading Flow
There is no installation or build step. To use the repository, you clone it or browse it on GitHub. The articles live under the contents directory, organized by project name. For example, the ReactiveObjC articles are in contents/ReactiveObjC/, and the ObjC articles are in contents/objc/. File names contain spaces and Chinese characters, so direct URLs need percent-encoding, as seen in the README links. You can also subscribe to the author's blog via RSS at http://draveness.me/feed.xml, which the README suggests. If you want to read on a local machine, a simple git clone gets you everything. There is no build system, no dependencies, and no command-line interface. The repository is purely documentation, so the 'run' step is just opening a Markdown file in any editor or browser. For a developer used to package managers, this is refreshingly simple, but it also means there is no versioning of the content itself. The last push date is unknown, and there are no recent releases, so you cannot rely on a changelog to know what changed.
A Genuine Limitation: Language and Age
The most obvious limitation is that all articles are written in Chinese. A non-Chinese reader will need translation tools or language skills to benefit. The README itself is in Chinese, including the call to subscribe and the correction policy. This narrows the audience considerably. The second limitation is age. The versions listed are old: ReactiveObjC 2.1.2, AFNetworking 3.0.4, KVOController 1.2.0, and MBProgressHUD with no version but likely from the same era. iOS development has moved to Swift, SwiftUI, and Combine, none of which appear in the table. The newest entries seem to be the MVX architecture articles, which are framework-agnostic, but the concrete code analyses are tied to Objective-C and to APIs that may no longer exist. For example, the article on NSURLProtocol interception is still relevant for legacy networking, but modern URLSession usage is different. If you are working on a legacy Objective-C codebase, this repository is a goldmine. If you are starting a new Swift project, most of it will be historical reference.
The Wrong Tool for Some Jobs
Analyze is the wrong tool if you need quick API reference or troubleshooting guides. These are long-form essays, not cookbook recipes. If you have a specific bug in AFNetworking 3.0.4, the article on AFURLSessionManager might help you understand the architecture, but it will not give you a fix. Similarly, if you are evaluating whether to adopt ReactiveCocoa today, the articles explain the concepts but do not compare them to Combine or RxSwift, so you would need external information for a decision. The repository also lacks any interactive elements, code samples that you can run, or exercises. It is a reading list, not a course. For a developer who prefers video or hands-on experimentation, this format may feel dry. The author does not provide a discussion forum or Q&A section, only a PR or issue channel for corrections, so your learning is one-way unless you actively engage by filing issues.
A Real Alternative: Reading the Source Directly or Using Official Docs
A practical alternative is to read the source code directly, which is what the author did. Instead of reading Draveness's analysis, you can clone AFNetworking 3.0.4, open the Xcode project, and trace the same code paths yourself. The difference is in the guidance. Draveness provides a narrative, pointing out which parts matter and why, which saves time for a beginner. Reading the source directly forces you to build that narrative yourself, which is slower but deeper. Another alternative is the official documentation for each library. For example, AFNetworking's README and the ReactiveCocoa documentation explain the public API, but they do not explain the internal implementation. Apple's own documentation for Objective-C runtime covers isa and method structures, but it is reference material, not a tutorial. So Analyze sits between official docs and raw source code, offering a curated path. If you want that path in English, you would need a different resource, because this repository is firmly in Chinese.
Maintenance, Corrections, and Licensing
The README includes a section for corrections, inviting PRs or issues for any errors found in the articles. That suggests the author intends to keep the content accurate, but the last push date is unknown, so you cannot assume active maintenance. The repository is not archived, which means it is still open for contributions, but the absence of recent releases and the age of the covered versions suggest that updates are sporadic at best. For a reader, this means you should cross-check any article against the actual library version before trusting it in production. The licensing situation is mixed. The README states that the work is licensed under the Creative Commons Attribution 4.0 International license, and it links to the license deed. That applies to the text. However, the repository metadata shows 'License: (unknown)', which means GitHub does not detect a license file in the repo. This discrepancy is worth noting. If you want to reuse the articles, the CC BY 4.0 notice gives you permission with attribution, but if you want to use any code snippets that might be in the articles, you need to check each one, because code is not necessarily covered by the same license. This is not legal advice, but it is a practical caution.
Editorial conclusion
Adopt Analyze if you read Chinese and want a structured, source-level tour of classic iOS and Objective-C internals, from isa pointers to RACSignal to AFNetworking's session manager. Skip it if you prefer video tutorials or need coverage of SwiftUI, Combine, or modern async/await, because the newest entries stop around CocoaPods 1.1.0 and the repository has no release cadence. Before relying on it, verify each article against the library version it names, since several dependencies, such as AsyncDisplayKit 1.9.81 and AFNetworking 3.0.4, are years old and their APIs have moved on. The real value is the reasoning method, not the current code, so treat each post as a starting point and re-check the source yourself.
Frequently asked questions
What is the draveness/analyze repository?
A Markdown archive of the author's notes on reading iOS framework source code, written in Chinese and served as the blog at draveness.me. The top level holds only .github/, .gitignore, README.md and a contents/ directory, with no source code.
How many articles does draveness/analyze hold?
Fifty-three articles across twenty rows of the contents table. The ObjC row has ten, ReactiveObjC has eight, AFNetworking has five, Architecture and FBRetainCycleDetector have four each, and Redis has three.
Which framework versions does draveness/analyze document?
Twelve rows carry a version, including ReactiveObjC 2.1.2, AFNetworking 3.0.4, BlocksKit 2.2.5, AsyncDisplayKit 1.9.81, CocoaPods 1.1.0 and Redis 3.2.5. Eight rows have no version recorded, among them Architecture, ObjC, Alamofire and Masonry.
Is draveness/analyze still being updated?
The README states that the author will keep updating the articles, but the last push to the repository was 2021-11-14 and the repository publishes no GitHub releases. The repository is not archived, and corrections are requested through pull requests or issues.
What licence applies to draveness/analyze?
The README states the work is licensed under Creative Commons Attribution 4.0 International and credits Draveness, with an attribution link pointing at the Draveness/iOS-Source-Code-Analyze repository rather than at draveness/analyze. No LICENSE file exists in the repository tree.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/draveness-analyze)Star history chart for your README
[](https://hysenlabs.com/projects/draveness-analyze)Was this useful?