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

🌟 Apple will hold its virtual Worldwide Developers Conference starting June 22

Due to the COVID-19 pandemic, Apple had earlier announced that WWDC would continue online this year, and now the official announcement has been set for June 22. This is the 31st annual DEVELOPER’s Conference, and this year’s WWDC is being held in a new online format, which is sure to bring a new experience.

What was WWDC 19 about? Welcome to the weekly editor’s special feature – WWDC 19 reference.

Flutter 1.17 release

CrazyCoderShi: The first stable version of Flutter for 2020 has been released πŸŽ‰πŸŽ‰πŸŽ‰. This new version focuses on stability enhancements and historical Bug fixes. The iOS platform has introduced Metal support, which has greatly improved performance. There have also been considerable optimizations to Flutter package size, new components, and so on. If you don’t want to read English, you can read the Chinese version. Dart-lang Release Note is also recommended.

The article

🌟 A survey on Swift’s current status in the iOS ecosystem

SketchK is a data research note to help you see the current state of iOS development in China.

In general, Swift community in foreign countries is more active than Objective-C, and major domestic companies are also pushing forward, with the ability to integrate Objective-C and Swift. If you haven’t got on the bus yet, buy a ticket now.

🌟 🐒 Baidu applet framework performance optimization practice

In the era of mobile Internet, the essence of many cross-platform and dynamic solutions is to find a balance between NA and H5. From the rendering level, it can be divided into NA rendering (RN, Flutter, etc.) and H5 rendering (small program). In a platform-based APP, the most widely used program in the industry is small program, because it can effectively reduce the use cost of producers and users. Applets as a school of H5 rendering, flexibility has been proven, so performance has always been the most concerned technical point. This paper introduces the practice of baidu applet in performance optimization, from the framework start, small program package download, small program package loading and rendering and other four aspects of a comprehensive optimization.

🌟 πŸ• How did I get twitter Oasis to start up 30% faster

@Smiling while drinking arsenic: Startup speed is the first impression an App gives to users, which is crucial to user experience. This paper mainly describes the startup optimization of Weibo Oasis App and explains the optimization principle, mainly from the following two aspects:

  • Dynamic library to static library, optimized dylib loading time
  • The binary rearrangement makes the methods needed for startup more compact and reduces the number of Page faults

πŸ• Flutter momentum is | 2020 spring express delivery

@Bangben: Flutter has now released stable version 1.17 and is iterating fairly quickly. The article gives a general introduction to the current application situation, for example: The top five countries that use most are: India, China, the United States, the European Union and Brazil; There are about 5W Flutter applications on the Play Store. It also explains why Nubank, the largest digital bank outside Asia, chose Flutter (video). If you are interested, you can click on it.

🐎 The big Facebook crash of 2020 and the problem of third-party SDK creep

Zhang Jiafu: The Facebook SDK caused a massive app crash. The reason is that the Facebook server sent the wrong data to the SDK, which caused the code in the SDK to crash and further caused the app running the SDK to stop running. This article raises the issue of third-party SDKS that, since they are dynamic libraries linked at compile time, give data collection and mining companies like Facebook and Google control over these apps. Facebook’s app crashes are a sign of this ability, as if they had a “kill app switch”. The author then proposes two technical solutions, the first is to implement Facebook login without using the Facebook SDK, and the other is to sandbox the code between this type of SDK and the main app. Finally, the author also proposes artificial solutions, such as restricting the Marketing Department’s right to add third-party data analysis codes to the APP.

πŸ• Tear open! Compare the details of Flutter widgets and CSS. Here are all the layout principles you care about

@ looping: This article compares the Flutter widgets and CSS layout principle, objectively analyzes the advantages and disadvantages of both, and can complement each other and the superiority of it both make a further discussion on evaluation, also share the practice some of the problems and solutions in the process, interested in the technology of the students can arrange their ideas do some research.

πŸ• Take a look at GitHub’s big four new features

Red Paper: Github recently launched four new features to help the development community work together:

  • Codespaces: complete GitHub development environment, cloud editor + cloud hosting development environment
  • GitHub Discussions: Developers’ new conversation Spaces, issues and PR will be closed at any time, but Discussion will not be closed and can be used to maintain FAQs or collaborative documents
  • Code scanning and secret scanning: Every Git push is scanned for security vulnerabilities with Code scanning, and the results will be directly reflected in PR. Secret Scanning monitors known Secret formats in private repositories and notifying developers immediately when they are found.
  • GitHub Private Instances: This is a new, fully managed option for enterprise customers that provides enhanced security, compliance, and policy capabilities.

