Inflearn brand logo image
Inflearn brand logo image
Inflearn brand logo image
BEST
Programming

/

Mobile Application Development

Alan iOS Concurrency - Understanding Dispatch Queues and Operation Queues

Concurrency Programming - Covers all the concepts of synchronization and asynchrony required in iOS programming, as well as GCD and Operation that extend it.

(5.0) 59 reviews

823 learners

  • allen
iOS
Swift
concurrent

Reviews from Early Learners

What you will learn!

  • iOS Concurrency Programming

  • Understanding Optimization on iOS (Performance/Responsiveness)

  • Understanding the basic concepts of asynchronous/synchronous processing

  • Understanding iOS Dispatch Queue (GCD)

  • Understanding Dispatch Groups/Asynchronous Dispatch Groups

  • Understanding iOS OperationQueue

  • Example of a real project that applied GCD/Operation

  • A to Z on GCD/Operation

  • Understanding Thread Safety

  • Understanding Thread-Safe Object Design

  • Easy (picture-based) intuitive understanding of all this

🙋🏻‍♂️ Self-diagnosis chart

After class, you will have a clear understanding and understanding of the concepts below.

  • I have a clear understanding of the concept of dispatch queues . (Yes/No)
  • I understand the types of dispatch queues and quality of service (QoS). (Yes/No)
  • In most cases, I know why I shouldn't use the Sync method, and I understand the difference between when I absolutely must use the Sync method . (Yes/No)
  • I know about the concept of dispatch groups . (Yes/No)
  • I know what to watch out for when handling asynchronous functions in a dispatch group . (Yes/No)
  • I understand the concept of dispatch work items and why they are used. ( Yes/No)
  • I know the concept of dispatch semaphores and how to use them. (Yes/No)
  • When designing objects, you should clearly understand the considerations for the possibility of multiple threads accessing them, and design the right objects . (Yes/No)
  • When creating a project of the table view/collection view type that downloads images, I am clear about the points to be careful about in handling the asynchrony concept . (Yes/No)
  • I have a clear understanding of potential issues that can arise when using dispatch queues (when multiple threads access data), especially race conditions , and I know how to use TSan (Thread Sanitizer Tool) . (Yes/No)
  • I have a clear understanding of how to write thread-safe code . (Yes/No)
  • I know the concept of extended operations in dispatch queues and the differences between them. (Yes/No)
  • You can use it to distinguish when to use an operation queue instead of a dispatch queue. (Yes/No)
  • I understand the code for asynchronous operations (AsyncOperation) , which can handle asynchronous functions. (Yes/No)
  • You can freely use the main functions of the operation (setting the order of tasks, canceling them) . (Yes/No)

📝 Lecture Table of Contents

(It is largely divided into GCD and Operation parts. Even if you have a good understanding of GCD, you may be unfamiliar with Operation (task class) , a concept developed from GCD. It is structured so that you can understand everything in one lecture, more clearly and easily than any blog or lecture.)

🖼️ Example of picture caption style

(Examples of various illustration and diagram explanation methods used in class.)

🌈 Materials provided in the lecture 

Various materials are provided below.

  1. GCD Summary PDF - Chapter 287
  2. Operation-related Summary PDF - Chapter 89
  3. Code for GCD related explanation (playground file) - 19 pages (excluding source files)
  4. Code for Operation-related explanations (playground files) - 8 pages (excluding source files)
  5. iOS project files - 8
  6. Interpretation of the reference articles (2)

(All materials in the folder above are provided.)

🙌 Reference materials used in the production of the lecture

Although I referenced the materials below, I designed all the illustration descriptions myself.

  1. Video lecture ( iOS Concurrency with GCD and Operations ) - Raywenderlich https://www.raywenderlich.com/3648-ios-concurrency-with-gcd-and-operations
  2. Book ( Concurrency by Tutorials ) - Raywenderlich https://store.raywenderlich.com/products/concurrency-by-tutorials
  3. Article ( Operation and OperationQueue Tutorial in Swift ) - Raywenderlich https://www.raywenderlich.com/5293-operation-and-operationqueue-tutorial-in-swift
  4. Article ( The thread safety of lazy variables in Swift ) https://medium.com/what-i-talk-about-when-i-talk-about-ios-developmen/the-thread-safety-of-lazy-variables-in-swift-b20184ef5a38

🙋🏻‍♂️ Is the lecture content very different from the <Lecture Production Reference Materials>?

There really is a lot of difference.

