Current location - Education and Training Encyclopedia - University rankings - Do you have any experience in developing iOS yourself?
Do you have any experience in developing iOS yourself?
basis

Some programming experience.

The programming experience mentioned here is to master at least one programming language, have a certain understanding of OOP, and it is best to be familiar with some basic design patterns. Most of the iOS development I met was transferred from other languages, so I have a certain programming foundation, and it will be easier to grasp the key points when I learn.

If it is the first time to contact programming, of course, there is no problem. Just be mentally prepared, which may be more difficult than you think.

English

It is found that many developers seem to be a little unacceptable to English, and usually prefer Chinese. Unless you have to, you have to read StackOverflow, English articles, documents, etc. I forget who said that "the harder the road, the easier it is", which is generally the case. In fact, as long as you push yourself a little, those technical articles should be fine. After several successful experiences, this fear will be much reduced. Most high-quality articles, videos and books are in English. If you don't cross this hurdle, you will either become a bottleneck in the future or spend more money to fill it.

Elementary course

book

To learn iOS development, it is natural to learn Objective-C first (of course, you can go directly to Swift now, but OC is still the mainstream if people collaborate), because OC is a superset of C language, so knowing C language will definitely help you learn OC, but even if you don't, learning OC directly is not a big problem.

Here we recommend BNR's "Guide to objective-c Programming for Nerd Ranch", which explains in detail, can help you better understand OC, and more importantly, teach you how to solve problems, as well as some knowledge points corresponding to this problem, how to use documents and so on.

When you come to a new world, you will be curious about the world, want to subscribe to many blogs, buy many books and watch various tutorials and videos, and then you will become impetuous and don't know where to start, which will lead to procrastination. I'm thirsty. Give me a glass of water. This is very direct, and I can do it right away. But if I buy a bottle of drinks and I'm not familiar with those drinks, I'll get entangled. Why don't I brush Weibo first, look at my circle of friends and play a little game?

Therefore, a good introductory textbook is very important. It should meet your current level and you will often gain something. This sense of accomplishment will encourage you to continue your study.

In the process of reading a book, there is often an experience: the book mentions a person, an idea, a knowledge point, a book, an article, and then goes out along these things mentioned by it. Maybe a knowledge point involves other contents, and then they go further and further. I remember a story-

Three hounds chased a woodchuck, and when the woodchuck escaped, it got into a tree hole. There is only one exit from this tree hole. Soon, a rabbit suddenly ran out of the tree hole. The rabbit ran fast and climbed up another big tree. The rabbit lost its foothold in the tree because of panic, and fell down, stunned three hounds looking up. At last, the rabbit escaped.

This story can be interpreted from different angles, and I prefer to interpret it with my heart. Why do rabbits climb trees? Why can you stun three hounds? that this is not the important question. The point is, what about the groundhog we chased before? Reading will inevitably lead to extended reading. I don't think this depth should exceed 2 floors, otherwise it will be easy to come back.

Also, if possible, it is best to watch it every day. In fact, it is very difficult, because there will always be things with higher priority or some previous habits. Once it's broken for a few days, I don't want to pick it up again.

Also, Apple's official start to develop iOS applications today is also a very good entry material.

videotape

I recommend the iOS 7 application developed by Paul Hegarty for iPhone and iPad. He also watched it at first (it was still an old version). Paul is a senior Mac/iOS developer (former Apple employee? ), many knowledge points are in place, most students' questions are very pertinent, and there is also a Demo. In short, you will have a comprehensive understanding of iOS development after listening.

At the same time, I recommend a booklet: objc-zen-book, which can be read in a short time and contains some best practices, which will be of great help in writing high-quality code.

notes

This is a long-lasting process and can be applied at any stage. I didn't pay much attention to this before. I thought the conceptual things would be known after I thought about them, and then I went to chew something else. Now it seems that if I take notes, it will be more helpful to digest concepts and knowledge points, and I can also record my own thinking process. Leonardo da Vinci recorded more than 10000 pages of notes.

Taking notes can deepen your understanding of knowledge points, and the only secret to becoming a programming superstar is that the deeper you understand what you are doing, the better you will do it. At the same time, if you review according to the forgetting curve, the effect will be better. After you know the knowledge thoroughly enough, it is easier to know where the problem is when debugging, and it is easier to have ideas to solve the problem.

Notes can not only record knowledge points, but also record the debugging process. For example, there is a debugging method in this note: Little Yellow Duck debugging method.

