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.

news

Starting from March 27th, the App Store must be compiled with iOS 12.1 SDK at least

Apple issued an announcement: Please note that with effect from 27 March 2019, All new apps and App updates for an iPhone or iPad (including universal apps) need to be built using the iOS 12.1 SDK to support the iPhone XS Max or 12.9-inch iPad Pro (3rd generation). You also need to provide screen shots of these devices. All new Apps and App updates for the Apple Watch need to be built using the watchOS 5.1 SDK and support the Apple Watch Series 4.

The novice recommended

🐎 What you need to know about Flutter

Recently, when I was sorting out the weekly newspaper, I found that there were a lot of articles about Flutter. It seems that there are many people who have studied Flutter recently. However, I think that Flutter is still in a new state for most readers. This week I recommend two basic articles:

  • Flutter knowledge | FAQ, you need to know first

This article mainly describes what a Flutter is, what it can do, what kind of people are suitable to use it, and how to get started with it and how to use it.

  • Because you need to know the knowledge | FAQ, the second phase

This article Outlines the main features of the Flutter SDK, the editors it supports, the inspiration for its development, and whether or not it includes a test framework.

🐎 The order in which methods are called in UIApplicationDelegate

This article describes the order in which methods in UIApplicationDelegate are invoked in various states starting and opening.

The article

🐕 Is open source | let Flutter really support the View level mixed development

This paper introduces the experience of Flutter mixed development on the main client of Toutiao to solve the following problems

  1. FlutterView fragmentation issues in some small scenes. For example, if page-level Flutter cannot be completed in a short time, Native View and multiple Flutter Views must be mixed. Similarly, Flutter cells in Feed streams and some ItemViews in list pages are FlutterViews.
  2. Memory management problem: Reclaim memory occupied by inactive pages
  3. Shared threads: Converges the global threads into four common threads
  4. SurfaceView changed to TextureView: Mainly to solve the problem of gesture animation

To sum up, bytedance’s client base technology Team has done some research on Flutter and can support development at the View level. Currently, the solution mentioned in this article is undergoing the company’s internal open source review process, and will be open source on Bytedance’s official Github after it is approved.

🐢 How do I build a table view with multiple Cell types

In iOS development, it can be said that almost all projects are inseparable from the use of UITableView, even its various variations of the extension are everywhere. UITableView is widely used because of its Cell variability, which is common when the number and order of cells are constant or the contents of the presentation are similar. But it can be interesting and challenging when the order of numbers and even the presentation are different. In this paper, the author points out the disadvantages of traditional writing in this complex situation and uses MVVM mode to construct this dynamic attempt:

  1. Mimic the server response, create simple JSON data, and map JSON to the Model
  2. Create a ViewModel based on the Model, which is responsible for feeding data to the UITableView. The ViewModel has an Item array that corresponds to the Section array that the UITableView contains
  3. Each Cell corresponds to the Item property in the ViewModel, which can modify or delete data without any code modification

The biggest benefit of this pattern is that it separates the business from the page in complex business scenarios, saves a lot of code modification due to various branch decisions and data modifications, and makes the ViewModel easy to reuse.

🐕 UTF-8 String

Swift 5 changes the encoding format of strings from UTF-16 to UTF-8 to improve performance. Unicode-rich text and ASCII are stored in UTF-16 before 5, and in a single UTF-8 after that.

Reasons for choosing UTF-8:

  • inASCIIUTF-8UTF16Take up 50% less.
  • High compatibility (for operating systems, development tools, C/Objective-C bridging).
  • Reduce code size and compile time costs.
  • There is no need to modify existing code.

For more details, please open the link.

🐕 Mastering the VIPER architecture

The author introduces the practice of protocol oriented programming in VIPER architecture, and explains the definition and usage of Module, Presenter and Entity protocols with code examples.

Recommended reading:

  • VIPER best practices for iOS developers
  • The ultimate VIPER architecture tutorial

🐕 Swift AVFoundation framework — Text-To-Speech tool

AVFoundation are introduced in this text to speech related interface, and introduces in detail the AVSpeechSynthesizer, AVSpeechUtterance, AVSpeechSynthesizerDelegate process and points for attention in practical application.

🐎 Better tests for delegates

This article introduces two kinds of decisions for two kinds of test delegate calls: implementation-oriented and behavior-oriented. In the implementation-oriented process, we pay more attention to state changes and need more test delegate response method implementations. In behavior-oriented decision making, we don’t need to focus on the details of its parameters, just the content of its implementation.

tool

CocoaPods Adventures – Overview

Just a few years ago, the question of whether or not you should use CocoaPods was open to debate. Today, however, there is no project of any size that doesn’t use CocoaPods. As a third party library version management tool, CocoaPods has a very fine granularity for component splitting. All pod commands are used to execute local scripts in the corresponding directory. What exactly do these scripts execute? This article mainly analyzes the pod install command execution process in detail, once we know the general process, we can make some modifications and controls to meet our expectations.

code

Snail: An observables framework for Swift

A lightweight observables library that makes it easy to observe variable changes & respond to events without using KVO & RxSwift.

swift-log

The official Logging API package allows users (such as Swift servers, cross-platform applications or libraries) to configure the specific implementation of log output according to their needs.

Audio and video

Ggtalk | block chain can do?

In recent years, blockchain has become a hot topic in the technology circle, and the limelight has even surpassed AI. Many celebrities in the technology circle have also been involved in blockchain-related entrepreneurship. In this issue GGTalk, we have invited celebrities on weibo to talk about some basic knowledge of blockchain. We strongly recommend those who are interested but have not been able to learn to listen.

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… .

The current editor

@Siniang, @Xiangerxiansen, @DamonWong, @Msg, @Zhang Jiafu, @Parsifal, @Aaaron7, @KYo, @TOM510230, @Anotheren, @Shuishui, @Looping, @lao Lao Lao Donkey, @Xiaofei 86, @Bonben, @red paper, @Smiling drinking arsenic, @Jimq, @Old Feng, @Zvving, @J_knight_, @Speed Boy

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)