Subject - Team-HGD/SniffMEET GitHub Wiki

PassThroughSubject VS. CurrentValueSubject

ํŠน์ • ๋ฐ์ดํ„ฐ ๋ฐฐ์—ด์„ PassThroughSubject๋ฅผ ์ด์šฉํ•ด ๊ตฌ๋…์ž์—๊ฒŒ ๊ฐ’์„ ์ „๋‹ฌํ•ด์ฃผ๊ณ  ์žˆ์—ˆ๋‹ค.

ํ•˜์ง€๋งŒ, ์ด ๋ฐฉ์‹์€ ์ดˆ๊ธฐ ๊ฐ’์ด ์กด์žฌํ•˜์ง€ ์•Š๊ณ  ์ƒˆ๋กœ์šด ๊ฐ’์„ ๊ฐฑ์‹ (๋ฐฉ์ถœ)ํ• ๋•Œ๋งŒ ๊ฐ’์„ ์ „๋‹ฌํ•ด์ฃผ๊ฒŒ ๋œ๋‹ค.

๋”ฐ๋ผ์„œ ๊ตฌ๋…๋ฐ›๋Š” ๋ถ€๋ถ„์—์„œ ํ•ด๋‹น ๋ฐฐ์—ด์„ ๋ฏธ๋ฆฌ ์„ ์–ธ ํ•ด์ฃผ๊ณ  ๊ฐ’์ด ๊ฐฑ์‹ ๋  ๊ฒฝ์šฐ ์ €์žฅํ•ด ์ด์šฉํ•ด์ค„ ์ˆ˜ ์žˆ๋‹ค.

ํ•˜์ง€๋งŒ ๊ฐฑ์‹  ์‹œ์ ์ด ์•„๋‹ˆ๋ผ ๋ฌด์กฐ๊ฑด ํ•ด๋‹น ๊ฐ’์„ ์•Œ์•„์•ผํ–ˆ๊ณ , ๊ทธ๋กœ์ธํ•ด ๊ณ„์† ๋ฐฐ์—ด์„ ์ƒˆ๋กœ ๋งŒ๋“ค์–ด ์ด์šฉํ•ด์ฃผ๊ณ  ์žˆ์—ˆ๋‹ค.

์ด ์ƒํƒœ๋กœ๋„ ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ์ฝ”๋“œ๋Š” ์•„๋‹ˆ์—ˆ์ง€๋งŒ ๋” ์ข‹์€ ๋ฐฉ๋ฒ•์„ ์•Œ๊ฒŒ๋˜์–ด ์ •๋ฆฌํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค.

CurrentValueSubject๋ฅผ ์ด์šฉํ•˜๋ฉด ๋ฐ”๋กœ ํ˜„์žฌ ๊ฐ’์„ ์ €์žฅํ•˜๊ณ  ๊ตฌ๋…์ž๋Š” ์–ธ์ œ๋“  ๊ทธ ๊ฐ’์„ ์•Œ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋”ฐ๋กœ ๋ฐฐ์—ด์„ ์„ ์–ธํ•˜์ง€ ์•Š๊ณ  ๋ฐ”๋กœ ์ ‘๊ทผํ•ด ๊ฐ’์„ ์ด์šฉํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

struct DefaultMateListPresenterOutput: MateListPresenterOutput {
    var mates = CurrentValueSubject<[Mate], Never>([])
    var profileImageData = PassthroughSubject<(Int, Data?), Never>()
}

// ์œ„์—์ฒ˜๋Ÿผ ์„ ์–ธํ•ด๋‘๊ณ  ํ•„์š”ํ•œ ์œ„์น˜์—์„œ ์•„๋ž˜์ฒ˜๋Ÿผ ๋ฐ”๋กœ ์ ‘๊ทผํ•ด ์ด์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค.
presenter?.output.mates.value