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

Twitter is back on the macOS client

@ZhangJiafu: On October 11, Twitter relaunched the Twitter for Mac client rewritten by Project Catalyst. The new Twitter client supports drag and drop, dark mode, multi-window browsing, and keyboard shortcuts.

The article

🐕 Why are Swift strings so hard to use?

Damonwong: The Swift string design is one of the most difficult syntax to understand in Swift. However, our weekly friend @Kemchenj has written an easy-to-understand article that elaborates

  • Why does it existCollection.IndexThis design
  • The currentCollection.IndexHow is it designed? What are the problems
  • In the futureCollection.IndexHow would it improve

Interested students can read it carefully, it is a good Swift grammar advanced article.

🐕 Optimization practice of h5 page opening in seconds on iOS terminal

Lianshu: H5 fast opening optimization based on mobile terminal has become a standard module of all major apps. The usual methods include resource cache, offline package, data Prefetch, etc. In this paper, the author first analyzes the process of H5 page loading, and realizes the mechanism of resource caching on iOS based on WkWebview through request interception. The article is not systematic as a whole, because it does not include many optimization methods of state of the Art, but it is still a detailed introduction of WkWebview using skills, which is still worth reading.

🐕 The Simple Life(cycle) of a SwiftUI View

@Lao Donkey: I believe you must be familiar with the life cycle of UIView and UIViewController in UIKit. These knowledge points have always been a common question in the interview. What is the lifecycle of a View in SwiftUI? This article introduces the author’s understanding of it. Those of you who are interested in using SwiftUI can have a brief introduction.

🐕 Reducing iOS storyboard merge hell

J_Knight_ : There are several ways to avoid conflicts in storyboard when merging code: use SwiftUI, use niB, Diff tools, lock files, etc. For those of you who use storyboard a lot, take a look.

🐕 iOS 13

This post is from Mattt (@Mattt) sharing some new apis and frameworks in iOS 13:

  • Presentation Framework: App obtains site metadata through URL and presents URL in rich text form, which can enrich the Presentation form of URL.
  • SFSpeechRecognizer: the device has built-in speech recognition and supports offline speech recognition.
  • URLSessionWebSocketTask: provides the native framework of the WebSocket system and does not need to use the tripartite framework.
  • BackgroundTasks Framework: The new BackgroundTasks framework makes it easier to perform BackgroundTasks.
  • OperationQueue Progress: The Progress attribute enables the OperationQueue to easily obtain the progress of the runqueue.

This article also shares MapKit, JavaScriptCore, UIKit and other new apis.

🐎 Alternatives to protocols in Swift

@ four niang: Although Swift calls itself protocol-oriented, protocol is not suitable for many problems. The author gives some examples and provides a better solution.

🐎 Blockbuster | skilled and magical craftsmanship, Flutter for the Web

As we all know, Flutter Web support has been added in version 1.9, but only in the technical preview. This article compares the mobile terminal principle with the Web method, and intuitively feels the difference between them (mainly in dart: UI and Engine).

Advantages: better compatibility with HTML + CSS + Canvas, low cost migration (direct compatibility with the upper layer of Flutter) Disadvantages: Dart2JS generates too much code and is not fully functional. The BitmapCanvas used can cause performance problems in some zoom scenes

With such an excellent layered design, Flutter Web is worth waiting for until a usable version is available.

🐕 A Comprehensive Guide to All 120+ Settings URLs Supported by iOS and iPadOS 13.1

@Herringson: The iOS Settings App has always supported the use of URL Scheme to open a subitem. The author of this article has collected more than 120 urls supported in iOS 13. You can browse to see if there are any points that meet your needs. Be aware that these URLs can be removed in future iOS versions or rejected by Apple’s review team on the grounds of Private apis at any time.

🐕 Reverse Engineering Swift Applications

Speed Boy: This article mainly introduces how to decompile a Swift app. First, I showed you how to decomcompile a Swift app using Name Mangling and swift-demangle. Class Dump now has limited support for Swift. Finally, the possibility of hook Swift method is explored.

code

Based on NSProxy development to support data binding, event binding library

@Smiling drinking arsenic: GICDataBinding is a data binding library based on NSProxy. It supports data binding (one-way, bidirectional) and event binding. Importantly, it supports JS expressions, as well as Swift, but the data type in Swift must be NSObject. Based on the GICDataBinding data binding system, it is possible to do some functions which are complicated to implement before, such as rethinking the definition of ViewModel, JS ViewModel, and realizing the responsive design of the whole UI based on the binding system with Texture.

Flutter animation Component

CrazyCoderShi: The Flutter Animation Set was developed by the YYFlutter team. It is a concise API that simplifies the implementation of Animation, especially composite Animation. Project defaults to achieve a lot of cool effects, out of the box.

Yaap: Yet Another (Swift) Argument Parser

@anotheren: Yaap is a Swift written CLI library that uses Mirror and Property Wrapper to simplify the declaration of arguments and options and has the following features:

  • Strongly typed parameter and configuration resolution;
  • Automatically generate help and usage information;
  • Multi-command routing;
  • Smart spelling error prompt

If you’re in command-line development, give it a try.

xcderiveddata

Jimq: The command-line tool for printing derived data directories for Xcode projects also supports passing the results to XcodeBuild or other commands to automate your build process.

Audio and video

Ggtalk | Internet company’s development process

Ggtalk: One of the major events of the translation team in recent months is the research on the development process of Teacher Rong. In order to get the latest and most complete information, I made a special trip to Guangzhou to discuss the development process with you. Rong teacher basically talked about the domestic first-line Internet companies, sorted out a document, will be introduced in detail in this issue.

In addition to introducing the process, we also discussed some related topics, such as the problems with the process, the companies that do the process well in China, and what the research process means for us. If your team is facing process problems, you should get some inspiration from this episode.

The content of this issue is relatively long, easy to be distracted, we can compare the text version to listen to: text version process finishing touch me.

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)