If I had simply attempted to create a translation-level lecture based solely on the reference materials above, I would not have planned this lecture. I have chosen the best possible method of explanation, personally creating PPTs with efficient and effective explanations, direct illustrations, and diagrams on these topics to help you intuitively understand how threads actually work . As I mentioned above , I have reviewed the reference materials more than ten times, and while covering all the content, this lecture aims to make the explanations much easier and the various illustrations make for an intuitive understanding.

And since the content of these figures is something I personally organized over a period of more than two full-time months, I don't think you'll find an explanation like this or this detailed anywhere else (including overseas materials). For example, if there was a single line in the reference material (raywenderlich's video lecture) that said, "This problem can also occur with lazy var," I would have personally identified all the issues related to lazy var, organized them, and presented solutions while helping with intuitive understanding with figures.

Understanding the big picture makes writing code much easier. I've tried to maintain a balance between understanding through pictures and applying code as much as possible, which makes this book stand out from other reference materials. Compared to reference materials, this book offers much more detail, intuitiveness, and richer material, along with consistent, easy-to-understand explanations.

🐠 About the code provided

To help you understand the topic, code files are provided and it is also covered in the class . Most of the code provided is adopted from the GCD video lectures by raywenderlich within the scope permitted by the license ( the adopted parts are specified ). For the parts where the license does not permit (the code provided in the raywenderlich book), I wrote the code myself, and in the main framework , I tried to ensure the reliability of the code provided by writing similarly.

Additionally, to help you understand the code we provide, we've rearranged the code order and added more code for more detailed explanations, providing a variety of examples to help you understand the content of this course.

🤔 About class pricing

You might be surprised by the high price for a single topic, but I assure you, the extensive content is worth the price . To explain this content, I've personally created a PDF document, which includes 287 GCD-related pages and 89 Operation-related pages, totaling 376 pages . (The actual material I use in my video lectures consists of approximately 830 PPT pages, excluding code.)

This course covers virtually everything you can find in international resources related to GCD/Operations , and most of the figures and diagrams in this course are my own . A significant amount of time and effort went into this course, and I believe it's a crucial topic for future developer development. Therefore, from my personal perspective, I planned and created this course based on the principles of "I wish there were more resources and lectures like this ."

Personally, I believe that paying for a course is a trade-off between time and money . I believe it will be worth the money, saving you time studying the subject . I hope you'll save time and gain greater satisfaction. I will strive to provide you with quality content that exceeds your price, and I sincerely ask you to keep this in mind. ^^

💌 Lecture content license related

In the cases where I've even slightly referenced images or other materials in this lecture, the relevant URL address is provided in the PDF . Except for those cases, all materials are my own. Therefore, if you're organizing the lecture's explanations on a blog or other site, I kindly ask you to include the link to this lecture .

However, it is prohibited under any circumstances to post the entire contents of this lecture on a blog or to share the PDF files used as lecture materials .

👀 Preview of lecture content provided

Before you decide to take a class, we've made it possible for you to check out the lecture style in advance.

  • ( A preview of about an hour related to Section 0.1.GCD/Operation)
  • ( A 5-minute preview related to Section 10. 1. Operation)

You can take a look at the lectures that are provided in preview and decide whether to take them :)

Recommended for
these people

Who is this course right for?

  • Someone who has some knowledge of the Swift language

  • Anyone who wants to learn the basic concepts of synchronous and asynchronous processing in iOS

  • For those who want to know about the concept of GCD(Grand Central Dispatch) dispatch queue

  • Anyone who wants to know about the Dispatch Group

  • For those who want to know about Operation/OperationQueue

  • For those who want to know about the concept of thread safety

  • Beginner to Intermediate iOS Developer

Need to know before starting?

  • Understanding the Swift language

  • Understanding iOS Programming

Hello
This is

7,324

Learners

698

Reviews

296

Answers

5.0

Rating

7

Courses

iOS개발자 앨런입니다.
https://www.youtube.com/@allen_ios

제가 공부하면서 겪었던 시행착오를 쉽게 풀어내어
지식을 공유할 수있는 개발자가 되고싶습니다.

쉬운 주제로 빠른 시간 안에 겉핥기 식으로 쉽게만 가르치는 강의를 만드는 것에는 관심이 없습니다.
그런 강의는 얼마든지 빠르게 찍어내듯 만들 수 있겠지만, 결국 "좋은 개발자로 성장"하는 것은 그만큼 이론적인 기반의 밑거름이 탄탄해야 한다고 믿고 있기 때문입니다.

쉬운 강의보다는, 좋은 개발자(끝임없이 성장할 수 있는 개발자)가 되기 위해
반드시 알아야 하는 어려운 내용까지를 최대한 쉽게, 그리고 직관적으로 알려드리는 것.
그래서 제가 아닌 여러분 스스로 고민/생각할 수 있는 밑거름을 만들어 드리는 것을 저의 강의 목표로 삼고 있습니다.

