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.

notice

This weekly is also the last weekly before the year, wish you a happy Spring Festival in advance ~

The novice recommended

๐ŸŒŸ ๐Ÿ• How does Flutter efficiently convert JSON to Model

CrazyCoderShi: Since Flutter disables runtime reflection, there is no library for parsing JSON like Mantle in Flutter. This article introduces three ways to create JSON to Model in Flutter:

  • Manually serialize JSON
  • Using json_serializable
  • Using tool sites

The article

๐ŸŒŸ ๐Ÿข Using Type Erasure to Build a Dependency Injecting Routing Framework in Swift

Damonwong: Swift compiler type checking reduces many errors for Swift project, but the strict verification mechanism makes many functions more complicated to implement. Module, for example, the authors are doing split, the module of the interdependence between problems, finally, he USES the methods of type erasure, build a set of routing of dependency injection framework, implements the module dependencies between decoupling, is a good idea, do componentized students can have a look at the specific implementation details. At the same time, type erasure is widely used due to Swift’s complex type system. Examples include Codable implementations, Signal in RxSwift, View in SwiftUI, etc. If you don’t know about type erasure, check out this article to learn more about type erasure.

๐ŸŒŸ ๐Ÿ• Simple implementation of static interception of iOS object method calls

Parsifal: This past 2019, the community has a new research direction in starting optimization — binary rearrangement. Early before the weekly recommended two articles, “tao architecture group practice | latest iOS based on static library into piles of binary rearrangement to start the optimization” and “trill development practices: solution based on binary rearrangement APP launch speed by more than 15%”, the scheme of two kinds of implementation was introduced in detail.

An essential step in binary reordering is to count how often all functions are called. Ouyang came up with a new approach to this step — “using static libraries to save the external symbols you reference in a separate table” — to replace the objc_msgSend method.

It is worth mentioning that these schemes are not limited to the scenario of statistical function usage frequency:

  • Run-time based Hook solutions: FishHook etc can provide dynamic modificationobjc_msgSendimplementation
  • Insert the static pile
    • Using LLVM syntax tree analysis to achieve code staking
    • Compile the source code into a static library, and implement code staking by modifying the snippet of the.o object file in the static library
    • Replace objc_msgSend in all static library string tables with another string of the same length: hook_msgSend (any name as long as the length is consistent and unique)

๐Ÿ• Mobile developers must know video basics

As a mobile developer, sometimes you need to be involved in audio and video development. The author popularizes the basic knowledge of audio and video development from different aspects such as basic concepts, common problems and application scenarios, which helps us to understand some common problems in audio and video development.

๐Ÿ• Principle of Web offline technology

@ Looping: This paper lists four common offline solutions in the industry, and gives a comprehensive introduction. It also discusses and analyzes problems such as public resource package, preloading WebView, preloading data, etc. It is a good reference for selection of offline technology and learning the principle of the solution. However, as the authors say, “For a good Hybrid framework, this is not enough… We still have a lot to learn.” Similarly, as a technology, we have to be clearly aware of its limitations and usage scenarios, so that we can use it properly, make good use of it and improve it, which is also one of the purposes of learning technical principles.

๐Ÿ• Turning Property Wrappers into Function Wrappers

In a previous article on Property Wrappers, a new feature in Swift 5.1, the author of this article shares the use of Property Wrappers under function, such as @delayed (delay: 0.3), @debmentioning (delay: 0.3), etc. will be novel and interested readers may try it.

๐Ÿ• CONTINUOUS INTEGRATION USING GITHUB ACTIONS FOR IOS PROJECTS

Github Actions is a big feature of Github in 2019. Since its launch, many developers have responded by developing various Actions for different frameworks and languages.

There are few Github Actions used in iOS projects on the Internet. At present, we mainly rely on several commonly used continuous integration platforms to do continuous integration for projects. This article explains how to use Github Actions for continuous integration of iOS projects. Although the steps are not too many, but also not particularly easy, interested readers can try it in their own projects.

