Skip to content

Latest commit

Β 

History

History
31 lines (18 loc) Β· 1.96 KB

NSOperation,GCD.md

File metadata and controls

31 lines (18 loc) Β· 1.96 KB

NSOperationQueue 와 GCD Queue 의 차이점을 μ„€λͺ…ν•˜μ‹œμ˜€.

도움을 μ€€ 쒋은 λΈ”λ‘œκ·Έ

ν•„μš”ν•œ 사전 지식

쉽고 νŽΈν•œ λ©€ν‹° μŠ€λ ˆλ”©μ˜ 처리λ₯Ό μœ„ν•΄ Appleμ—μ„œ 두가지 APIλ₯Ό μ œκ³΅ν•œλ‹€.

  • GCD(Grand Central Dispatch) - C기반의 μ €μˆ˜μ€€ API

  • NSOperation - Obj-C기반의 κ³ μˆ˜μ€€ API

    • GCD보닀 μ•½κ°„μ˜ μ˜€λ²„ν—€λ“œ λ°œμƒ 및 느린 속도λ₯Ό κ°–κ³  μžˆμ§€λ§Œ GCDμ—μ„œ 직접 μ²˜λ¦¬ν•΄μ•Όν•˜λŠ” μž‘μ—…(KVOκ΄€μ°°, μž‘μ—…μ·¨μ†Œ λ“±)을 μ§€μ›ν•˜κ³  μžˆκΈ°μ— κ°μˆ˜ν•˜κ³  μ‚¬μš©ν•  만 함

Answer

  • OperationQueueλŠ” λ“€μ–΄κ°„ μž‘μ—… μ‚¬μ΄μ˜ μ˜μ‘΄μ„± 관계(μš°μ„ μˆœμœ„, μ€€λΉ„ μƒνƒœ)에 따라 λ™μž‘ν•˜μ§€λ§Œ, GCD 큐인 DispatchQueueλŠ” FIFO둜 λ™μž‘.

  • OperationQueueλŠ” 큐 μ•ˆμ— μžˆλŠ” μ‹œμž‘λ˜μ§€ μ•Šμ€ μž‘μ—…μ„ μ·¨μ†Œν•  수 μžˆμ§€λ§Œ, GCD QueueλŠ” 큐에 λ„£λŠ” μ¦‰μ‹œ μ‹€ν–‰λœλ‹€.

    μ·¨μ†Œ κ°€λŠ₯ν•˜λ‹€λŠ” 점을 μ΄μš©ν•˜λ©΄, Rxλ₯Ό μ‚¬μš©ν•˜μ§€ μ•ŠλŠ” κ²½μš°μ— λΉ„λ™κΈ°λ‘œ 이미지λ₯Ό λ°›μ•„μ˜¬ 경우 이λ₯Ό μ·¨μ†Œν•˜λŠ”λ°μ— μ‚¬μš©λ  수 μžˆλ‹€(21.07.29 κ³°νŠ€κΉ€λ‹˜μ˜ RxSwift 4μ‹œκ°„λ§Œμ— 끝내기 κ°•μ’Œλ₯Ό λ“£λ‹€κ°€ μΆ”κ°€).

  • OperationQueueλŠ” λ³΅μž‘ν•œ 일을 μ²˜λ¦¬ν•˜λŠ” μž‘μ—…μ— μ‚¬μš©ν•˜κ³ , GCD QueueλŠ” λ‹¨μˆœν•˜κ³  λ©”λͺ¨λ¦¬μ˜ μ˜€λ²„ν—€λ“œκ°€ 적은 μž‘μ—…μ— μ‚¬μš©ν•œλ‹€.

    Operation Queue : λΉ„λ™κΈ°μ μœΌλ‘œ μ‹€ν–‰λ˜μ–΄μ•Ό ν•˜λŠ” μž‘μ—…μ„ 객체 지ν–₯적인 λ°©λ²•μœΌλ‘œ μ‚¬μš©ν•˜λŠ” 데 μ ν•©ν•˜λ‹€. KVO(key Value Observing)λ₯Ό μ‚¬μš©ν•΄ μž‘μ—… 진행 상황을 κ°μ‹œν•˜λŠ” 방법이 ν•„μš”ν•  λ•Œλ„ μ ν•©ν•˜λ‹€.(GCD KVO μ‚¬μš©λΆˆκ°€)

    GCD : μž‘μ—…μ΄ λ³΅μž‘ν•˜μ§€ μ•Šκ³  κ°„λ‹¨ν•˜κ²Œ μ²˜λ¦¬ν•˜κ±°λ‚˜ νŠΉμ • μœ ν˜•μ˜ μ‹œμŠ€ν…œ 이벀트λ₯Ό λΉ„λ™κΈ°μ μœΌλ‘œ μ²˜λ¦¬ν•  λ•Œ μ ν•©ν•˜λ‹€. 예λ₯Ό λ“€λ©΄ 타이머, ν”„λ‘œμ„ΈμŠ€ λ“±μ˜ κ΄€λ ¨ 이벀트.

Cell의 μž¬μ‚¬μš©μ€ λ‚΄λΆ€μ μœΌλ‘œ Operation Queueλ₯Ό μ‚¬μš©