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

๐Ÿšง Apple is experimenting with ObjC + WebAssembly in the web version of iWork

Some of the features in iWork 10.0, which has recently been released for the web, have been changed from C++ / ObjC code in native apps to compiled with WebAssembly for use on web pages. Although I haven’t found more information yet, I can feel some new attempts and relevant ideas of Apple’s cross-platform development.

The novice recommended

๐ŸŽ Flutter skills article: debug the program start | ยท DTalk developers said

This article is suitable for those who are new to flutter on AndroidStudio. It explains the basic functions of flutter debugging. This article uses a simple error example to demonstrate this process, as well as learn about the rendering process. If you’re using vscode, you can use the analogy, but it’s pretty much the same.

The Flutter rendering mechanism — UI Thread

The article

๐ŸŽ How to break a function’s return

During breakpoint debugging, if you have a scenario where there are many returns in a long function, and you want to quickly break to which return is executed, what is the best way to do this? Step or return from breakpoint to breakpoint? These two methods work, but they are cumbersome. This article introduces a more convenient method, through LLDB to quickly locate, for our daily development, is a very practical tips.

๐ŸŽ Testing push notifications on the iOS simulator

@Zhangjiafu: Being able to test push notifications in an iOS emulator makes it much easier to develop remote push features. It usually takes many iterations to verify that the functionality implemented is as expected. Prior to Xcode 11.4, functionality like Rich Notifications could only be tested with third-party apps like NWPusher and real devices, which worked fine, but didn’t iterate as fast as using the iOS emulator. Starting with Xcode 11.4, we can test push notifications in the emulator using just one of the new simctl commands. This article will show you the implementation details, including using three different ways to trigger remote push notifications.

๐Ÿ• Optionals in Swift Objective-C Interoperability

J_Knight_ : This article describes the problem of using the nonnull attribute (object) defined in Objective-C after doing Swift bridge. The author cites the NSCalendar and NSArray example and combining with the source code for _unconditionallyBridgeFromObjectiveC method. For those of you who have done the same, check out this article to see if you have any problems with it.

๐Ÿ• SE-0281: @main: Type-Based Program Entry Points

@siliang: After ArgumentParser came out, people wanted an annotation like @uiApplicationMain to declare entry functions, and the Windows platform supports multiple entry function types, so main.swift didn’t fit well.

Se-0281 is designed to address these issues, and the proposal is simple enough to declare entry functions using the @main annotation:

@main 
struct MyProgram: ApplicationRoot {
    static func main(a) { .}}Copy the code

The proposal has been approved and implemented and is expected to be released in Swift 5.3.

๐Ÿ• How to ensure the high performance and smoothness of Flutter for complex business?

CrazyCoderShi: High performance and fluency has always been one of the great things the Flutter team advertises, but as the complexity of the business continues to rise, a paradox arises: the performance of these Pages may not be as good as Native’s! Why is that? Is our posture wrong? This article by the salty fish team, they also encountered the same confusion, and from the principle of the level with you step by step to locate and solve this kind of problem.

๐Ÿข Xcode Build Time Optimization

  • Xcode Build Time Optimization 1
  • Xcode Build Time Optimization 2

JimQ: This “Xcode Optimization Build Time” series is divided into two parts. The first part is about metrics and the second part is about optimization measures.

  • Indicators:
    • What measure
      • Clean build time
      • Incremental build time
    • Measure Build time
      • Xcode build reports
      • Xcode Build Report Summary
      • Type check warning, which generates a warning for any function or expression that takes longer than the specified check time
      • Compiler diagnostic options, a variety of diagnostic options are built into the editor for analyzing builds
      • Measure the Targets build time and use the xcode-build-times command tool to learn about Targets that you want to build or can build in parallel
      • The metrics are summarized using XCLogParser, the log parser for the XCactivitylog generated by Xcode, which provides a great deal of insight into build times, warnings, errors, and unit test results for each module and file in the project, and can be visually output in HTML
    • automation
  • Optimization measures:
    • Optimization of build Settings
    • Source code improvement
      • To find code that compiles slowly, use the tool Build Time Analyzer
      • Reduction of reconstruction efforts
        • Define entities in separate files
        • Use access modifiers correctly
      • Remove unused code
      • Pre-build dependencies, using pre-built dynamic frameworks and libraries to improve build efficiency
      • Code vs Xibs/Storyboards, the build time difference is not significant
    • The project to enhance
      • Improved running script phase
      • A modular architecture is used to build Targets in parallel
      • Third Party build system

