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

🌟 🐢 Facebook launches new JS engine! Focus on improving the performance of React Native apps

@ CrazyCoderShi: React Native is a long-established cross-end development solution that has been firmly established in the cross-end development stack. Recently, Facebook released a new JavaScript engine, Hermes, which focuses on improving the performance of React Native applications. React Native 0.60 has other surprises for those of you who have been critical of React Native’s performance.

The article

🌟 🐢 SwiftUI: A genius move by Apple

Parsifal: After using SwiftUI to build the iPad version of NetEase Yan Selected, the author went back and assumed that he was the designer of SwiftUI to analyze step by step how SwiftUI became so popular that it debuted on WWDC19 in its current form. SwiftUI has two most prominent features: SWIFt-based DSL and data flow driven programming paradigm. Based on these two points, this paper analyzes the solutions adopted by various popular languages and predicts how Apple finds the most suitable solution for SwiftUI from these solutions. SwiftUI benefits from Swift’s full support, making it easier to design a developer-friendly development experience.

Finally, the authors make an interesting point in their review of SwiftUI – “The responsive programming advocated by Combine is ill-suited for handling UI, interactive logic.” Reactive programming is programming using asynchronous data stream, it triggered from the user interaction to logical processing and interactive user feedback, as a signal to trigger changes in the data on the logical link for processing, and Combine is apple to learn from the current community through a variety of implementation scheme for SwiftUI supporting custom way of data management. So does the programming paradigm apple has finally chosen really work for SwiftUI? Or if we do not use Combine, do we have other more appropriate choices? The author throws up a point that is well worth continuing.

JasonYu, editor of the weekly, has written about Reactive Programming – why Reactive Programming? One article, is also worth everyone taste.

🐕 Build iOS mobile group chat App with Swift 5

This paper introduces the implementation process of building anonymous chat application with PubNub SDK based on mqTT-based message subscription and publishing instant communication protocol. It adopts Swift 5 to simply realize real-time message sending and receiving and storage of historical messages. Interested readers can click here to view the source code.

🚧 PubNub: Provides real-time information and communication services for mobile terminals and network application development. Now there are more than 70 SDKS, which can support the integration of various apps and services into their own networks and provide one million free messages per month.

🐕 Building a Trello-like iOS App with Drag & Drop API

How to build an iOS App like Trello using the Drag & Drop API from AppCoda If we want users to be able to move data back and forth across the screen, drag and drop is the most natural way to interact. Trello, Jira and other apps use drag and drop in a large number of ways. Before the iOS 11 SDK was released, the drag and drop feature in iOS apps was very complicated to implement and it was difficult to make the experience smooth enough. But starting with iOS 11, Apple finally provided an easy-to-use Drag & Drop API in the Cocoa Touch SDK.

🌟 🐎 KVO multiple symbols coexist in different binary Crash problem | SatanWoo

Lianshu: Students familiar with iOS dynamic library know that due to the mechanism design of iOS, it is allowed to have classes with the same name in the main file and dynamic library. However, this mechanism also has potential pitfalls, such as conflicts with KVO mechanism, resulting in crash. The author of this article analyzes the ins and outs of this pit in detail, along with a lot of knowledge about the iOS Runtime, which is very informative and recommended reading.

🐢 Swift5.0 Runtime

AidenRao: Objective-C Runtime mechanism is well known, while Swift underlying principle is rarely studied. By comparing with OC, and translating the assembly code of the program into pseudo-code of C language, the author analyzes how the internal objects are created in Swift, how methods and function calls are implemented, how member variables are accessed and how the object memory is laid out.

🐎 Better Storyboards with Xcode 11

J_Knight_ : This article describes two improvements apple made to Storyboard in Xcode 11. The first improvement is the Segue Action. We can use the Segue Action to manually initialize the destination controller before the Storyboard jumps. The second improvement is instantiateViewController method. After iOS 13, we can use the constructor block provided with this method to implement our custom controller constructor.

🐎 How do you write code that your colleagues can’t maintain?

Tom510230: This article gives a number of examples of what bad code looks like in six parts

  1. Program naming: Bad naming makes for bad reading
  2. Spoofing: Inconsistencies between appearance and behavior can make code less maintainable
  3. Documentation and comments: Documentation and comments need to be maintained just like code
  4. Programming: Looking at best practices makes code more elegant
  5. Testing: Testing first contributes greatly to code quality
  6. other

In general, if all of the above examples are avoided, the code will be very readable. Readers can take a look at their own code, see where the bad case matches, and make changes accordingly.

tool

The best JIRA project Management tool alternative of 2019

Anotheren: Project management is something you have to deal with when you reach a certain stage. This article lists 12 project management tools that can replace JIRA. If you haven’t used any of them yet, it’s time to give them a try.

SwiftUI-Cheat-Sheet

@shuishui: Here are some API usage examples for SwiftUI. When you use SwiftUI, you can quickly get relevant code for reference.

XCAssetsKit

@jimq:.xcassets resolver, Swift implementation. As.xcassets become more powerful, the system provides many factory methods to use the resources in them, such as UIImage(named:). However, the new API won’t work on older systems, such as UIColor(named:), until iOS 11. This is where XCAssetsKit comes in, precisely reading resources in.xcassets for various custom needs. Several common resource resolution methods are currently supported and are still being improved.

code

NSAttributedStringBuilder

@Smiling drinking arsenic: This is to use SwiftUI style syntax NSAttributedString functions, implementation and traditionally used NSAttributedString, now use NSAttributedStringBuilder, NSAttributedString can be declared using a swiftui-like syntax. Besides NSAttributedString grammar more clearly, because the NSAttributedStringBuilder constructor USES the function, and it also allows the API in UIViewRepresentable build components.

Runtime

@ siniang: a metadata-based Swift runtime library that can easily view type information and dynamically call property getters and setters:

let info = try typeInfo(of: User.self)
let property = try info.property(named: "username")
let username = try property.get(from: user)
try property.set(value: "newUsername", on: &user)
Copy the code

push

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)