Old Driver iOS Weekly #201 | 2022-05.09

ios-weekly

The old driver iOS weekly report, only presents valuable information for you.

You can also contribute to this project. If you find valuable information, articles, tools, etc., you can submit it to us in Issues , and we will deal with it as soon as possible. Remember to write the reason for your recommendation. Suggestions and comments are also welcome to Issues .

news

Clarify standards and new deadline extensions for the App Store improvement process

In the past few years, Apple has removed 2.8 million apps from the shelves in order to ensure the implementation of the latest changes in security and privacy. It also emphasized that developers will receive an email when the app has not been updated in the past three years and has not reached the minimum downloads (i.e. the app has had no or very low downloads for 12 consecutive months). Notify that the app has been identified and may be removed from the App Store. For details, please refer to: App Store Improved Support Page

SSWG 2021 Annual Update

The Swift Server Working Group released a summary of its work for 2021:

  • Swift Concurrency: Clients of various HTTP frameworks in the community have now added async/await interfaces
  • Toolchain:
    • RPM/Deb package released
    • Swift for VSCode plugin released
    • Published GitHub Action for Setup Swift
    • Enhanced support for ARM Linux
  • Documentation: The working group adds extensive documentation to its projects
  • Ecology:

And the goals for 2022:

  • Continue to expand the ecosystem
  • Continue to strengthen Concurrency support
  • Extend the toolchain
  • Reduce build time
  • Improve the usage of Swift server

 Developer – Design Development Accelerator

E-commerce Shopping App Session: Enhance the Experience of Your E-commerce Shopping App

May 10-11, 2022 (registration deadline May 09)

This event will comprehensively describe the best implementation of Apple’s latest technologies in different usage scenarios in the e-commerce and shopping fields, as well as the recommended design concepts, etc. At the same time, I also hope to discuss the current problems and opportunities with industry practitioners and challenges.

Case Study: Designing Great Apps for the iPad

May 12, 2022 (registration deadline May 11)

Through theoretical lectures and case studies, learn how to make full use of the large screen of the iPad to provide more efficient navigation mechanisms and more effective design patterns, how to use the various input capabilities of the iPad to provide richer interaction methods, and how to face the new super-sized groups. parts are designed.

156925166-f0e9ae02-0d06-4806-aa19-e84d84e2fd1f

article

? Analysis of new features of iOS StoreKit 2

@ChengzhiHuang : It has been almost a year since StoreKit 2 was released. This article has made a complete introduction and elaboration on the use of the overall Client/Server API and the decision to upgrade or not. It is suitable for students who have in-app purchase development needs to read.

? Mutex vs Semaphore: What’s the Difference?

@Damien : In multithreading, we often use mutex and semaphore to ensure thread safety. In this article, we will be based on:

  • What is a mutex?
  • Use of semaphores
  • use of mutex
  • Difference Between Semaphore and Mutex
  • Common misconceptions about mutexes and semaphores
  • Advantages of semaphores
  • Advantages of Mutexes
  • Disadvantages of semaphores
  • Disadvantages of Mutexes

Several angles will take readers to understand mutex and semaphore in depth. Worth reading for iOS developers.

? Taobao Mini Program Experience Optimization: Data Analysis and Optimization Practice

@Barney : This article introduces the experience optimization of Taobao applet, focusing on the definition of indicators and the exploration of data practice, and achieved good business results.

  • Writing Up Front: How to Define a Good Experience
  • data collection
  • Data Analysis and Optimization Practices
  • Tools and Platforms
  • Data effects

? Flutter PlatformView optimization

@BenBen : UC’s U4 kernel team has done in-depth research on PlatformView on Flutter, and made some optimization PRs (partially integrated into the official website), mainly for Android scenarios, currently officially provided Virtual displays and Hybrid Composition has some problems, Virtual displays have functional problems, Hybrid composition has performance problems caused by thread merging, and deadlock risks, and under Android Q, performance is deteriorated due to memory copying. The digging mode was implemented in the previous Hummer engine, and it was further optimized by transplanting the Embed Surface solution implemented by Roger in the U4 browser kernel. And the Embed Surface solution has been incorporated into the mainline, and Hybrid composition will be gradually deprecated in the future. So expect the latest release version.