๐Ÿ• Cross-Pollination

AidenRao: Lots of good ideas, from being criticized to being integrated into Apple products like:

  • Application switching on Windows โŒฅ โ‡ฅ (on macOS โŒ˜ โ‡ฅ)
  • Dark Mode for Android (added in iOS 13)
  • Generics in Java and other languages (a core feature of Swift, later added to Objective-C)
  • Jsx-style DSL declarative UI (Function Builder in SwiftUI)

But until Apple does, why do we think these good ideas are heretical? If you see competing technologies as a struggle between good and evil, proudly proclaiming “Pure Swift” or “100% JavaScript free,” that’s an allegiance, if not a solution evaluated through a series of trade-offs, and that allegiance doesn’t get you all the way to the job.

tool

Debugging superpowers with FLEX

@Henson: FLEX is an App debugging tool developed by Flipboard team. You can monitor network requests, view UI tree, view sandbox files, etc. Note: FLEX cannot be included in the Release environment, otherwise it may be rejected.

ResilientDecoding

@ speed boy: ResilientDecoding is an elastic decoding tools, he can be optional, array, a dictionary or to conform to this treasure ResilientRawRepresentable provided by the agreement of the custom type type decoding.

Woodpecker iOS development tools

Red Paper: Woodpecker iOS development tool is an in-app Debug tool set from youku team, which contains 17 functions including common UI check, JSON packet capture, CPU usage, Crash listening and so on. Can not rely on computer joint debugging, directly obtain runtime data quickly locate bugs, improve development efficiency. Different from other development tools, it has more method listener and Po command, can call any method during running.

XcodeColorSense2

@waterwater: an Xcode plugin that previews hexadecimal color values directly in Xcode. There’s no need to find another way to check the color! Installation and use are very simple, there is a need to try the reader oh ~

X-SwiftFormat

@eyrefree: Swift code formatting tool, can be integrated into the use of Xcode, meet most common code formatting requirements, you can manage the formatting rules through the GUI configuration center, of course, you can also directly edit. Swift-format. It can be quickly enabled by configuring shortcut keys, which is very convenient and worth a try.

Flr: an excellent Flutter resource management tool

Flr, pronounced Flutter -r, is a development tool for managing Flutter resources developed by netease Yan Xuan Zhi Manufacturing team. Flr can help Flutter developers automatically add declarations to Pubspec. yaml and generate R.G. Art files after modifying project resources. Flr also provides three different tools to meet various needs, including the Android studio plugin, CLI, and VSCode extension. For those who are interested, given the recent Flutter fire, it would be nice not to have to learn the source code.

Recommended by: YorkFish

code

๐Ÿ• Lasso – iOS architectural pattern and framework

Zvving: iOS architecture implementation following Redux ideas. Screen is used to realize the minimum REdux module, and Screens are configured through Flow combination. The overall implementation is simple and clear, and the code quality is very high. It is a good architecture learning resource, which may be too ideal for practical projects.

push

Hangzhou – Alibaba Tao Technology Base Platform: Senior Wireless Engineer (P6)/Wireless Expert (P7)

  • IOS architecture and underlying direction
  • IPad, new feature direction
  • Business Development and Architecture (iOS/ Android)

If you are interested, please add wechat to understand the specific requirements. Ag: damonwong2. You can also send your resume directly to [email protected]

Recommended by veteran drivers

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)