πŸ• History of Auto Layout constraints

EyreFree: This article introduces the development process of Auto Layout since the introduction of iOS 6. Through the way of examples, readers can feel how Apple solved the problem of the constraint code verboseness step by step. After you finish reading this article, you might want to consider phasing out third-party layout libraries and start using standard apis directly.

🐒 A Block interview question in-depth excavation

@ JimQ: Again to review Block source code (looking for a job) time, the author from a Block interview question, in-depth source code for everyone to analyze Block storage domain, Block capture variable transfer type, __block modified variable transfer type and its storage domain changes in the Block, In combination with the __weak specifier, we discuss how to remove circular references and avoid memory leaks.

πŸ• Realm.Object and NSObject transformations show the swift protocol in action

Anotheren: Realm is a cross-platform mobile database engine. In real business, we usually separate the business model from Realm’s storage model. This article showed you how to design the protocol and its default implementation to quickly convert NSObject to and from Realm Objects. This is a good example for teams that are still in the mass mix stage.

🐎 How do I quickly list all the +load methods of my App

@shuishui: a breakpoint command based on LLDB can quickly list all the +load methods in your App

tool

opentrace-ios

Speedboy: OpenTrace -ios is an open source APP that implements the Blue Ace protocol on ios. BlueTrace was originally developed by the Singapore government as a tool for public health agencies to track contacts of COVID-19 using low-power Bluetooth, and has since been used around the world. There is also an Android version of this APP, you can check the link for details.

code

🌟 TrampolineHook

J_Knight_ : TrampolineHook is a framework that can replace and intercept target functions. It can be used to view the time and call links of any function and help with logging, among other things. Its process design is:

  • Remove and save the original method IMP A that needs to be replaced.
  • Plug the original method with a dynamically allocated executable address B.
  • When the original method is executed, it jumps to the executable address B.
  • This B after A short operation, can obtain the original save IMP A.
  • Before jumping back to IMP A, the unified interception function does something it wants to do, such as check if it is the main thread call, etc.

In this process, the parameter register and return address can be guaranteed. Readers can also take a look at the evolution of the framework from idea to implementation in the following three articles (by the framework author) :

  • Bridge based full method Hook scheme – explore apple main thread check implementation
  • Bridge – based full method Hook scheme (2) – new upgrade
  • Full method Hook scheme based on bridge (3) – TrampolineHook

πŸ• SwiftTrace

@ xiaofei86: SwiftTrace is a framework for tracking method calls to non-final classes in Swift and Objective-C. It is the Swift version of Xtrace, The Hook is done by replacing the function pointer of the Swift class with a pointer to a unique assembler language “Trampoline” entry point. In addition to tracing classes, instances, and protocols, SwiftTrace allows you to create facets for member functions to call a closure before or after a function implementation, where you can even modify passed arguments or return values.

πŸ• Localize

Localize is a runtime script for a small Swift implementation to make localization more efficient. Mainly includes: Clear Spaces, sort by Key, detect unused keys, detect missing keys, detect untranslated keys, detect redundant keys, etc., as simple as configuring Run Script in Build Phases. Students who have similar needs in international work can look into it.

Audio and video

71: β€œPolymorphic interfaces” with special guest Dave Abrahams

@ four niang: Dave Abrahams, formerly a member of the C++ committee, worked on the early development of C++ STL and Boost, and later worked on Swift at Apple, I’m currently working on Swift For Tensorflow at Google. (If you remember WWDC’s Swift POP Session, he was the speaker)

This time, I talked about his early C++ development experience and some design decisions of Swift standard library, including the Value Semantic Array that wang Yin joked about in the design mistake of Swift language. This decision also aroused strong opposition from members of Swift team at that time. This podcast is highly recommended for anyone interested in this story.

push

Beijing/Chengdu – Tiktok: This year/advanced/expert iOS, Android, Server have a large number of HC, welcome

  • This year’s students, together with the big guy learning lu code posture.
  • Skilled hands, doing challenging things together.
  • Industry experts work together on this platform to achieve greater personal value.

Make sure I follow up and give feedback on every resume. For more information, please add my wechat account: Jingmu1994 or send your resume directly 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 that a tool is required, and 🌟 indicates that editing is recommended

Estimated reading time: 🐎 in a short time (1-10 mins); πŸ• medium (10-20 mins); 🐒 slow (20+ mins)