Old driver iOS weekly, just for you to present valuable information.

You can also contribute to the project, if you find valuable information, articles, tools, etc., please send it to us in Issues, we will deal with it as soon as possible. Be sure to include a reason for your recommendation. Suggestions and comments are also welcome to Issues.

The novice recommended

🌟 🐕 swift-best-practices

With the stability of Swift, more and more projects start to try Swift, the “new” language, of course, some novice do not know how to use Swift correctly in the project. Swift-best-practices tell you the answer. This includes, but is not limited to, the basic MVVM structure, common controller types, documentation, and so on.

🐕 IOS development maps

@Laofeng: This article is a panorama of iOS development from Daiming and some relevant materials, systematically listing the knowledge points and skills stack of iOS development, which is convenient for us to check and fill up the gaps in daily development, mainly including the following content:

  • IOS basics: lists, layouts, ICONS, graphics, multimedia, AppServices, animation
  • IOS: XUN, Dyld, Mach-O
  • A programming language
  • The development tools
  • Computer Fundamentals
  • General knowledge
  • Field of vision

The article

🌟 🐕 Deriving Reactive from Imperative: An Introduction to Duals

@ lotus uncle: Functional programming for Swift has been in the spotlight since the release of the Swift language, when First Class Function was announced. The open source community has contributed RAC4, RxSwift and other development frameworks based on Swift functional features are more convenient for users to apply functional features in daily business development. Recently, Apple officially launched the Combine framework, giving the community more confidence.

Even so, but many students still think fog for functional programming, this article has opened up a new perspective, compared the imperative programming and one of the branches of functional programming: reactive programming, and from the perspective of functional programming, demonstrates a certain extent, reactive programming and imperative programming is a dual relationship. The author first explains what duality is from the perspective of category wheel, compares Subscriber and Publisher in response programming based on IteratorProtol and Sequence in imperative programming, and demonstrates their existing duality relationship with the previous definition of duality.

The whole article has a novel perspective and can bring people a lot of thinking. It is not easy to read. I suggest you take time to digest it.

🐕 Analyze the technical means needed for an App

Smiling and drinking arsenic: Sometimes when you see your favorite App, you may want to explore its implementation. Taking wechat as an example, the author of this paper lists the technical means needed to analyze an App from a reverse perspective, including:

  • Shell smashing – IPA acquisition
  • Mobile phone prison break
  • CaptainHook Hook code
  • Logos grammar
  • Find executable file tips
  • Class – the dump
  • Cycript debuggers
  • MachOView
  • Use proprietary method debugging in Cycript and LLDB
  • Call the method using the NSInvocation
  • Look at strings in App
  • UIDebug tools

Using the above technical means, relevant information of App can be obtained, including:

  • The header file
  • Third-party libraries
  • The UI to see
  • Inheritance hierarchy
  • Database design
  • Sandbox directories
  • Pod integration
  • View network request data
  • Viewing the Dynamic Library

Recommended reading

  • WeChatRedEnvelop grab a red envelope
  • Go deep into the assembly language of iOS

🐢 IOS Memory Details

J_Knight_ : This paper takes iOS memory as the topic, and introduces the general operating system memory mechanism, iOS system memory and iOS APP memory management. Some memory analysis methods and references are also provided at the end of the article. Readers who want a comprehensive understanding of iOS memory can take a look at this article.

🐢 Rule-based logic in Swift

@Hertzon: It is relatively easy to design a system only considering the technical architecture (such as using MVVM or other architectural patterns). Although architectural patterns are very important, we can improve the quality of the code by making minor code or structure improvements. Starting with URL matching, this article introduces how to abstract out some rules from previously difficult to maintain code for refactoring.

🐎 “Method Swizzling” after Swift 5?

Swift 5.1 has a new private function called Dynamic Method Replacement, which can be simply understood as a type-safe Method Swizzle.

In this article, Melon God gives us an introduction to the use of this function and internal implementation, and solved the problem of serial Hook failure by reading the source code.

tool

🚧 iOS Continuous Integration with GitLab CI, Fastlane & OTA Installation

Shuishui: This paper introduces gitLab-based continuous integration, Fastlane, wireless download and installation. In this article, the points we will discuss are:

  • Why Gitlab?
  • Gitlab CI and Runner
  • Gitlab Runner installation
  • Introduction of Fastlane
  • CocoaPods, Bundler and Ruby Gems permissions
  • Configuration Fastlane
  • Configure the Gitlab CI for our TestProject
  • Wireless IPA installation from Gitlab

It is worth mentioning that Gitlab.com provides us with free CI. Hopefully, the tools presented in this article will be useful to teams or individuals doing continuous integration.

Swift 5 for Android is here

There are many different solutions in the industry, including Flutter, Qt, React Native, Weex and so on. Most of them use C++ or JS as their development language. Swfit is an apple development language, and community members have wanted it to be ported to more platforms from the beginning, as it was used to develop Web demos on Github. Today, SCADE brings us Swift for Android, which uses both iOS and Android Native controls to maintain platform UI differentiation and then calls through the unified Swfit API. Also, its graphics engine supports many animations and is easy to adapt on screen, which allows us to develop more complex applications.

code

SwiftUIX: An extension to the standard SwiftUI library.

@ZhangJiafu: The SwiftUI library extension aims to complete the immature SwiftUI, providing a large number of components, extensions and tools.

apple_bleee

Anotheren: This is a code example of obtaining iPhone user information via Bluetooth /Wi-Fi. An attacker can obtain some device information or even the phone number of the victim under certain conditions. Strictly speaking, this is not a system vulnerability, it is part of the Apple ecosystem, which on the one hand allows people to enjoy the convenience of the entire Apple ecosystem, but on the other hand also creates a small number of possible theft of personal privacy. Check out this minority article for details.

Audio and video

🌟 Develop iOS apps with Flutter

CrazyCoderShi: Google officials really worked very hard to get iOS developers to use Flutter. This time, Google has released a video on Site B that explains how to develop iOS applications with Flutter. The video was explained by two of Google’s engineers, not only on the technology, but also on the platform design aesthetics. If you like video learning, don’t miss it. Bullet screen and comments are also wonderful! 😄

push

Senior driver Weekly team combined knowledge collection and SwiftGG Translation group included a reliable internal promotion position.

If you want to looking for a job, click here: www.yuque.com/iosalliance…

If you want to recruit people, click here: www.yuque.com/iosalliance…

Of course, you are also welcome to pay attention to our weekly report, we will update the editorial post at the bottom of each weekly report.

Pay attention to our

We have opened an official account, and every issue will be released on the official account (OldDriverWeekly), welcome to follow.

RSS feeds are also supported: github.com/SwiftOldDri… .

instructions

🚧 indicates the need to climb the wall, and 🌟 indicates the editor’s recommendation

Estimated reading time: 🐎 in a short time (1-10 mins); 🐕 medium (10-20 mins); 🐢 slow (20+ mins)