Old Driver iOS Weekly #199 | 2022-04-18

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 .

 Developer – Design Development Accelerator

Engineering Practices for “Subscription Offers”

April 21, 2022 (registration deadline April 20)

Learn how to provide your users with introductory offers, promotional offers, and coupon codes for auto-renewable subscription products through access to StoreKit technology. Allows new or existing users to get auto-renewing subscriptions for free or at a discounted price for a specific time period.

Speed ​​up your testing process

April 19, 2022 (registration deadline April 18)

Discover how to automate testing to further efficiently process test results. Improve your test suite to speed up the feedback loop to get fixes faster. Learn how to eliminate never-ending and under-performing tests with Test Plan, the xcodebuild command-line tool, and related APIs. We’ll examine test timeouts and execution time margins in XCTest, examine device parallelism, and detail recommended practices for balancing performance and clear fault location.

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

Recommended for beginners

? Practical application record of Design Patterns

@ Laodong : The most popular article in 2016 was the sharing of some design patterns. At that time, discussions of various MVPs, MVCs, etc. were hot in the entire mobile development circle. It’s just that in recent years, it’s hard to see such articles again. This article is self-recommended by the author, and records the author’s process of encapsulating other third-party libraries. For students who are new to mobile development, they can learn more about design patterns and their ideas.

For the students who are new to this kind, I would like to stress again that there is no best design pattern in the world, only the most suitable design pattern for the current project. Don’t fall into the trap of patterning for pattern’s sake, and over-engineering is not an option.

Recommended by: zhgchgli0718

article

?? Lookin Principle and 5 Development Difficulties

@Damonwong :Lookin is a software that can view and modify UI objects in iOS App. I believe many people have used it. I have been curious about the implementation principle of this software. The software author Li Kai brought the principle of implementing Lookin. and 5 development difficulties. It mainly realizes the communication mechanism before mac app and iOS app through CS architecture. At the same time, from the process of making the Lookin software, I have summarized the following experiences:

  • How do iOS programmers learn to write macOS programs?
  • How to transfer data between macOS and iOS?
  • How to properly render expanded/collapsed images?
  • How to render 3D images?
  • How to speed up the refresh rate?

Interested students can read the original text for details.

?? Xcode Cloud: Feedback from leboncoin

@Damien : Xcode Cloud is a continuous integration and delivery service built into Xcode for Apple developers. This article comes from the experience of the leboncoin iOS team in using Xcode Cloud. It introduces all aspects of Xcode Cloud in detail, and also introduces its shortcomings and advantages. Students who are interested in iOS development CICD may wish to read it.

?? Audio and video engineering example AVDemo 7, 8, 9

@JonyFang : Audio and video engineering examples AVDemo 7, 8, 9:

  • iOS AVDemo 7: Video capture Demo , which implements video capture logic and renders captured video images for preview, and supports converting data into pictures and storing them in albums;
  • iOS AVDemo 8: Video encoding Demo , connect the video capture and encoding modules in series, input the captured video data to the encoding module for encoding, and store it as a file;
  • iOS AVDemo 9: Video encapsulation Demo , concatenate video capture, encoding and encapsulation modules, input the collected video data to the encoding module for encoding, and then input the encoded data to the MP4 encapsulation module for encapsulation and storage;

? Dewu App H5 seconds to open optimization actual combat

@J_Knight_ : This article describes how Dewu technology increases the second opening rate of H5 pages from 30% to 75%. The article begins with an introduction to the background of optimization and the metrics used. Then, the specific optimization scheme is introduced, which is optimized on both the client and H5:

Client-side optimization:

  • HTML preload
  • HTML pre-request
  • Offline Packet Technology
  • Interface pre-request
  • Pre-built link & link keep alive
  • pre-rendering

H5 optimization:

  • SSR server-side rendering
  • HTML pre-rendering
  • CSS bundle size optimization
  • Image optimization
  • Other optimizations

While introducing the scheme, the difficulties encountered and the effect of the scheme application are also given. At the end of the article, the front-end performance monitoring scheme used is also introduced.

? Introducing Swift Async Algorithms

@Lianshu : I believe everyone is familiar with the async/await operator, and it is supported in many languages, such as js. The biggest significance of async/await is that it allows us to write asynchronous code with sequential structure, which is more clear and avoids callback hell. In March, the Swift maintenance team released a prototype version of the Swift Async Algorithm Package, which includes the implementation of async/await and operators specially designed to handle asynchronous series, such as Zip/CombineLast/Merge/Chain/Buffer/Debounce/Throttle . I believe that these operators are familiar to everyone. In fact, their usage is not much different from their use in processing collection types. Just using them with async/await can concurrency and powerful energy, and use concise code to describe complex asynchronous logic. Interested students can continue to pay attention to the follow-up progress of this package.

? A brief introduction to iOS SIGKILL

@xiaofei86 : When the Exception Type of the crash log is SIGKILL, it means that the operating system killed our process from the upper layer. This article is based on Apple’s Understanding the Exception Types in a Crash Report and Addressing Watchdog Terminations

The translation and arrangement of the article introduces the meaning of different error codes of SIGKILL and how to locate and solve these problems.

? Adding Custom Shortcuts To Xcode

@Speedboy : After Xcode removes the Command + T for opening Slow Animations in the simulator, it becomes very troublesome to open Slow Animations. This article teaches you how to set some custom shortcut keys for Xcode.

