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

HomeKit: Use Siri to control the smart hardware

HomeKit has long been held back by expensive gadgets. On the other hand, the ecological layout of domestic millet has begun to see scale: switches, sockets, lights and other varieties. But using Siri to control the hardware in your home is easily the most convenient in Apple’s ecosystem. Controlling the hardware through the Mijia app is always a bit of an afterthought. For this, the pioneers had considered using raspberry to send a curve to save the country, but the operation is complex, to average users still high threshold. This time, the mi’s native HomeKit controller is here, using the original home and Siri. If you’re planning a smart makeover, give it a try.

The article

🌟 🐎 Why are big companies still using outdated technology?

This article describes a very real problem, which is that some people work hard to join a large company, but it is not the same as they thought. In fact, many large companies are from small companies, will inevitably leave some antiques, or even bad atmosphere. From the perspective of company profits, cost is the first thing to consider. If the benefits from refactoring are greater than continuing to repair and maintain, most bosses will be willing to make improvements. But big companies are unlikely to let you test new technology if you don’t have strong technical skills. It’s not that big companies don’t have good technology, it’s that they understand risk control and want to find the best person to do it. Just as the author said in the article, “At work, constantly improve yourself, and complain less”. All the more reason to try to be what business owners are looking for — and we need — people like you.

🐕 Let it Rip

The author documented an effective process of using LLDB’s regular expression breakpoints and breakpoint Commands to trace the root of a seemingly clueless problem. The next time you’re faced with a warning/error that seems unmanageable, consider setting up an extensive, regular expression based breakpoint and a series of commands to help you out.

🐕 Talk about RxSwift and state management

At present, the concept of the big front end is very popular. In the big front end, one system can hardly be ignored: the React system. React system has deeply influenced the development of front-end and client technologies in recent years. From JS-based React, Vue and Rax to client-side language-based RxSwift and RxJava, although the implementation details are different, the idea behind the reflection is surprisingly the same: through the use of functional and responsive programming ideas, summarized a new set of models to better achieve business requirements.

This paper discusses two modes that have been widely used in the front-end, Redux based on React and VUEX based on Vue, which are implemented in Swift, analyzes the advantages and disadvantages of them, and finally proposes a relatively simplified mode. The article is written step by step and the introduction is relatively comprehensive, even students who are not familiar with these concepts can easily understand, recommend.

🐎 Migrate the Objective-C class to Swift

Migrating an Objective-C class to Swift, a sequel to a weekly update in Migrating an Objective-C class to Swift, can refactor while maintaining functionality and building on it. The most obvious alternative to extension is inheritance. By gradually moving the objective-C abstraction to the Swift class, the migration will be smooth, and the advantages and disadvantages will be analyzed by Ole.

🐕 Scalable bulleted lists with UILabel or UITextView

An example of using UILabel to implement paragraph styles, mainly through an NSParagraphStyle headIndent property to complete the entire paragraph indent (except the first line).

🐎 IOS App background Crash investigation

Peak recently investigated a weird crash, which could not be obtained through the App’s internal crash capture framework, but could be seen through the system’s own crash log by looking at Xcode. After troubleshooting, the fault is locked to the system. In order to ensure database synchronization in the local shared directory, the App is forcibly killed to generate a flash back log with code 0xdead10cc.

After the troubleshooting of this problem, Peak also summarized some scenarios of running iOS background tasks and some crash types that could not pass the App’s internal crash collection tool, which is of certain reference significance for our normal troubleshooting of flashback problems.

🐎 Creating a Bottom Sheet

This article describes in detail how to implement an interface similar to the system map home page with a list at the bottom. While this is not a difficult question to ask, the ideas provided by the author, including his code implementation, come across as very streamlined. In particular, it gave me a lot of new ideas about how to manipulate different views by combining controllers rather than on a single controller.

🐕 End inside and outside integration pull new, user growth — analysis of relevant technical scheme selection

H5 web terminal is easy to spread and promote in all kinds of APPS and browser containers, while APP client is used to undertake and has better experience and long-term user retention benefits and value. If users can polish the process of H5 -> APP and optimize the experience, they can greatly improve the conversion rate of new users. The key is to break the seamless way of transferring data between H5 -> apps.

It is well known that deeplink is widely used to transfer data from H5 -> APP, that is, Scheme/UniversalLink directly evoking APP for seamless connection. If you have not installed the APP when browsing the H5 web page, how can you seamlessly achieve the automatic access to the H5 data as soon as the APP is installed, so as to carry out seamless experience? This article will give you the answer.

🐎 The 5 Whys for Product Managers

The “5 Whys” is an analytical technique borrowed from Toyota’s product systems to find the root cause of problems. The model encourages simple “why” answers in succession, and then discovers that every seemingly technical question boils down to a people question. But the “5 Whys” isn’t about attributing blame. It’s about finding the root cause of an anomaly so that the team can improve so that it doesn’t happen again.

🐢 How to Build Swift Compiler-Based Tool? The Step-by-Step Guide

Polidea has opened source a code obliquation Tool called Sirius, and they have also written an article on how to use the Swift Compiler-based Tool Based on their experience and problems in implementing Sirius.

This article is divided into two parts to introduce their experience in implementing Swift code obfuscation tool:

  1. How to extend the Swift compiler so that it can call its own tools during compilation and integration.
  2. How to use compiler internal methods to enhance write tools from LLVM, Clang, and Swift itself.

The article is relatively long, it is best that we can do hands-on practice once, in order to better understand the article.

🐕 Sourcery-swift metaprogramming practice, farewell to boilerplate code

Swift Codable has optimized the JSON parsing experience. However, if you need to customize the parse name of an attribute, or skip the JSON mapping of an attribute, you will need to hand-write all the codingkeys yourself. This article describes leveraging Sourcery’s metaprogramming capabilities to optimize scenarios that require handwritten Codingkeys.

🐎 Trimming long argument lists in Swift

When we want to add new functionality to an existing method, but don’t want to rewrite a similar method, we usually add new parameters to the parameter list. While each change seems fine, over time the parameter list becomes long and difficult for other maintainers to understand. Several tips, including encapsulating the associated parameters into new types and decoupling the compound logic through a split/composition approach, show how to extend functionality while keeping code as clean as possible.

code

Converts pointer addresses to emoji during visual debugging

During debugging, we often need to judge whether two variables are the same instance. However, most of the time, Po obj can only get a string of memory addresses, which need human eyes to compare. This gist extends NSObject so that print obj.aspointer. asEmoji can print emoji characters (such as 🌰) instead of pointer addresses.

push

Beijing – Ant Financial is looking for iOS/ Android/front-end development

Recruitment by Ant Financial, responsible for alipay membership and account business line, located in Beijing International Trade, 100 meters from the exit of Jintai Xizhao subway station. Although the recruitment link is only given to iOS JD, but the front-end/Android /iOS, similar requirements. Interested students welcome to send your resume to: [email protected]/[email protected] (the same mailbox) or this micro blog private message @ Tu Fan er _ MSG to understand the situation.

Edit the push

  • 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 ~~~~

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

  • Baidu Education Business Division recruiting iOS development: Baidu Education Business Division, location: Beijing West Second Banner. 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, @old old old old donkey

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)