preface

Here, Daxin is an iOS development engineer who is studying hard. He is now committed to learning in the direction of full stack. He hopes to exchange technology with you and make progress together, and record his learning process on the Internet.

Some suggestions for reading this article are as follows: 1) We should treat this article dialectically. 2) This article only represents my one-sided view, if there are different views, please point out in time. This paper only expounds the learning route and the key problems in learning. 4. The opinions expressed in this article are not final and will be updated, because I am still in the process of learning, there are any omissions or mistakes please point out. If you feel something is wrong, please leave your suggestions in the comments. 6Copy the code

IOS third-party library source code & implementation principle 3. IOS standard configuration skills 4. IOS multi-threading 5. IOS architecture & Code specifications 6. IOS Engineering management 7. IOS FFmpeg & Opencv 10. IOS Underlying Principles 11. IOS App Reverse 12. IOS Swift 13. 14. Know where you are and where you want to goCopy the code

Views on this profession

I try to join all kinds of iOS development communication group, the group in the atmosphere is roughly: learn what iOS, iOS, OC, roughly three kinds of people in the group: who has the certificate of enterprise development, vest bag look at, so far, most of the iOS development group are just for blow water use, occasionally can run into a few good people to solve a problem, as a developer, There is a learning atmosphere and a communication circle is particularly important, this is my iOS development public number: programming Daxin, whether you are small white or big ox are welcome to enter, let us progress together, common development!


Recommended books & Website recommendations

Apple official website API search

Head First iPhone/iPad development iOS App Security Authority Guide High Performance iOS app development Advanced Core animation skills 2017 Ant Financial AR framework JINGdong application architecture design Wang Wei -Swift4.0 SwifterTips (4th edition) OS X and IOS kernel programming OpenGL coloring language AVFoundation secret CFNetwork- programming guide to understand IOS programming through the realization of TableView


Before Reading

This article is aimed at the improvement of iOS development level alone, there are technical omissions, and I hope you will actively reply.

I don’t say much, but I can only say two points: 1. I really feel that their level strength is below the average level, obviously want to improve their strength. 2. “Why learn these skills if you don’t need them at work?” This kind of thinking is not suitable for reading this article.

Since we all want to improve our strength, we should not always think about how to use it in our work. Everyone’s function is only so much. Why are they divided into different levels? Don’t count? Don’t be impetuous and steadily improve your hard power.


IOS based

This article is intended to learn the path to iOS development, so once you’ve reached this point, it’s assumed that you already know the basics and have worked on your own projects.


Apple official documentation & new apis

The Apple Developer website has an explanation, usage, and introduction to each API.

Use Baidu “iOS development “+ space +” each knowledge point “to search and learn all kinds of knowledge they are not good at. For example, the iOS Development Runtime principle.


IOS third-party library source code & implementation principle

We often use third-party libraries, such as: AFNetworking, MJRefresh, YYKit, SDWebimage, SDAutoLayout, Masonry.

Have you looked at how their third-party libraries are encapsulated?

How does AFNetworking implement asynchronous access to network requests, how does it handle the data dictionary you pass to it, and how many layers are encapsulated inside AFN?

How does MJRefresh work? How does SDWebImage cache work? How is YYKit optimized for FPS? What is the difference between the principles of the layout library of SDAutoLayout and navigation? Who is more efficient? There are plenty of third-party libraries to learn from.


Standard iOS skills

communication

First of all, in the daily communication of the company, we should be steady and polite. When problems arise, we should put forward solutions to the problems instead of taking emotions.

When there are new business requirements, according to their own strength, give different business solutions.

The shopping cart

Shopping cart can be said to be the most classic case in each client, which is a business requirement, but also involves the addition, deletion, change and check, asynchronous processing and other business logic mixed into a business requirement.

A robust shopping cart is an essential business skill. Same with login and registration.

pay

With shopping cart, there will be payment, familiar with alipay, wechat, UnionPay, Apple Pay IAP and other payment platforms access, access process.

You can not have done, but you can not know, such as alipay encryption algorithm RSA is what encryption. How he tested it. How do public and private keys store authentication in APP and server?

bluetooth

I’m not going to go into details about Bluetooth, it’s very easy, write a DEMO, don’t feel like you haven’t done it, write a connection DEMO, it’s not that hard.

In the actual Bluetooth project, you can choose a robust bluetooth device that is easy to access according to your business requirements. It is best to provide the kind of access manual, access is actually very simple, debugging effort just.

camera

Similarly with Bluetooth, you need to choose a camera that provides a molded SDK, unless your company is very strong and willing to buy a camera that provides the underlying library for you to make your own SDK. Be willing to invest the time and cost to develop an SDK.

3DTouch

Write a Demo and practice it. It’s easy, it’s a must, but you don’t do it for every application.

live

Livestreaming is now widely used by small and medium-sized companies on third-party livestreaming platforms. No matter whether you have done it before or not, you can first go to Tencent Cloud, Qiuniuyun and Ali Cloud development platforms to learn, and the technical documents are open.