The final conclusion:

  • The performance of the “burrowing mode” is still the best. In scenarios where the digging mode can satisfy, please consider using digging first;
  • Except for only supporting Android 6.0 and above, Embed Surface has no obvious shortcomings, and its frame rate can be the same as the hole-digging mode in most scenarios;
  • From the test data, the frame rate fluctuation of HybridComposition without merging threads is relatively large, and it is not superior to Embed Surface. In addition, because the memory copy below Android Q cannot be completely avoided, and synchronization problems in some scenarios need to be dealt with, we will not continue to optimize this solution.

refer to:

Hummer Engine Optimization Series

? AVPlayer player’s native support and handling of remote missing Content-Range capabilities

@JonyFang : Generally speaking, H264/HEVC encoding can be played directly through AVPlayer, but relatively weak background routing does not support Content-Range and series related headers when locating files, which will result in unplayable. This article is mainly aimed at this kind of case, and solves this kind of problem through the way of WebServer.

? Binary targets in modern Swift packages

@AidenRao : This article summarizes best practices for using binaries in Swift packages in 2022:

  • If you need to add precompiled libraries or executables to your iOS/macOS project, you should use XCFramework, and include separate binaries for iOS devices, macOS devices, and iOS simulators.

  • If you need to create a plugin and run an executable, you should embed it as an Artifact Bundle with binaries for different supported architectures.

? Flutter’s next-generation graphics renderer, Impeller

@CrazyCoderShi : Flutter’s Roadmap in 2022 suggested the need to rethink how shaders are used, with plans to rewrite the image rendering backend. Recently, the rendering back-end Impeller (impeller) has begun to take shape. This article starts from the history of Flutter graphics rendering optimization, and will take you step by step to understand the optimization of graphics rendering under Flutter, as well as the latest Impeller under development, and take you to understand all aspects of Impeller in detail.

? Locking in WebKit

@水水: The WebKit team replaced all spin locks in WebKit and the mutex provided by the operating system with the new WTF::Lock (WWeb Template Framework) in August 2015, unifying the implementation of Lock, and the operating system WTF::Lock is 64 times smaller and 180 times faster than provided locks such as pthread_mutex. Compared to condition variables such as pthread_cond provided by the operating system, WTF::condition is 64 times smaller. This article begins with some background on locks, focusing on how WTF::Lock and WTF::Condition are constructed.

? macOS evolution history

@Red Paper : As iOS developers, we use macOS every day. How much do you know about the history of this system? This article will take you to understand the development history of macOS, from the immature Mac OS Classic in the early system to the MacOSX after integrating the excellent features NeXTSTEP. Understand the basic concepts of Darwin, XNU, Mach, BSD and the connection between them, Darwin’s open source road.

? Use Dependency Injection to Unit Test a ViewModel in Swift

@SmilingDrinkArsenic : Dependency injection is a technique for passing one or more dependent objects to another object. This article will be based on the Weather App passing the weather service to the Weather ViewModel at initialization time. This will allow the ViewModel to be tested in unit tests using a mock weather service without access to OpenWeather or any network calls. Dependency injection makes the creation of a class or structure independent of the objects it depends on, helping to create loosely coupled applications.

code

GRDBQuery

@anotheren : GRDBQuery is an extension for GRDB.swift (a Swift version of the SQLite utility library) that provides a @Query property wrapper that simplifies data synchronization.

It is similar to @FetchRequest provided for CoreData in @FetchRequest .

push in

The Old Driver Weekly Team has combined with the Knowledge Collection and the SwiftGG Translation Team to include a reliable internal referral position.

If you want to find a job , click here: https://www.yuque.com/iosalliance/article/bhutav

If you want to recruit , click here: https://www.yuque.com/iosalliance/article/ycyhf3

Of course, you are also welcome to pay attention to each of our weekly reports, and we will update the editorial posts at the bottom of each weekly report in a timely manner.

Follow us

We are “Old Driver Technology Weekly”, a technical public account that continues to pursue high-quality iOS content. Welcome to pay attention.

Follow Youli, pay attention to [Old Driver Technology Weekly], reply to “2021”, and receive 2017/2018/2019/2020 internal reference

Also supports RSS feeds: https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom .

illustrate

? Indicates the need for a tool, ? Indicates editor’s recommendation

Estimated reading time: ? Reads quickly (1 – 10 mins); ? Moderate (10 – 20 mins); ? Slow (20+ mins)

This article is reprinted from: https://github.com/SwiftOldDriver/iOS-Weekly/releases/tag/%23201
This site is for inclusion only, and the copyright belongs to the original author.

Leave a Comment