For the New Year, I’d like to welcome our tenth editor @Parsifal.

news

App Store description screenshots increased from 5 to 10

Apple has again updated its listing rules for the App Store, announcing that developers will now be able to add 10 screenshots to the screenshots section of their apps, up from five.

From April, all apps submitted for approval will be based on the iOS 11 SDK

Starting in April 2018, all apps submitted for approval will be developed based on the iOS 11 SDK and will support the Super Retina display of the iPhoneX.

This also means that developers need to use at least Xcode 9 to develop their apps, and make sure that their apps are adapted for security zones on the iPhoneX.

The article

🌟 Explore iOS memory allocation

This paper introduces the principles of VM in iOS (OS X) system, and how to use VM Track template to analyze VM Regions. Through in-depth understanding of iOS memory allocation, memory optimization can be targeted.

🌟 FlatBuffers, ProtocolBuffers, and MessagePack are optimized in mobile scenarios

JSON has the advantages of being readable and easy to use. However, it also has the disadvantages of time-consuming parsing, high parsing memory consumption, and large data volume. In addition to JSON, there are other mainstream MessagePack, FlatBuffer, and ProtocolBuffers. This paper compares the advantages and disadvantages of these communication protocols in different scenarios.

Just Controllers

The MVC pattern on iOS ends up with a lot of code in VC, which is a consensus in the industry. One way to optimize is to split the VC code into the Child View Controller. In practice, you will find that child View Controller is not as easy to use as UIView. Note its lifecycle control with parent View Controller. A View in a View Controller can also be used differently than a pure UIView instance. In some scenarios it might be a better idea to customize a Controller class that contains UIView.

UIVisualEffectView Tutorial: Getting Started

Using the UIVisualEffectView provided in UIKit to achieve common blurred background effect is simple and easy to use. This paper introduces the principle of fuzzy algorithm and how to use UIVisualEffectView.

Unit testing asynchronous Swift code

There are a few tips on how to handle asynchronous code in unit tests: Verify task completion by setting the Inverted attribute of XCTestExpectation; Add the asynchronous closure to the synchronous thread, and then execute an empty closure in the synchronous thread to determine if the asynchronous operation has completed; Mock asynchronous operations as synchronous operations in your code to avoid dealing with asynchronous cases.

iOS Developer Roadmap

In the iOS development skill map maintained by foreign developers, the author summarizes the skills involved in iOS development into one topic and provides learning resources for corresponding topics. Whether you are a beginner, a developer looking to improve, or a job seeker preparing for an interview, you can use this map to learn and organize your knowledge.

Analysis of iOS IP direct connection

The network status of the mobile Internet is very complex. The change of any status of the three major carriers, 3G, 4G, Wi-Fi and location will lead to the change of network status. Direct IP connection can bypass the resolution process of the carrier’s LocalDNS server, thus reducing latency and avoiding hijacking. This article analyzes the principle of iOS IP direct connection, highly generalized, easy to understand, worth a look.

iOS Code Signing Tutorial Series

Shashikant Jagtap is the author of a series of five iOS Code Signing posts. As we all know, iOS Code Signing has always been one of the most mysterious things for most iOS developers, despite the so-called official documentation. Obviously, the author also found this problem, so he adopted a hands-on approach, and tried to explain some details of iOS Code Signing to readers more easily. (PS: If you are doing technical article translation, you can consider translating this series into Chinese to benefit more developers.)

How I Slowly Got Lazy (2) : Jenkins Fully automated

The author writes a summary based on his actual project experience. I talked about “what kind of Jenkins environment I built” and what problems I met in the process of building.

tool

Snipaste is available in public beta for Mac

Snipaste for Mac is now available in public beta to change your experience with screenshots on the Mac.

code

ZHStatusVolume

Hide the system HUD when setting the volume and display the volume change on the status bar. Written with OC, compatible with Swift, just released the first version, if you have any problems in use, please feel free to contact me @zhuo@no story.

ReactiveLists

ReactiveLists based on React programming ideas, encapsulates the UITableView and UICollectionView API, using which you can write stateless functions to generate list pages. According to the authors, these stateless functions are easier to read and iterate over than DataSource and Delegate in providing data to UIKit components, and also easier to test.

Open Sourcing ReactiveLists for iOS

Uber’s App development architecture for RIBs

Uber’s cross-platform development framework RIBs, the architecture name is a combination of the initials Router, Interactor, and Builder to indicate what the architecture is composed of. Advantages:

  • Sharing the same architecture between iOS and Android;
  • Testability and isolation, facilitating unit testing and high decoupling between individual RIB classes;
  • Provides a range of development tools for code generation, memory leak detection, static analysis, and runtime integration;
  • A scalable architecture that has been proven to work with thousands of people developing based on a unified code base.

An architecture suitable for responsive programming and large projects, students who are interested in architecture should not miss it.

SwifterSwift

SwifterSwift is a collection of Extensions written in Swift, which covers most of the methods and functions used in the development process. It is a good tool library. SwifterSwift includes SwiftStdlib Extensions, Foundation Extensions, UIKit Extensions, AppKit Extensions, and CoreGraphics Extensions, CoreLocation Extensions, Misc. Extensions, etc.

Audio and video

🚧 🌟 Swift ‘s Reflective Underpinnings

Video of a Swift core development team member speaking at the Swift Summit. This paper introduces the foundation of Swift dynamic capability construction, and mentions the dynamic features that may be introduced in the future Swift version. In Fact, Swift already has some reflection capabilities, each type has internal metadata, you can look up the type of fields, methods, but not exposed. Swift enthusiasts are strongly recommended to watch, a lot of dry goods.

And other videos from the Swift Summit are shared on Skilled so you can follow them.

The current editor

@No story Zhuo, @Mmoaay, @Eyrefree, @DamonWong, @Zhang Jiafu, @AidenRao, @Parsifal

instructions

🚧 indicates the need to climb over the wall, and 🌟 indicates the recommendation of the store manager