๐Ÿ• Peep into applets architecture from a client perspective

Lianshu: Wechat mini program is not a new thing, but in recent years, the concept of small program SDK is becoming more and more popular. Access to SDK can directly access a whole ecosystem, which is really very attractive. In this paper, a complete analysis of the development of small program, as well as a simple analysis of the implementation of small program. This paper discusses how to realize the decoupling of presentation and logic in the technology stack of small program based on H5, and also covers common technical solutions in the field of small program, such as off-line package and preloading. Finally, a brief introduction to the structure of alipay small program. The whole article content is relatively comprehensive, suitable for the students to read.

๐Ÿ• ยท Why’s THE Design?

@Shuishui: TCP is the cornerstone of today’s Internet. As a reliable transmission protocol, almost all data will be transmitted through TCP today. However, TCP did not take into account today’s complex network environment at the beginning of its design. The following reasons affect TCP performance on weak networks (with high packet loss rate) :

  • TCP congestion control algorithm can reduce the throughput when packet loss occurs.
  • TCP’s three-way handshake increases the delay and extra overhead of data transmission.
  • TCP’s cumulative reply mechanism causes the transmission of data segments.

๐Ÿ• UINavigationBar changes in iOS 13

AidenRao: apple has brought a lot of changes to the look and feel of iOS13. This article focuses on the changes to the navigation bar. The default look of the big title style navigation bar has changed from translucent to transparent. This doesn’t change much, you can add some code to restore translucency. IOS13 added UINavigationBarAppearance class, under the appearance of the navigation bar can be custom, to set the style, shadows, background, title position, the button style, etc. Now you can remove the code for your custom navigation bar if the minimum supported version of the APP goes up to 13 (smile).

tool

Worrying about iOS reviews! Use the rock rat to increase your iOS approval rate

JimQ: This set of iOS pre-review tools established by UC R&D performance team can effectively eliminate many possible pit points in iOS review, especially for the pain points of accidentally misuse of private API libraries. The team has collected all known private API libraries and is constantly improving and updating them. Developers can try it for free.

code

BetterCodable

Swift 4.0 is starting to introduce Codable datal-to-model conversions, but custom inits are often required for practical use. Decoder) throws method, BetterCodable with Property Wrappers introduced in Swift 5.1 to solve this problem.

book

The Google Method

Don’t be fooled by the title, this is not a serious “method” book, but reads like an adventure story.

The book tells the story of a mapping software company (KeyHole) that was acquired by Google and grew to become a star product with over 1 billion users. What sets Google Maps apart from other startup stories is that its core barrier is the technical barrier. It’s rare to see a technology-driven product with a complete record of success from early to late. In the process, you can also get a glimpse of what Google does to build a successful product.

Audio and video

๐ŸŒŸ ๐ŸŽ I recommend subscribing to podcasts:[weak self]

Zvving: The first season of weak Me, a high-quality podcast brought by three Taiwanese iOS engineers, has officially ended! ๐ŸŽŠ ๐ŸŽ‰

Although it was often interrupted by garbage cars and recording equipment failure, the content was joyful and rich: language exchange, Test CI trample, management tips, workplace troubles, chicken soup and big cake. The old driver team recommended!

weak self, strong together! Happy times are short, so look forward to more in season 2

push

Bytedance Tiktok Commercialization team is looking for a client engineer.

  • TikTok and TikTok are commercial R&D engineers under Bytedance, responsible for all of TikTok’s monetizing needs! Whether it is advertising, Dou +, Enterprise, Douyin e-commerce or small douyin games, we are all involved!
  • Team base in Beijing, Shanghai, Hangzhou, Shenzhen, we are not limited to the technology stack, to keep an open attitude to new technology.
  • Resume with [name + post + mobile phone number] format to [email protected] or directly add wechatfuleiac

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)