Hello everyone, this is Bo2SS. Last time I mentioned that the application development section was missing a bonus resource recommendation, so here it is right away!
In the internet age, learning materials are basically abundant and varied, but for learners, choosing high-quality learning materials that suit them has become a major challenge.
If you can quickly find verified and suitable learning materials, it can not only improve our learning efficiency but also help us quickly solve the problems we encounter at this stage.
Therefore, this bonus mainly organizes some online resources and related books recommended by the author. Developers, be sure to bookmark them!
「Keywords」 Open Source, Well-known Public Accounts, Apple Official Resources, Self-improvement
Online Resources#
Systematic Learning#
Open-Source iOS Apps: A collection of many excellent, complete open-source apps, categorized in detail, and specifically marked with apps available on the App Store, suitable for learning app development through complete examples.
-
A well-known Awesome series; any field with a certain level of recognition has its own Awesome xxx project.
-
Its biggest feature is that it is comprehensive, covering various learning materials from development, debugging to release, and also includes recommendations for blogs, books, tutorials, podcasts, and email subscriptions.
-
Additionally, there are more subdivided Awesome sub-series recommendations, such as Awesome ARKit, Awesome iOS Interview (an app that collects common interview questions, available on the App Store, tested and requires a VPN to use 🪜).
-
Finally, the author suggests that whenever you encounter any iOS issues, you should first check this website.
Filling Gaps#
Interface Interaction:
- Cocoa Controls and iOS Examples (Swift): A large collection of open-source libraries, categorized in detail, very suitable for finding "wheels" or learning implementation ideas.
Fun Facts:
- NSHipster: A website maintained by Mattt, the author of AFNetworking and Alamofire, focusing on some less commonly used iOS knowledge points.
Developers / Teams:
-
Notable Swift Developers: Understand the perspectives of developers at the forefront of the iOS field and the latest trends in iOS.
-
Swift Open Source Project Teams: If you are using their open-source projects, you can keep up with the latest developments of these projects by following their movements.
-
PS: Notable iOS developers are mostly leaning towards Swift now.
Some public accounts I follow:
-
Old Driver's Technical Weekly (regular weekly), iOS Growth Path (regular weekly), starming (the author himself), SwiftGG Translation Group (focusing on the Apple ecosystem), Bo2SS (growing with you 👀).
-
"Links attached in the public accounts"
Others:
- Recommended Websites for iOS Developers: Carefully curated recommendations from communities to newsletters to blogs to tools.
Official Resources#
💡 Of course, we cannot overlook Apple Official Resources:
-
WWDC: Apple's annual Worldwide Developers Conference, which can be enhanced by using the WWDC App for macOS.
-
WWDC NOTES: A collection of high-quality notes corresponding to WWDC videos, which can be used for quick reviews and even save time compared to watching videos.
-
WWDC Community: Tracks various recent WWDC events, news, and tutorials.
-
Related Books#
If you want to thoroughly master professional knowledge in a certain field, you still need to calm down and slowly learn through reading related books.
Objective-C#
《Objective-C Programming》、《iOS Programming》:
-
Produced by The Big Nerd Ranch, both are good introductory books.
-
I am currently going through them and hope to organize some notes when I have the chance.
《Advanced Objective-C Programming》:
-
Focuses on three core knowledge points in OC: Memory Management, Block, GCD (Grand Central Dispatch).
-
Thoroughly explained based on Apple's publicly available source code.
-
A well-known Effective series; any language with a certain level of recognition has...
-
Summarizes and discusses 52 lesser-known and easily overlooked features and pitfalls in OC programming across seven major aspects, including syntax, interface and API design, memory management, and frameworks, making it an advanced reading.
Swift#
Raywenderlich > Books platform:
-
Teaches you step by step to master some development knowledge, with very practical content and high quality.
-
Covers a wide range, such as ARKit, Swift versions of data structures and algorithms, design patterns, Core Data, iOS animations, Apple debugging and reverse engineering, RxSwift, Realm, and game development, etc.
-
Additionally, this website also includes learning paths, videos, and articles among other high-quality content.
objc.io platform:
-
Explains knowledge points from the perspective of principles and source code implementation.
-
The content is more in-depth than the books published by Raywenderlich, suitable for those with some iOS development experience.
Timeless General Knowledge#
《Self-Improvement of Programmers - Links, Loading, and Libraries》:
-
Provides detailed and in-depth explanations of hardware, operating systems, and threads, helping you understand all aspects of the underlying knowledge of a program from code compilation, linking to runtime memory virtual space and physical space mapping, which is beneficial for understanding system working principles.
-
Before reading this book, you need to master the basic knowledge of computer science subjects such as CPU, computer principles, assembly, compilation principles, C language, and C++ language.
-
Uncle Bob's masterpiece that created the "Clean Myth" in the field of architecture, where the architectural design ideas will never go out of date and are applicable to all fields of knowledge.
-
Analyzes the value of architectural goals, programming paradigms, architectural design principles, component splitting, and boundary handling in detail, and connects the knowledge discussed through practical cases, making it easier for readers to understand.
-
Recommended reading when you have a lot of programming experience and need to consider the rationality of engineering architecture.
💡: Many classics are worth reading repeatedly, and different stages of reading will yield different insights and gains.
Summary: Some knowledge does not change. As long as you grasp this knowledge, no matter how the upper layers change, you can grasp the core, master the direction of technology, and you will not feel anxious about knowledge.
Others: Hot Issues Q&A (3)#
What is the WatchDog mechanism?
-
The WatchDog mechanism is designed by Apple to avoid situations where the app interface becomes unresponsive, causing users to be unable to operate, and forcibly kills the app process.
-
There are many reasons that can cause the app interface to become unresponsive, so Apple has adopted a one-size-fits-all approach: if the main thread is frozen for a certain amount of time, it will be forcibly killed by the WatchDog mechanism (this freeze time is set by WatchDog to 20 seconds when the app starts, 10 seconds in the foreground, and 10 minutes in the background).
-
Since the WatchDog kill logs belong to system logs, your app needs to monitor stuttering after going live so that you can capture the app freezing situation before the WatchDog kills it. You can refer to Apple's documentation on crash analysis: Diagnosing Issues Using Crash Reports and Device Logs.
Regarding the use of third-party libraries, the author suggests:
-
If it is strongly related to the business, such as libraries for tracking or A/B testing, it is best to build them yourself, while you can refer to the ideas of open-source libraries;
-
For some highly generic foundational libraries, such as networking libraries and persistent storage libraries, you can directly use mature third-party libraries, which can save development and maintenance costs while improving product quality;
-
➕ Another situation is that for smaller teams with only a few iOS developers, it is still best to use open-source projects as much as possible, and you can prioritize looking for suitable projects on Awesome iOS (mentioned earlier).
PS: Some comments recommend Firebase's A/B Testing SDK, which integrates data reporting, data analysis, PUSH messaging, and AI prediction among other Firebase features, greatly reducing the cost of data analysis.
Alright, the application development section ends here! Next time we will truly begin the content of the Principles Section.
If you have some excellent learning materials, feel free to leave a message to Bo2SS below to recommend them, and also welcome to share this article with friends in need!
See you next time!