? New Terminal Play: “Zero Code” Scripted Guidance

@AidenRao : The Internet industry is fast-paced, and apps are updated more and more frequently. How to let users understand product functions and complete cognitive iterations is a link that cannot be ignored in business development. This article introduces the exploration and practice of the Meituan food delivery terminal team in the field of user mental construction. Starting from the current business situation and the thinking of scripted thinking, the one-stop design of terminal plus management background, the combination of traditional CV and deep learning, greatly simplifies the access threshold of scripted guidance.

? Xcode13 “disappeared” Info.plist file

@Barney : This article describes the official configuration changes for the Info.plist file in Xcode 13.

Starting from Xcode 13, new projects no longer require the use of configuration files (Info.plist, entitlements). If you need to modify the configuration of Xcode, please set it directly in the Xcode panel “target – Info – Custom iOS Target Properties” and “build settings”.

  • Disappearing Info.plist file
  • How to go back to the old Info.plist?

? Flutter code generation technology APT and AOP applicable scenarios and comparison

@Damien : APT (Annotation Processing Tool) is an annotation processing tool, AOP (Aspect-Oriented Programming) is aspect-oriented programming, and there are similar concepts in Flutter. This article introduces these two technologies in detail from the following aspects:

  • Concept Interpretation of APT & AOP
  • The realization principle of APT & AOP
  • APT & AOP usage scenarios
  • APT & AOP Technology Comparison

? Precisely locate the page sliding frame rate bottleneck and optimization reference

@Leo : Page fluency is a performance metric that greatly affects user experience. Starting from the principles and tools, this article explains how to define and analyze Caton, and then introduces how to optimize it from the perspectives of asynchronous rich text drawing, constraint layout, and view creation.

? PROTOCOL & GENERIC IN SWIFT

@zvving : Swift provides concise & rich abstraction methods based on protocol-oriented design, which also brings a lot of ambiguity to the use of Protocol in complex scenarios. The design related to the recent official versions has also been discussed and improved. For example Opaque Result Types , Unlock existentials for all protocols .

This article compares how paradigms and type erasure are applied and the differences in their internal implementation from a simple example to help you deepen your understanding:

  • static vs dynamic
  • Compiler generated template code vs hidden types via Existential Container

? Type placeholders in Swift

@anotheren : Type Placeholders were introduced in Swift 5.6 to further optimize type inference, allowing the use of _ to allow the compiler to automatically infer types, which is more friendly to complex paradigms such as CurrentValueSubject<Output, Failure> .

? Build smooth and natural Flutter pages

@CrazyCoderShi : Flutter is famous for its high performance and high consistency rendering, but it is not as smooth as silk. This article is produced by the Alibaba mobile team and shares the challenges, monitoring tools, and optimization methods of Flutter’s fluency optimization. and suggestions. From the code to the use of the tool side, it is highly recommended

tool

XcodePatch

@ChengzhiHuang : Xcode 13.3 will get stuck when using Chinese input in LLDB. This tool solves the stuck by re-signing and injecting Patch. The latest release of Xcode 13.3.1 still does not fix this problem. Upgrading Xcode is a high-risk behavior .

Xcode13 Tips: Build System

@Redpaper : Xcode13 now provides new build parameters for accelerating the construction of Swift projects, which can better use content and speed up the build. You can turn on this build parameter with the following global command:

 defaults write com.apple.dt.XCBuild EnableSwiftBuildSystemIntegration 1

xcframework-maker

@Red Paper: This tool can convert Fat Framework into XCFramework files as raw materials. The generated XCFramework can be used as a dependency of SPM.

code

CodeEdit

@水水: CodeEdit is a free and open source code editor built by the developer community for the community, with features including syntax highlighting, code integrity, project find and replace, code snippets, terminal, task running, debugging, git integration , Code Review, Extension, etc. CodeEdit makes projects not developed for Apple platforms as easy as text editing, but provides an Xcode-like experience. In other words, the desire to provide developers with the power of a full IDE while maintaining lightness, performance, and reliability.

Moyu Weekly

@touchfishweekly#50 : It’s the 50th issue, a new node, let’s take a look at the summary of this issue:

  • Topic: WWDC 22 Call to Code, try to mine some easter eggs from icons
  • Interview Module: Incident Response and Delivery
  • Excellent Blog: Review of iOS rebase and bind
  • Learning Materials: Gossip Swift Coroutines
  • Dev Tools: AppleParty is an automated macOS tool for quickly operating the backend of App Store Connect.

push in

[Shanghai/Beijing/Hangzhou/Shenzhen] ByteDance Music Team – Soda Music – iOS/Android Development

The ByteDance music team adheres to the principle of “building resonance with music and stimulating expression with music. ” mission, in addition to the soda music that has just been launched, Byte has continued to invest in the music business for many years, overseas product Resso has exceeded 2kw DAU, Douyin and TikTok music scenes are constantly being built, and musician services are gradually improving.

The team is currently recruiting for iOS/Android positions (including junior/high school/leader positions), and Base Shanghai/Beijing/Hangzhou/Shenzhen are available.

Contact and more information: https://www.yuque.com/iosalliance/article/viprra

other

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/%23199
This site is for inclusion only, and the copyright belongs to the original author.

Leave a Comment