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

App Store Connect warning: UIWebView API deprecation

@Looping: At the end of last month (August), some people received feedback emails from Apple when they were packaging and uploading apps to the App Store, saying that they will stop receiving apps that still use UIWebView API. We hope developers can fix this problem in the next submission. Meanwhile, it is observed on GitHub that most of the mainstream open source libraries using UIWebView have also received the developer’s issue that Apple scrapped UIWebView API, and many of the libraries have been updated. While Apple warned developers to address the issue, it did not specify when the review rules would be implemented, so it should allow some time for developers to make technical migrations to the engineering code. To combat this, we recommend doing the following:

  • Make a list of your projects that use UIWebView, and figure out how to gradually migrate to WKWebView
  • Pay attention to the open source libraries and SDK used in the project, and update as soon as possible
  • Brace yourself for further information on Apple’s review

The novice recommended

🐎 From Flutter Go to Flutter Go web – Hand to hand with your Flutter Go web

# SpeedBoy: Google announced Flutter for Web at this year’s Google Conference. This article explains how to create a Flutter Web project using Flutter go-Web and gives specific examples.

The article

🐎 What is it like to practice Flutter in idle fish?

Laofeng: The author of this article shared the process of learning to start Flutter in Xianyu. By reconstructing the release page, he got familiar with the project and process, and learned and optimized the existing framework. Finally, the preliminary learning route of Flutter is given, as well as suggestions for new employees in the workplace. Readers who are interested in Flutter can have a look.

🚧 🐎 Should you write your app in SwiftUI?

Shuishui: This article discusses whether you should use SwiftUI in your APP. It lists several complete advantages and disadvantages for comparison, hoping to inspire and further understand the hesitant readers.

🐎 A tip for iOS debugging Block reference objects that cannot be freed

J_Knight_ : The author of this article introduces a way to use the dis-S directive to see the corresponding implementation code of the block: By entering dis-s [block address] in the LLDB console, we can disassemble the symbol information corresponding to the address and the initial part of the assembly implementation, we can know the method of the block corresponding to the address.

🐕 Hornet’s Nest video editing framework design and business practice in iOS terminal

Lianshu: Video shooting and video editing module has gradually become one of the necessary modules of many super apps. In addition to short video apps such as Douyin and Kuaishou, O2O apps such as Dianping and Honeycomb need to realize video shooting and editing modules in the APP as they face the transformation from graphic content to video and from PGC to UGC in production. Compared with the traditional client components, the technology stack includes a series of audio and video processing knowledge in addition to the PLATFORM API, which has a certain threshold. Hornet’s Nest this article is a systematic introduction in iOS to implement a set of video editing framework needs to do things, is a good entry material, suggested interested students can see.

🐎 Dark Mode on i​OS 13

Red paper: The title is a bit big, but this article only mentions 6 aspects of Color management on iOS 13 (Color/ HEX/system Color/ component default Color/ Color Set/Xib Color/). It mainly includes how to find/replace the color values of the application in the project for iOS 13.

🐎 It took five days to make an APP with SwiftUI. How did ali engineers do it?

@Siniang: Taobao internally tried to use SwiftUI to write an App for internal data monitoring. It briefly introduced SwiftUI’s data flow and UI customization. At the end of the article, it gave a very positive comment on SwiftUI:

This project can be completed in just 10 working days. It has to be said that SwiftUI’s development efficiency is really amazing. Although there are still some bugs at present, SwiftUI is believed to be the solution for UI layout of Apple platform in the future. It’s still being explored.

🐎 The Curious Case of the Core Data Crash

Anotheren: The Twitterrific developer has been plagued by a Core Data Crash problem for years and has been unable to find the exact cause of the problem. Until recently, when TestFlight feedback went live, he noticed something. It turns out that there may be some background download tasks when Twitterrific is switched and CoreData needs to be written when it is done. Although the background download was completed correctly, the background task was incorrectly marked as complete before the Data was fully written to Core Data, and the app was killed by iOS. Then Crash Report will Report a Core Data problem, but the actual problem is not on the side of Core Data. If you have a similar problem, check out the author’s analysis.

🐎 How do I upload error messages to Flutter services

CrazyCoderShi: Error capture upload is an important part of App development. Flutter is no exception. This article describes how to use Sentry to catch errors in the Flutter application and upload them. A full Demo is attached at the end of this article. Flutter 1.9.x has a lot of improvements to the application error report 🎉🎉🎉

🐕 RxSwift asynchronous event tracking and positioning tool development process

@ AidenRao: When you use RxSwift to do simple things like send a network request, listen for button clicks, etc., your code looks very straightforward and neat, but if you use RxSwift to do an asynchronous heat flow that is passed and converted from one class to another, the code becomes much less readable. It can even be difficult to debug because you can’t catch the stack generated by asynchronous events.

To solve the debugging problem of RxSwift, the author analyzed the implementation principle of RxSwift operator by reading the source code, and then used Swift reflection mechanism to dump “Observable Link”. Finally, according to the function distribution mechanism and namespace mechanism of Swift language, a set of safe and efficient hook Swift dynamic and static methods are designed. Through this hook scheme, the interception and processing of key functions on the transmission chain of convection events are completed, thus achieving the goal of precise positioning and debugging of asynchronous events in RxSwift.

tool

🐎 Unused code cleanup in iOS projects

Zvving: Useless code grows with iteration, forcing us to get into the habit of cleaning up on a regular basis.

This article briefly introduces several cleaning methods, especially Periphery, which is an accurate analysis of Swift garbage code. It is recommended to try.

code

KKJSBridge

@Herschen: One-stop solution to WKWebView support for offline packages, Ajax requests and Cookie synchronization (based on Ajax Hook and Cookie Hook) :

  • The communication layer is built based on MessageHandler
  • Support for Ajax hooks to avoid body loss
  • Unified Cookie Management
  • WKWebView reuse
  • Compatible WebViewJavascriptBridge

TTAnalyzeLoadTime

Build dynamic library for iOS load method time detection through Mach-o file NonlazyClassList:

  • The source code and binary files are provided in the warehouse. The source code provides the whole AnalyzeLoadTime file ttloadTime. mm. The binary file is a dynamic library, and the dynamic library provides the possibility of executing the Load Method Swizzling as early as possible.
  • Rewrite _getObjc2NonlazyCategoryList, _getObjc2NonlazyClassList, can quickly get all the Class of the load and the load address of IMP.
  • Executes the original function using method_setImplementation build block to prevent the runtime environment from being corrupted.
  • Finding load and Swizzle in Mach-O took 4 milliseconds.

LookinServer

Jimq: Lookin is open source for iOS (not for macOS). As an iOS UI debugging tool, the main features include point-to-point communication with the connected Mac, structured extraction, use, transmission and export of UI information on the current page, 2D/3D preview of UI layers, display of UI inheritance tree, display of selected UI control information, specified method monitoring, etc. For those of you who are curious about this, read it.

Audio and video

Ggtalk | fine brush algorithm

AidenRao: Laizi and Wamaker talk about algorithms in this issue. Algorithms are a big topic, and this is just a little story about two practitioners, how they know algorithms, how they learn algorithms, how they think about algorithms.

push

  • Shanghai – Baidu mobile phone input method _iOS Senior R&D Engineer: The project is technically challenging, and the technical atmosphere of the team is excellent. Sincerely hope that the various gods come to tease ~. Resume mail [email protected] oh ~ urgent urgent!
  • Senior iOS R&D engineer of Hangzhou Dingxiang Gardener Mom Business line: Have practical development experience in Swift, please send your resume to [email protected].

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)