Many programmers have consulted and explained programming problems to others (even people who can't program at all), and hit the solution to the problem in the process of explanation. While explaining the intention of the code, observe its actual intention and debug it. Any disharmony between the two becomes obvious, making it easier to find your own mistakes.

We may not really do this in life. At this time, it is also a good way to find the problem by pulling out the other self and recording the conversation with ta.

practise

This is also a continuous process. After knowing some concepts or principles, I always want to verify whether this is the case. Whether the result is as expected or not, the process of practice will reduce the strangeness of the language and gradually cultivate a confidence in mastering the language. If something goes wrong, I can solve it again.

target

If you calm down and read BNR's book and Stanford's iOS development video, you should know more about OC, and some commonly used UIKit will be fine to use, such as UIView Controller/UIView/UIScrollView/UIImageView/UITableView. I am also familiar with some concepts, such as KVO/MVC/Delegate/DataSource.

At this stage, there should be: Oh, this is the case with iOS development. Read more documents and be familiar with some classes of Cocoatoouch, and you can almost make a simple App.

advanced

After getting started, there will be a lot of things to toss around.

book

Effective goal-C2.0, which mentioned 52 ways to improve the quality of iOS App. It involves API design, the use of protocols/categories, and writing more modular code. There should be a lot of gains after reading it.

IOS Programming: A Bookworm's Ranch Guide (4th Edition) Another BNR book, which is characterized by eliciting knowledge points through Demo, then asking some questions and explaining the problem-solving ideas in detail. In the process of reading, it will also help to improve meta-learning ability.

-Update-

I found that I can already buy Qiaoge's advanced iOS development in JD.COM. Although I didn't read it carefully, the quality of Joe's products is definitely guaranteed.

Other resources

After entering this stage, we can explore a bigger world. Now the resources are abundant, but we still have to follow the principle of "less but better". The following are resources that I think are good.

IOS Dev Weekly is published once a week, and the content is mostly Github projects, articles, tools and so on. Issues worthy of attention this week.

IOS Mobile Development Weekly This is a good weekly content about IOS development, which was greatly organized by Tang Qiao, mostly in Chinese.

RayWenderlich has many detailed and comprehensive tutorials, which should not be missed.

IOS Dev Slack Many domestic IOS developers (including adults) have come, but now it seems that they can't get the invitation.

Chinese iOS/Mac development blog list, open tool subscription.

Also, if possible, share what you have learned. Teaching is the best way to learn. I tried it several times, and the effect was really good.

target

At this stage, you should be familiar with common design patterns, memory management, block use, image operation, network request and management, and multithreading. I am very familiar with CALayer, Animation, UIScrollView, UITableView, UICollectionView and ViewController containers. The definition of "very familiar with" is that 80% of the corresponding knowledge points can be repeated in your mind without opening Xcode. For example, what are the methods of this class? What are the methods of Delegate/DataSource, how to use them, and what to do if you want to achieve an effect (except UICollectionView).

elder

In fact, there are no strict boundaries between advanced, advanced and introductory, and some advanced things can also be explored in the introductory stage. I think the driving force that supports our continuous exploration and progress is not interest, but insatiable curiosity and pursuit of elegant code.

If your standards are low, you will stop early in the process.

The upgrade of BNR is very good and more detailed.

book

The book "IOS 7 Programming Challenge Limit" will explain some features of iOS 7 in depth, of course, not just iOS 7. I just sigh that iOS updates are too fast, and books often can't keep up. A good book often takes a long time to write, and when the book can be published, a new version of iOS will come out.

source code

Look at the excellent source code, you can learn a lot, and the problems encountered in the use process are relatively easy to solve. These are the source codes that I think are worth looking at carefully: AF networking (ns operation, http, block), SDWebImage (image handle, cache, ns operation, block), SVPulltoRefresh (uiscrollview, state handle), JSON model (runtime).

If you are interested, you can also browse the source code of CoreFoundation/OC runtime.

resources

oleb

NSHipster

objc . io | | objcio.cn

WWDC video

tool

The LLDB assistant produced by chisel Facebook is very convenient to debug.

Reveal will open an App whenever it is curious about its implementation, which is also convenient for debugging its own App.

Aspectsteipete is an easy-to-use tool for method switching, which can dynamically add code to methods at runtime.

Class-dump generates OC header files from Mach-O files, and sometimes it is convenient to see how an App is organized.

Hopper can decompile binary files and even generate pseudo code! If you want to know how a method in UIViewController might be implemented, you can sometimes use it.

Instruments, a built-in tool, is very helpful for discovering various problems of App, such as memory occupation, leakage, rendering problems and so on.

target

At this stage, we will have a deeper understanding of the underlying implementation. The frameworks at the beginning of various cores can at least give a general idea, and the tools can be skillfully used. After writing tens of thousands of lines of "serious code", Dash may turn it over every day. If someone asks you to realize a function, you can give a good implementation plan in a short time, and it is detailed enough to draw an image with core graphics.

other

I think no matter what you learn, the "crash" mentality is the most undesirable, which will only make you impetuous and have a little knowledge, and it is difficult to improve your meta-learning ability in the whole process. Take your time, occupy one city, and then occupy another. At this time, your mind will be much more peaceful.