저 스스로도 내일은 더 좋은 개발자가 되자는 모토를 가지고 있는 만큼
제가 고민 했던 내용들을 깊이있게 전달 드리고 싶습니다.


👇🏻문의는 아래의 이메일로 주시면 됩니다. 

we.love.code.allen@gmail.com


언어: Swift(스위프트), Python, Java, C#

Curriculum

All

32 lectures ∙ (8hr 9min)

Course Materials:

Lecture resources
Published: 
Last updated: 

Reviews

All

59 reviews

5.0

59 reviews

  • sujikang7936님의 프로필 이미지
    sujikang7936

    Reviews 3

    Average Rating 5.0

    5

    97% enrolled

    Here are some people who would benefit from this lecture: - People who think, "Oh no... What should I do?" when they hear the term "asynchronous processing" - People who solve problems by Googling, but have no idea why the code is written this way or if the logic matches the requirements That's me in the past. ◠‿◠.. I searched and read a lot of GCD-related materials to understand concurrency, asynchrony, etc., but my understanding was zero, and I continued to develop without understanding why and how to use it in what situation. Then, when I found out that this lecture was included in the mandatory iOS development lectures designated by the company, I thought, "This is it!" I heard about it and as soon as I listened to the first lecture, I knew that this lecture is the only lecture that I have come to finish GCD, which has been an unknown area for a long time. Every lecture is explained with pictures and examples. Wow.. The pictures are really God's work.. It's just.. It's the best.. Now, when I come across the content, the pictures are drawn in my head. Regardless of the field, I can confidently say that this is the only lecture among all the online and offline development lectures I have taken so far. If you leave a question, they will answer it in detail and kindly, so you can make the lecture 100% your own. Lastly, this lecture is a great help in understanding asynchrony/concurrency regardless of the language. I had a chance to read an article about async and await in JavaScript a while ago, and it was so easy to read that I thought, wow, this is a really great lecture. Well... To summarize in one word.. "I recommend the best lecture!" Mr. Alan, I hope you work less and earn more.. I hope you inhale wealth and exhale health...........!!!!!!!!!!!!!!!!!!!

    • brianj님의 프로필 이미지
      brianj

      Reviews 5

      Average Rating 5.0

      5

      100% enrolled

      First of all, the instructor is a non-major, so he understands the minds of non-majors very well and explains in great detail. It's really great. (I'm a non-major, too.) Anyone can understand it. Also, nowhere else do they teach synchronous/asynchronous content like this. I used to use asynchronous when communicating, but I didn't know exactly why, but I learned it after taking the class. However, studying isn't something that you can do perfectly just by listening to it once, right? But this lecture is great because you can listen to it repeatedly as many times as you want once you buy it. Thank you. (Lastly, there are PDF materials and codes, so I really, really like it! Highly recommended!! I personally listened at 1.25x speed. There are times when the image quality goes down, but you can select the image quality in the settings window on the bottom right. If you select the highest, it will go back up.)

      • sangbum225213님의 프로필 이미지
        sangbum225213

        Reviews 3

        Average Rating 5.0

        5

        47% enrolled

        I chose this course because I lack a lot of understanding of synchronous/asynchronous, but even while I'm listening to it now, the quality of the course is quite high, and it's a course that makes me think, "When will the next lecture be filmed?" It's really good. I highly recommend it!

        • leedh20083569님의 프로필 이미지
          leedh20083569

          Reviews 3

          Average Rating 5.0

          5

          100% enrolled

          I've taken many lectures so far, but most of them are for beginners and only explain the basics. However, this lecture covers everything from the basics to the advanced, and I felt that a lot of time was spent on the design of the lecture itself and the preparation of the lecture materials. If you give another lecture like this, I think I'll enjoy it! Personally, if the lecturer gives a lecture related to functional programming and Rx, I think I'll pay again and enjoy it. Thank you for the great lecture!

          • youngilchung0015님의 프로필 이미지
            youngilchung0015

            Reviews 6

            Average Rating 5.0

            5

            100% enrolled

            It's been a while since I've heard such a high-quality lecture. It was a difficult topic, but I was impressed by the part where you explained it easily with images. I was disappointed that this lecture wasn't discounted when other lectures were discounted, but after completing the course, I think it's natural. Thank you for sharing good knowledge, and I hope you continue to prosper.

            $51.70

            allen's other courses

            Check out other courses by the instructor!

            Similar courses

            Explore other courses in the same field!