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

TestFlight has started to support invitation links

At this year’s WWDC, Apple revealed that TestFlight’s public link invite feature would be available later this year, and it’s now officially available.

Dustturtle has also shared its work for the first time – it’s been a long time coming – the TestFlight Public Link feature has been released! .

Apple’s use of Swift in iOS 12

The number of places to use Swift in iOS continues to grow, with twice as many libraries including Swift in iOS 12 as in iOS 11.

Swift 5.0 Release Process

Swift5.0 is getting closer to us, so keep up with the latest progress

  1. Binary is not backward compatible, which is easy to understand, and the new Swift version is not backward compatible
  2. Swift3.0 code must be forcibly migrated, otherwise you will have to use Swift4.2 to compile
  3. Swift5.0 is now available in early release
  4. 16 November 2018 is expected to be a critical date for Swift5.0 (really?)
  5. Hope you enjoy Swift5.0’s new programming ideas.

column

Several ways to modify private methods on iOS

In iOS development, the need to modify private methods is more or less common. This article summarizes the methods available to us today and suggests how candidates should answer these open-ended questions from an interviewer’s perspective.

The article

🐒 How Mirror works

This article mainly introduces the working principle of Mirror. Mirror is simply an API used for type reflection, which can obtain the type information of instances at runtime. For example, the preview of variable data in Playground is based on this API.

This paper is mainly divided into two parts, the first part is the abstraction of metatype (type of type), the implementation principle of dynamic distribution of runtime function, the second part is the realization of enum/struct/class/tuPE four metatype.

In fact, the implementation of Mirror is very straightforward, because Swift’s generic function requires that it must have enough rich and complete Metadata, in order to better describe the existence of generic instances at runtime, complete function distribution, attribute access and type conversion work.

In this context, the implementation of Mirror is basically to retrieve type data from existing Metadata and display it, or to use Metadata to locate member variables relative to each other and then access them.

🐒 AR Face Tracking Tutorial for iOS: Getting Started

Ray Wenderlich posted a new tutorial. This is how to use TrueDepth Camera to do AR face tracking.

As usual, his tutorial articles will have very detailed steps and screenshots, take you step by step, ideal for students who are not very familiar with the area of knowledge covered in the article.

This article is also part of a free tutorial, so you don’t need to pay for it.

🐎 Why #if DEBUG Conditional Should Be Avoided in Library Code

The author of this article shared a pit he encountered when importing his own library using Carthage, and explained why conditional compilation instructions should be avoided in SDK development, because you don’t know how the build environment of the person using your SDK will change. It is a short and interesting article.

🐒 Metal render pipeline tutorial

Apple officially announced OpenGL ES as deprecated at WWDC 2018, recommending the use of Metal for 3D rendering. After a detailed understanding of Metal, we can see that Apple’s courage is not without reason. Metal is the first choice of iOS, taking full advantage of iOS hardware features to improve performance.

The style of this article is similar to many classic OpenGL tutorials. It starts with the concept and process of rendering and teaches you how to draw the first 3d object step by step. It is highly recommended for interested students to read it carefully.

Presenter: Prehistoric totem

🐒 Beeshell: The open source React Native component library

This article introduces the React Native component library developed by Meituan, which provides a series of basic UI components, including buttons, pop-ups, forms, input boxes, etc., covering both iOS and Android, and analyzes some design concepts.

πŸ• Large front end viewed from FE perspective

Big front-end is a popular topic and direction at present, and I believe that many students of mobile terminals have strong interest in this direction. The target reading group of this article is suitable for Native development students who are interested in front-end FE, focusing on PC and H5 browser. This will give you a panoramic view of front-end development and generate interest. A lot of native developers may suffer from a lot of nouns at the front, and many frameworks do not know where to start. This article is just for you.

πŸ• UIField​Behavior

This article takes the hover box as an example to explain the related content of UIFieldBehavior in iOS physics engine UIKit Dynamics. It first describes what Field Behaviors are, then explains how Spring Fields are used, and finally realizes a suspension frame that is suitable for development and debugging by combining some characteristics of the Field Behaviors.

Recommended by: WXGBridgeQ

πŸ• Clever implementation of debugOnly functions

The author saw a debugOnly function implementation without macro definition when learning Vapor source code. The code is as follows:

func debugOnly(_ body: (a) -> Void) {
    assert({ body(); return true}} ())Copy the code

For most projects, this feature might seem useless, but if you think about it, the debugOnly implementation is perfect for an SDK that can be relied upon by any project.

🐒 Bloom Filters and Swift 4.2

Bloom Filter is implemented and the new Hasher feature in Swift 4.2 is used to optimize the code.

πŸ• Donkey mother client channel page modular design ideas

