강의

멘토링

커뮤니티

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) 63 reviews

828 learners

  • allen
iOS
Swift
concurrent

Reviews from Early Learners

What you will gain after the course

  • 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,489

Learners

732

Reviews

303

Answers

5.0

Rating

7

Courses

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

"정확하게 아는 지식은, 쉽게 자신의 말로 설명할 수 있어야 한다."가 제 모토입니다.

그렇기에 제가 공부하면서 겪었던 시행착오를 쉽게 풀어내어
누구든 이해할 수 있는 언어로 지식을 공유할 수있는 개발자가 되고싶습니다.

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

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

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

 

면접에서 자꾸 떨어지거나, 쉬운 내용도 자신의 언어로 잘 표현하지 못하겠다는 것은 정확하게 알고 있지 않다는 의미라고도 생각합니다. 오히려 기본적인 내용, CS에 대해 "탄탄한 기본기"가 있어야, 빠르게 성장 가능하다고 믿습니다.


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

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

63 reviews

5.0

63 reviews

  • sujinnaljin님의 프로필 이미지
    sujinnaljin

    Reviews 3

    Average Rating 5.0

    5

    97% enrolled

    이 강의를 들으시면 좋은 분들은 다음과 같습니다 - "비동기 처리"라는 말만 들으면 "ㅎ.. 큰일 났다.. 어떻게하지..?" 라고 생각하는 분 - 구글링해서 해결은 하지만, 왜 코드가 이렇게 작성되는 건지, 요구사항에 맞는 로직인건지는 전혀 모르겠는분 바로 과거의 저입니다.. ◠‿◠.. 동시성, 비동기 등을 이해하기 위해 GCD 관련 자료도 꽤 많이 찾아 읽어봤지만 이해도는 제로였고 어떤 상황에서 왜, 어떻게 쓰는지 이해하지 못한채로 계속 개발을 해왔습니다. 그러다가 회사에서 지정한 iOS 개발 필수 강의에 해당 강의가 포함되어 있길래 "이거다!" 하고 듣게 되었고, 1강을 듣자마자 알았습니다.. 이 강의는 오랫동안 미지의 영역으로 남아있던 GCD를 끝내러온 단 하나의 강의라는 것을요.. 매 강의마다 그림과 예시로 설명해주시는데.. 와.. 진짜 그림이 신의 한수고.. 그냥.. 그냥.. 최고됩니다.. 이제 해당 내용을 접하면 그림이 머리속으로 그려져요. 영역과 상관없이 제가 지금껏 수강해온 모든 온오프라인 개발 강의 중 단 하나의 강의를 꼽자면 바로 이 강의라고 자신있게 말할 수 있습니다. 궁금한 점도 질문으로 남기면 길게, 자세히, 친절히 답변해주셔서 강의를 100% 자신의 것으로 가져갈 수 있습니다. 마지막으로 해당 강의는 언어에 상관없이 비동기 / 동시성 이해하는데 큰 도움이 됩니다. 얼마 전에 자바스크립트의 async와 await 관련 글을 읽을 기회가 있었는데, 그냥 술술 읽혀서 와 진짜 이건 갓강의다.. 생각이 다시 한번 들었거든요. 튼... 한마디로 요약하자면.. "최고의 강의 추천합니다!" 앨런님 적게 일하고 많이 버시길.. 들숨에 재력을 날숨에 건강을 얻으시길...........!!!!!!!!!!!!!!!!!!!

    • 브라이언제이님의 프로필 이미지
      브라이언제이

      Reviews 5

      Average Rating 5.0

      5

      100% enrolled

      일단 강사님께서 비전공자라 그런지 비전공자의 마음을 잘 아시고 설명하실 때 엄청! 자세하게 설명해 주셔서 너무 좋습니다.(저도 비전공자입니다.) 누구나 들어도 이해할 수 있을겁니다. 또한 어디에서도 이렇게 동기 / 비동기에 관련된 내용을 가르쳐주지 않습니다. 통신할 때 무조건 비동기를 써야 한다고 해서 쓰기만 했지, 이유에 대해선 정확히 알 수없었는데, 수업을 듣고 알게되었습니다. 하지만 공부라는게 한번만 듣는다고 완벽한 건 아니잖아요? 근데 이 강의는 한번 사두면 무제한 반복적으로 들을 수 있기에 좋습니다. 감사합니다. (마지막으로 PDF 자료라든가 코드들도 다 있어서 너무 너무 좋아요! 강추!! 개인적으로 1.25배속으로 들었습니다. 중간중간 화질이 낮아지는 현상이 있는데 그건 오른쪽 하단 설정창에 보시면 화질을 선택할 수 있습니다. 제일 높은걸로 선택하시면 다시 돌아옵니다.)

      • 이상범님의 프로필 이미지
        이상범

        Reviews 3

        Average Rating 5.0

        5

        47% enrolled

        동기/비동기에 대한 이해가 많이 부족해서 이 강의를 선택 하였는데 현재 듣고 있는 중에도 강좌의 퀄리티가 상당하며 다음 강의는 언제 찍으실까? 라는 생각을 해보는 강좌입니다. 완전 좋습니다. 너무 추천합니다.!

        • 왈왈234님의 프로필 이미지
          왈왈234

          Reviews 3

          Average Rating 5.0

          5

          100% enrolled

          지금껏 많은 강의를 들었지만, 대부분의 강의는 초보자를 대상으로 기초만 설명하는 강의가 대부분이었습니다. 하지만 이 강의는 기초적인 부분부터 심화까지 정말 잘 다루신 것 같고, 강의 자체가 설계부터 강의 자료 준비까지 시간을 많이 들이신 게 느껴졌습니다. 다음에 또 이런 강의를 낸다면 재밌게 들을 수 있을 것 같네요! 개인적으로 강의자분께서 함수형 프로그래밍과 Rx와 관련된 강의를 하신다면 한 번 더 결제해서 재밌게 들어볼 것 같습니다. 좋은 강의 감사합니다!

          • SGK님의 프로필 이미지
            SGK

            Reviews 6

            Average Rating 5.0

            5

            100% enrolled

            간만에 고퀄리티 강의를 들었습니다. 어려운 주제인데 이미지를 곁들여서 쉽게 설명해 주신 부분이 인상적이었습니다. 다른 강의들 할인 할 때 본 강의는 할인을 하지 않아 섭섭 했으나 완강 후에는 당연하단 생각이 드네요. 좋은 지식 나눠 주셔서 감사하고 건승하십시오.

            $51.70

            allen's other courses

            Check out other courses by the instructor!

            Similar courses

            Explore other courses in the same field!