Even if you read the knowledge once, it is better than not to see. You can access the Demo test to learn.

Of course, some companies do not want to access the third party, and there are open source frameworks to build their own live broadcasting platforms, which requires the three terminals to coordinate and deal with the needs together.

The RTMP push flow

For example IJKPlayer FFmpeg, including live principle, you have to understand.

What protocol does the live video follow to distribute the video package to the client one by one? The advantages and disadvantages of RTMP protocol.

Video processing

Video processing, like transcoding, rotating, encoding.

Different format processing, video size processing, why QQ and wechat small video can achieve super compression?

How to filter the video, like Douyin.

Image rendering & Filters

GPUIImage is a set of filters, image processing framework, you can learn how to add filters, processing images.

Socket & XMPP

Instant chat is also a popular technology. Almost every APP must have a chat function. Even if it does not, it will also involve customer service, feedback and other functions.

So what protocol does im follow and what does it do? Can understand iOS how to use Socket to achieve simple chat, or use XMPP protocol to achieve chat?

RN development & JavaScript

React Native, developed by Facebook, allows you to build world-class Native apps with a completely consistent development experience based on Javascript and React.

This is a new technology, and I haven’t touched it, so I won’t go into it, but just to give you a sense of it, some companies will use it to develop apps.

Git & SVN project version control

There is usually a backend developer or DBA in the company who creates a Git local management repository that is part of their local LAN.

If you’re developing iOS solo, you need to know the basics of version control,

If you work as a team developer in your company, also acquire conflict management skills

Elegant development

How to develop gracefully with Mac later


IOS multithreading

Flexible use and nesting of GCD, NSOperation, and NSThread


IOS architecture & code specification

IOS Application Architecture talk – by. Casa can study this article carefully to develop good code specifications.


Apple Official Kit

  • ARKit.
  • SiriKit
  • HealthKit
  • HomeKit
  • SearchKit
  • IOKit
  • PDFKit
  • CloudKit
  • GameplayKit
  • SpriteKit
  • SceneKit
  • MusicKit
  • ResearchKit
  • MapKit
  • StoreKit
  • AVKit

You can try to understand the above various kit official API, because it is possible that the new business requirements are the official API call things solved.


Runtime & Runloop

The Runtime and Runloop principles and mechanisms, and how to use them, you can learn more about them.


IOS FFmpeg & Opencv principle

What are the underlying principles of FFmpeg and Opencv, and what underpins this powerful video processing library?


Basic principles of iOS

The Runtime mechanism provides insight into the nature of objective-C objects and their message mechanisms, and the state of their methods and objects during compilation and execution.


The iOS App reverse

At present, I don’t have a deep understanding of App reverse, and I don’t know how to apply it in my work. It does let me know something beyond iOS development projects.

For example, client and server concepts,SSH login, and how well-known apps are structured (reasoning).


iOS Swift

While many projects don’t use Swift, Swift is a trend that you can look at.


Points not mentioned in this article

  • Crash log Analysis
  • Mobile encryption and decryption
  • Introduction to Data Structures & Algorithms
  • Mixed development
  • Machine learning
  • ARKit
  • RAC
  • IOS engineering
  • Modular development
  • Componentized development
  • Unit testing
  • Technical manager
  • The product manager
  • The architect
  • Ali Technology Frontier
  • Follow in the footsteps of giants

IOS Advanced concepts By.sindrilin

I am still in the learning stage, but I always want to convey a positive idea and a personal way of learning. Due to my lack of skills, I met senior SindriLin and exchanged my ideas with him.

SindriLin blog SindriLin Simple book

I’ve been told that progression should not be limited to iOS development, but should be viewed from an engineering perspective.

Code design ability

The ability to design code is mainly reflected in how to design code. The core of design patterns lies in six principles, rather than specific design patterns.

Tool design ability

Tool design ability lies in the process of using tools, understanding the implementation of tools, trying to design more suitable for engineering tools, this part needs a lot of code accumulation. On the other hand, because the tool is reusable, the code design ability is required, so it is higher.

Engineering planning ability

  • anti-risk
  • The cost of
  • return

conclusion

Indeed, as a development engineer, you need to look at the whole project, not just your stack, otherwise you can’t get quality improvement.

In short, I hope we can make our own efforts, as long as we do not stand still.


Know your position and route

One day, I had a conversation with my colleague Azhen about how to distinguish the development level. The difference between senior development engineers in junior high school is roughly: using third-party libraries, modifying third-party libraries, and creating third-party libraries.

It is recommended to have a look at the technology atlas shared by Ali, you will find that ali research technology is at the forefront of the world, and there is no end to learning.

Work hard, the good life is beckoning to you ~


conclusion

If you have any comments or suggestions on this article, please comment and discuss with me. If you think it’s good, you can order it to encourage me. If you want to study with me, please don’t hesitate to send me a message