An important technical requirement for more operational application development is to be able to update the application content in real time, and be as flexible as possible. This paper introduces in detail the lvmama client team under the guidance of SOLID principles, focusing on interface oriented, data driven, module isolation three points to design a modular framework suitable for their own business scenarios. It not only meets the need of shortening the content online cycle, but also provides ideas and directions for creating a unified and standardized business component library. At the same time, the overall design of the framework is also very worthy of reference and learning.

πŸ• INSIDE AUDIOKIT SYNTH ONE: A BRIEF TOUR FOR DEVELOPERS

Most of this article is a development note from the author while adding an AUv3 extension to the Synth One application. He wrote this post to share his experiences working on open source projects like AudioKit and Synth One, and to help anyone who wants to develop a music synthesizer like iOS quickly understand the design inside the framework.

🐎 The impossible triangle of code review

Code Review is one of the most important ways to ensure Code quality, but it is often not implemented in many r&d teams for various reasons. Why is that? The author of this article understands this phenomenon from a very simple point of view and gives some ideas for optimization accordingly. I hope the ideas in this paper can help students who are also troubled by the review πŸ™‚

πŸ• Use function composition to improve code maintainability

In the usual development, we may encounter some scenarios, development, code writing is very cumbersome, for example, the author cited the example:

process1(_ param: String) - >String
process2(_ param: String) - >String
process3(_ param: String) - >String
process4(_ param: String) - >String
Copy the code

In this case, if you use functional programming directly, the readability is not very good. In order to refactor the code to make it more maintainable, the author uses a combination of functions to solve this problem. In addition to the above example of function signatures, the authors also mention solutions for inconsistent function signatures and asynchronous operations.

Recommended by: Matthew

🐎 Simple LRU cache in MMKV (LRUCache)

This paper briefly analyzes the implementation of LRUCache in MMKV. LRUCache in MMKV is easy to understand, the source code in the article is also annotated, we can see this article to understand the specific implementation principle.

πŸ• Migrating to Unified Logging, Swift Edition

This article describes a more elegant way to log, so that developers don’t have to scramble to manage log code

  1. Treat OSLog correctly, he has already graded your logs
  2. Console.app can help you better view the client logs (if you use OS_log).
  3. Use OS_log as much as possible
  4. More details to pay attention to

code

andreamazz/SubtleVolume

The Spangenberg Volume is a volume bar component that is also supported on the bangs of the iPhone X(S/R) and may be useful to look at if your player requires a custom volume bar.

design

Be sure to be familiar with Sketch design methods and workflow

How to Get started with Sketch

push

  • Beijing – Baidu web disk continues to recruit iOS development: social recruitment, fresh year, internship can be. The project was technically challenging and the team’s technical atmosphere was excellent. Sincerely hope that all the gods come to learn, but also welcome a good computer foundation to learn together. Resume email [email protected], temporarily also welcome micro blog private message @xiaofei 86 chat ~

  • Beijing – Ant Financial wants iOS/ Android/front-end development: responsible for alipay membership and account business line, located in Beijing International Trade, 100 meters from the exit of Jintai Xizhao subway station. Interested students welcome to send your resume to: [email protected]/[email protected] (the same mailbox) or micro blog private message @ Tu Fan er _ MSG to understand the situation.

  • Shanghai Jike: if you know a smart, hardworking, ambitious and ambitious engineer, come and join us! Any references or resumes can be sent directly to Jason (Immediate iOS Leader) at [email protected] or @jasonyuh on Twitter.

  • Since 2016, Qizhi Technology has entered the field of Internet of Things and artificial intelligence through collaborative workflow Mesh of industrial UAV, and successfully provided uav solutions for real estate, construction, surveying and mapping, power inspection and other industries. If you are interested, you can find out about it via private message @Zhuo, who has no story.

  • Shenzhen Toutiao R & D center sincerely invites all iOS masters to do pleasing projects together: If you want to know more information about Shenzhen Toutiao, you can add small T wechat: Tomtan, to discuss technology and feelings can oh ~~~~

  • Beijing Bytedance iOS team continues to recruit: you can send your resume to [email protected], or add me (@aidenrao) on wechat Jingmu1994 to learn more information about the company and the position.

  • Beijing Baidu Education Business Division recruiting iOS development: Baidu Education Business Division, location: Beijing West Erqi. There are baidu Reading, Baidu Library, Baidu Listening and other App products under the department. The team has a strong technical atmosphere. If you are interested, please send your resume to my email: [email protected].

Pay attention to our

We have opened an official account, which will push messages when each issue is released. Welcome to follow it.

RSS feeds are also supported: github.com/SwiftOldDri… .

The current editor

@No story zhuo students, @Siniang, @Xiang Erxiansen, @DamonWong, @Torturous fan _ MSG, @Zhang Jiafu, @Aidenrao, @Parsifal, @Aaaron7, @Fang Qiulong, KYO, TOM510230, Anotheren, Shuishui, Looping, @Jasonyuh, @lao Lao Lao Lao Lao Donkey, @Xiao Fei 86

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)