์ต๊ทผ, ์ํคํ ์ฒ ๊ด๋ จ ๊ณต๋ถ๋ฅผ ์งํํ๋ฉด์ Input/Outputํจํด์ ๊ณต๋ถํด ๋ณธ ๊ฒฝํ์ด ์์ต๋๋ค..! ์ด๋ฌํ Input/Output ํจํด์ ์ฌ์ฉํ ๋, ์ ํํ ๋๊ณ ๋ฐ๋ณต๋ ์ฝ๋๋ฅผ ์ค์ด๊ธฐ ์ํด ViewModelProtocol๋ฅผ ์ ์ธํ์ฌ ํด๋น ํ๋กํ ์ฝ์ ์ด์ฉํ๋ ๋ฐฉ์์ ๋ง์ด ์ฌ์ฉํฉ๋๋ค. ๋ณดํธ์ ์ผ๋ก, ์๋์ ๊ฐ์ด ๋ง์ด ์ ์ธํ์ฌ ์ฌ์ฉํฉ๋๋ค protocol ViewModelType { associatedtype Input associatedtype Output func transform(input: Input) -> Output } (๋ฌผ๋ก , MVVMํจํด๊ณผ RxSwift๋ฅผ ํผ์ฉํ์ฌ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ ํด๋น ํ๋กํ ์ฝ์ disposeBag์ ์ ์ธํ๊ธฐ๋ ํฉ๋๋ค) ์ด๋, Input๊ณผ Output ์์ ๋ถ์ด์๋ associ..
@discardableResult ์ด๋? discardable์ ๊ทธ๋๋ก ํด์ํ๋ฉด, ๋ฒ๋ฆด ์ ์๋(ํ๊ธฐํ ์ ์๋) ์ด๋ผ๋ ๋ป ์ ๋๋ค. ์ฆ, discardableResult๋ฅผ ํด์ํ๋ฉด '๊ฒฐ๊ณผ๊ฐ์ ๋ฒ๋ฆด ์ ์๋' ์ด๋ผ๋ ์๋ฏธ๊ฐ ๋ฉ๋๋ค. ๋ฐ๋ผ์ @discadableResult๋ ํจ์์ return๊ฐ์ ๋ฒ๋ ค์ค ๋ ์ฌ์ฉํ๊ฒ ๋ฉ๋๋ค. ๐๐ป Return๊ฐ์ด ์กด์ฌํ๋ ํจ์์ ๊ฒฐ๊ณผ๋ฅผ ์ฌ์ฉํ์ง ์์ ์ ๋ํ๋๋ warning์ ์ง์์ฃผ๋ ์ญํ ์ ํฉ๋๋ค. @discardableResult ์์ @discardableResult๋ฅผ ์ฌ์ฉํ๋ฉด, ์์๊ฐ์ด ๋ ธ๋์ warning ๋ฉ์ธ์ง๊ฐ ์ฌ๋ผ์ง๋ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค.
class๋ func๋ฑ์ ์ ์ํ ๋, ์ฐ๋ฆฌ๋ ์์ final์ด๋ผ๋ ํค์๋๋ฅผ ์ฌ์ฉํ๊ณ ๋ ํฉ๋๋ค. ๊ทธ๋ ๋ค๋ฉด ์ด๋ฐ final์ ์ญํ ์ ์ด๋ค ๊ฒ์ผ๊น์?? ์ฐ์ ๊ธฐ๋ณธ์ ์ผ๋ก, final์ ๋ง ๊ทธ๋๋ก '๋ง์ง๋ง, ์ ์ผํ'์ด๋ผ๋ ์๋ฏธ๋ฅผ ๊ฐ์ง๋๋ค. ์ฆ, class์์ final์ ๋ถ์ด๊ฒ๋๋ฉด ํด๋น class๋ '์์ํ ์ ์๋ class'๋ผ๋ ์๋ฏธ๋ฅผ ๊ฐ์ง๊ฒ ๋ฉ๋๋ค. import Foundation final class ์์๋ถ๊ฐ๋ฅํํด๋์ค{ } class final์_์์ํด๋ณผ๊น : ์์๋ถ๊ฐ๋ฅํํด๋์ค{ // [Inheritance from a final class '์์๋ถ๊ฐ๋ฅํํด๋์ค'] ๋ผ๋ error๊ฐ ๋ฐ์ํ๋ค. } ๋ง์ฐฌ๊ฐ์ง๋ก, func์ final์ ๋ถ์ด๊ฒ ๋๋ฉด 'overrideํ ์ ์๋ func'๋ผ๋ ์๋ฏธ๋ฅผ ๊ฐ์ง๊ฒ ๋ฉ๋๋ค..
ํํ ๊ฐ๋ฐ์ ํ ๋ ๋ง์ด ๋ฃ๋ ์กฐ์ธ์ด ์์ต๋๋ค. "์ข์ iOS๊ฐ๋ฐ์๊ฐ ๋๋ ค๋ฉด, ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ์ ์ ๊ฒฝ์ ๋ง์ด ์จ์ผํด~~" ์๊ณ ๋ฆฌ์ฆ ๊ณต๋ถ๋ฅผ ํ ๋๋ '๋ฉ๋ชจ๋ฆฌ ์ต์ ํ'์ ๋ง์ ๊ณต์ ๋ค์ด๊ณ ๋ ํ์ง๋ง, ์ฌ์ค App๊ฐ๋ฐ์ ์์ด์๋ ๋ฉ๋ชจ๋ฆฌ ์ต์ ํ๋ ๊ฐํ ํ์์ ์ ๋๋ค. ์ฐ๋ฆฌ๋ ๋์ฒด๋ก ์๊ณ ๋ฆฌ์ฆ์ ํ ๋ '๋์ ํ ๋น' ์ด๋ผ๋ ๋ฐฉ๋ฒ์ ํตํด์ ๋ฉ๋ชจ๋ฆฌ์์ฉ๋์ ์ค์ด๋๋ฐ, ๋ง์ฐฌ๊ฐ์ง๋ก iOS ๊ฐ๋ฐ์๋ run-time์ ๋ณ์๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ํ ๋นํ๋ lazy๋ผ๋ ๋ฌธ๋ฒ์ ์ฌ์ฉํฉ๋๋ค! ์ ํ์ ๊ณต์ ๋ฌธ์๋ฅผ ์ฐพ์๋ณด๋ฉด lazy์ ๋ํด ์ด๋ ๊ฒ ์ ์๋์ด ์์ต๋๋ค. (์ ๊ฐ ์ดํดํ ๋๋ก ์์ฒด๋ฒ์ญ ํ์์ต๋๋ค,,) lazy property๋ ์ด property๋ฅผ ์ค์ ๋ก ์ฌ์ฉํ๊ธฐ ์ ๊น์ง๋, ์ด๊ธฐ๊ฐ์ ๊ณ์ฐํ์ง ์๋ property์ ๋๋ค. ์ ์ ๋, property์..