๊ณต๋ถ€ ์—ฐ์Šต์žฅ :-)

NotificationQueue ํด๋ž˜์Šค

|

๋…ธํ‹ฐํ”ผ์ผ€์ด์…˜์ด ์‹œ๋ฆฌ์–ผํ์—์„œ ์ฒ˜๋ฆฌ๊ฐ€๋˜๋Š”๊ฑด๊ฐ€!?๋ผ๋Š” ๊ถ๊ธˆ์ฆ์— ์ฐพ์•„๋ณธ ํ›„ ๊ฐ„๋‹จํ•œ ์ •๋ฆฌ

class NotificationQueue : NSObject

  • Notification๋“ค์€ NotificationQueue์— ์œ„์น˜ํ•จ (FIFO)
  • NotificationCenter์— ์˜ํ•ด ํฌ์ŠคํŒ…๋˜๋Š” notification๋“ค์€ ๋™๊ธฐ์ ์œผ๋กœ ์ „๋‹ฌ๋œ๋‹ค.
  • ์ฆ‰, ์•ž์„ (ํ˜„์žฌ์˜)๋…ธํ‹ฐ๊ฐ€ run loop์„ ๋น ์ ธ๋‚˜๊ฐ€๊ฑฐ๋‚˜ run loop์ด ํ•œ๊ฐ€ํ•ด์ง€๊ธฐ์ „๊นŒ์ง€ ๋”œ๋ ˆ์ด ๋  ์ˆ˜ ์žˆ๋‹ค.
  • ์ค‘๋ณต๋˜๋Š” ๋…ธํ‹ฐ๋“ค์€ ์—ฌ๋Ÿฌ ๋…ธํ‹ฐ๊ฐ€ ํฌ์ŠคํŒ…๋˜๋”๋ผ๋„ ํ•ฉ์ณ์งˆ ์ˆ˜ ์žˆ๋‹ค. (ํ•˜๋‚˜์˜ ๋…ธํ‹ฐ๋งŒ ๋ณด๋‚ด๊ธฐ ์œ„ํ•ด)
  • ๋ชจ๋“  ์Šค๋ ˆ๋“œ๋Š” ๊ธฐ๋ณธ ๋…ธํ‹ฐํ”ผ์ผ€์ด์…˜ ํ๋ฅผ ๊ฐ€์ง€๊ณ ์žˆ์œผ๋ฉฐ, ๊ทธ๊ฒƒ์€ default notification center(NotificationCenter.default)์™€ ์—ฐ๊ด€๋˜์–ด์žˆ๋‹ค.
  • ์ปค์Šคํ…€ ๋…ธํ‹ฐํ”ผ์ผ€์ด์…˜ ํ๋ฅผ ๋งŒ๋“ค์–ด์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์„ผํ„ฐ์™€ ์Šค๋ ˆ๋“œ๋งˆ๋‹ค ์—ฌ๋Ÿฌ ํ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค.
  • ๋…ธํ‹ฐํ”ผ์ผ€์ด์…˜์ด ๋™๊ธฐ์ ์œผ๋กœ ๋™์ž‘ํ•œ๋‹ค๋Š”๊ฒƒ์€ ์•ฑ์ด ๋ฐ”์œ ์ƒํƒœ์ด๊ฑฐ๋‚˜ ์—ฌ๋Ÿฌ ๋…ธํ‹ฐ๋‹ค ๋ฐ˜๋ณต๋ ๋•Œ ์•ฑ์„ ๋Š๋ฆฌ๊ฒŒ ๋งŒ๋“ค๊ฑฐ๋‚˜ ๋ฉˆ์ถ”๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ์˜ ์†Œ์ง€๊ฐ€ ์žˆ๋‹ค.
  • ์ด๋•Œ NotificationQueue๋งŒ๋“ค์–ด์„œ ์‚ฌ์šฉํ•˜๋ฉด ๋น„๋™๊ธฐ์ ์œผ๋กœ ๋™์ž‘์‹œํ‚ฌ ์ˆ˜ ์žˆ๊ณ , ์ด๋Ÿฐ ๋ฌธ์ œ๋ฅผ ์™„ํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์˜ˆ์‹œ
    let notification = Notification(name: Notification.Name("MyValueChanged"))
    NotificationQueue.default.enqueue(notification, postingStyle: .whenIdle, coalesceMask: .none, forModes: nil)
    

์ถœ์ฒ˜

Comments