24b0d121e09c28a8699fe8b115ef046c69f02e4b


2์ดˆ๊ฐ„ ์Šคํ„ด์„ ์ด๋ ‡๊ฒŒ ๋งŒ๋“ค์—ˆ๋‹ค ์น˜์ž


1. ์ฒซ๋ฒˆ์งธ ์Šคํ„ด์— ๊ฑธ๋ฆฌ๋ฉฐ ์Šคํ„ด์ค‘์ด true๊ฐ€ ๋œ๋‹ค

2. 1์ดˆ๋’ค์— ๋‘๋ฒˆ์งธ ์Šคํ„ด์ด ๊ฑธ๋ฆฐ๋‹ค

3. ์ฒซ๋ฒˆ์งธ ์Šคํ„ด์ด 1์ดˆ๋’ค์— ํ’€๋ฆฌ๋ฉฐ ์Šคํ„ด์ค‘์„ false ๋กœ ๋งŒ๋“ค์–ด ๋ฒ„๋ฆผ

4. ๊ฒฐ๊ณผ 2๋ฒˆ์งธ ๊ฑธ์–ด๋†“์€ ์Šคํ„ด์ด 2์ดˆ๋ฅผ ์œ ์ง€ ๋ชปํ•˜๊ณ  1์ดˆ๋งŒ์— ํ’€๋ฆฐ๋‹ค(๋ฒ„๊ทธ)



24b0d121e09c28a8699fe8b115ef046f5f4b9d9c

์ด๋ ‡๊ฒŒ ๋งŒ๋“ค๋ฉด ์ด์ œ


1. ์ฒซ๋ฒˆ์จฐ ์Šคํ„ด: ์นด์šดํŠธ 1

2. 1์ดˆ๋’ค์— ๋‘๋ฒˆ์จฐ ์Šคํ„ด์ด ๊ฑธ๋ฆฌ๋ฉด ์นด์šดํŠธ๊ฐ€ 2๋กœ ์˜ฌ๋ผ๊ฐ€๊ณ 

3. 1์ดˆ๋’ค์— ์ฒซ๋ฒˆ์งธ ์Šคํ„ด์ด ํ’€๋ ค๋„ ์•„์ง ์นด์šดํŠธ๊ฐ€ 1 ์ด๊ธฐ ๋•Œ๋ฌธ์— ์Šคํ„ด์ค‘์€ true ์ด๋‹ค (๋ฒ„๊ทธํ•ด๊ฒฐ!)


๊ทผ๋ฐ ์—ฌ๊ธฐ์„œ ์Šคํ„ด์„ ๋””์ŠคํŽ  ํ•œ๋‹ค๊ณ  ์น˜์žย 



24b0d121e09c28a8699fe8b115ef046f564c9a98

๋””์ŠคํŽ ๋กœ ์Šคํ„ด์„ ํ•ด์ œํ•œ๊ฑฐ ๊นŒ์ง„ ์ข‹์€๋ฐย 


1. ๋””์ŠคํŽ ๋กœ ์Šคํ„ด ์นด์šดํŠธ๊ฐ€ 0์ด๋œ๋‹ค

2. ๋””์ŠคํŽ  ์ด์ „์— ๊ฑธ๋ ค์žˆ๋˜ ์Šคํ„ด๋“ค์ด ๋”œ๋ ˆ์ด ์ดํ›„ ์นด์šดํŠธ๋ฅผ ๋งˆ์ด๋„ˆ์Šค๋กœ ๋งŒ๋“ค์–ด ๋ฒ„๋ฆฐ๋‹ค

3. ๊ทธ๋Ÿฌ๋ฉด ์ดํ›„ ์Šคํ„ด์ด ๊ฑธ๋ ค๋„ 0๋ณด๋‹ค ์ž‘๊ธฐ ๋•Œ๋ฌธ์— ์Šคํ„ด์ด ์•ˆ๊ฑธ๋ฆฌ๋Š” ๋ฒ„๊ทธ๊ฐ€ ์ƒ๊ธด๋‹ค





24b0d121e09c28a8699fe8b115ef046eca49cff2


๊ทธ๋Ÿผ ์ด๋ ‡๊ฒŒ ๋งˆ์ด๋„ˆ์Šค๋กœ ๋‚ด๋ ค๊ฐ€๋Š”๊ฑธ ๋ง‰์•˜์œผ๋‹ˆ ์•ˆ์‹ฌ! ์ด๋ผ๊ณ  ์ฐฉ๊ฐํ•˜์ง€๋งŒ

์—ฌ๊ธฐ์„œ ๋˜๋‹ค๋ฅธ ๋ฒ„๊ทธ๊ฐ€ ์ƒ๊ฒจ๋‚œ๋‹ค


1. ์Šคํ„ด์„ ๋””์ŠคํŽ ๋กœ ํ•ด์ œ ํ–ˆ๋Š”๋ฐ

2. ๊ทธ๋‹ค์Œ ๋ˆ„๊ตฐ๊ฐ€ ์Šคํ„ด์„ ๊ฑธ์—ˆ๊ณ 

3. ํ•ด์ œ ์ „์— ๋”œ๋ ˆ์ด ๋˜์–ด์žˆ๋˜ ์Šคํ„ด์ด ์ƒˆ๋กœ ๊ฑธ๋ฆฐ ์Šคํ„ด์„ ํ’€์–ด๋ฒ„๋ฆผ (๋˜ ๋ฒ„๊ทธ!!!)



24b0d121e09c28a8699fe8b115ef046f5c44909dac


๋…ธ- ๋‹ต


์—ฌ๊ธฐ์„œ ์šฐ๋ฆฌ์˜ ๊ตฌ์›ํˆฌ์ˆ˜ R3์˜ย Disposable.Create ์™€ย CompositeDisposable ์ด ๋“ฑ์žฅํ•œ๋‹ค

(R3๊ฐ€ ๋ญ”์ง€๋Š” ๊ฐœ๋…๊ธ€์— ์˜ฌ๋ผ๊ฐ€ ์žˆ์œผ๋‹ˆ ์ฐธ๊ณ )



24b0d121e09c28a8699fe8b115ef046b65679232


1. Disposable.Create() ๋กœ ์ƒ์„ฑ๋œ ํด๋ž˜์Šค๋Š” Diospose() ๊ฐ€ ํ˜ธ์ถœ๋˜๋ฉด onDisposed๋ฅผ ์‹คํ–‰ํ•œ๋‹ค


2. using var ๋กœ ์„ ์–ธ๋œ ํด๋ž˜์Šค๋Š” ๊ทธ ๋ฉ”์„œ๋“œ๊ฐ€ ๋๋‚ ๋•Œ ์ž๋™์œผ๋กœ Diospose๊ฐ€ ํ˜ธ์ถœ๋œ๋‹ค (์‹œ์ƒต์˜ using ๋ฌธ๋ฒ•)


3. CompositeDisposable.Clear(); ๋Š” ์ง€๊ธˆ๊นŒ์ง€ ๋ชจ์•„๋†“์€ ๋ชจ๋“  ํด๋ž˜์Šค๋“ค์„ Diospose() ํ•œ๋‹ค (๊ฒฐ๊ณผ ์นด์šดํŠธ๊ฐ€ 0์ด๋˜๋ฉฐ ์Šคํ„ด ํ•ด์ œ)


4. Disposable.Create() ๋กœ ์ƒ์„ฑ๋œ ํด๋ž˜์Šค๋Š” ํ•œ๋ฒˆ onDisposed๊ฐ€ ๋ฐœ๋™๋˜๋ฉด

์ดํ›„์— ๋‹ค์‹œ Dispose ๋˜๋„ onDisposed๊ฐ€ ๋ฐœ๋™๋˜์ง€ ์•Š๋Š”๋‹ค (๋ฉฑ๋“ฑ)

๋•Œ๋ฌธ์— CompositeDisposable.Clear()์—์„œ ํ•œ๋ฒˆ ํ’€๋ ค๋ฒ„๋ฆฐ ์Šคํ„ด์€ ์ดํ›„์— ๋”œ๋ ˆ์ด๊ฐ€ ์ข…๋ฃŒ ๋˜๋ฉด์„œ Diospose()๊ฐ€ ๋‹ค์‹œ ํ˜ธ์ถœ๋˜๋„ ์นด์šดํŠธ๋ฅผ ๋‚ด๋ฆฌ์ง€ ์•Š๋Š”๋‹คย 


๊ฒฐ๊ณผ ์ค‘์ฒฉ์Šคํ„ด, ์Šคํ„ด ํ•ด์ œ, ์Šคํ„ด ํ•ด์ œ์ดํ›„ ์Šคํ„ด ๋‹ค์‹œ ๊ฑธ๊ธฐ ๋“ฑ ์˜จ๊ฐ– ๋‚œ์žฅํŒ์—๋„ ๋ฒ„๊ทธ๊ฐ€ ๋‚˜์ง€ ์•Š๊ฒŒ๋จ


๋ณด๋„ˆ์Šค1: ์นด์šดํŠธ๋ฅผย ReactiveProperty<int> ๋กœ ๋งŒ๋“ค๋ฉด ์ดํŽ™ํŠธ๋‚˜ ์œ ์•„์ด๋„ ์ž๋™ ๋ฐ˜์‘ํ•จ


24b0d121e09c28a8699fe8b115ef046b646e9733

๋ณด๋„ˆ์Šค2: ํ˜„์žฌ ์นด์šดํŠธ๊ฐ€ ๋ช‡ ์ธ์ง€๋ฅผ ํ™œ์šฉํ•˜๋ฉด ๋… ์ฒ˜๋Ÿผ ๋งŽ์ด ๊ฑธ๋ฆด์ˆ˜๋ก ์ค‘์ฒฉํšจ๊ณผ๊ฐ€ ์žˆ๋Š” ๋””๋ฒ„ํ”„ ๋กœ ์“ธ ์ˆ˜๋„ ์žˆ์Œ