์๋ ํ์ธ์ Foma ์ ๋๋ค!
์ค๋ ์์๋ณผ ์ฃผ์ ๋ ์ ๋๋ฆญ์ด๋ผ๋ ๊ฒ์ ๋๋ค.
์ ๋๋ฆญ์ ๋ค์ด๋ณด๊ธฐ๋งํ๊ณ ์ ๋๋ก ์์๋ณด๋๊ฑด ์ด๋ฒ์ด ์ฒ์์ธ๋ฐ ์ ๋ง ์ ์ฉํ ๋ ์์ด๋ผ์ ๊ณต์ ๋๋ฆด๋ ค๊ณ ํด์!
๋ฐ๋ก ์์ํ๊ฒ ์ต๋๋ค.
Generic
๊ณต์ ๋ฌธ์์๋ ์๋์ ๊ฐ์ด ์ค๋ช ํ๋ค์.
์ค์ ๋ก Swift์ ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ ์ดํด๋ณด๋ฉด ์๋์ ๊ฐ์ด <T>๋ผ๋ ํ์ ์ ๋ณผ ์ ์์์ต๋๋ค.
์ ์ค๋ช ๋ง์ผ๋ก๋ ์ดํด๊ฐ ํ๋์ค๊ฑฐ์์. ์์ ๋ฅผ ํตํด ์ดํด๋ด ์๋ค!
๋ง์ฝ old์ new๋ผ๋ ๊ธ์๋ฅผ ๋ฉ์๋๋ฅผ ํตํด ์๋ก ๋ฐ๊พธ๊ณ ์ถ๋ค๋ฉด ์ด๋ป๊ฒ ํด์ผํ ๊น์?
๋ฐ๋ก ์๋์ฒ๋ผ ๊ตฌํํ ์ ์์๊ฑฐ์์.
๋ง์ฝ old์ new๊ฐ ์ซ์๋ผ๋ฉด ์ด๋ป๊ฒ ๊ตฌํํด์ผ ํ ๊น์?
๋ฐ๋ก ์๋์ฒ๋ผ ๊ตฌํํ ์ ์์๊ฑฐ์์.
๋ง์ฝ์ ๋ฉ์๋์์ ํ๋ผ๋ฏธํฐ์ ํ์ ์ ์์์ ์๊ณ ๋ฐ๊ฟ์ฃผ๋ฉด ์ผ๋ง๋ ํธํ ๊น์?
๋ง์น ํ๋ผ๋ฏธํฐ์ ์ซ์๊ฐ ๋ค์ด์๋ค๋ฉด ์์์ ์ซ์๋ผ๋ฆฌ ๋ฐ๊ฟ์ฃผ๊ณ ๊ธ์๊ฐ ๋ค์ด์๋ค๋ฉด ๊ธ์๋ผ๋ฆฌ ๋ฐ๊ฟ์ฃผ๊ณ
์ด๋ฐ ๊ฒ์ ๊ฐ๋ฅํ๊ฒ ํ๋ ๊ฒ์ด ๋ฐ๋ก ์ ๋๋ฆญ ์ ๋๋ค!!
์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ฉ์๋๋ค์ <T>๋ฅผ ๋ถ์ฌ์ฃผ์๊ณ ํ๋ผ๋ฏธํฐ์ ํ์ ์ T๋ก ์ ํ์๋ฉด ๋ฉ๋๋ค. (์๋ ์ฐธ์กฐํด์ฃผ์ธ์!)
ํ์ง๋ง ์ฌ๊ธฐ์ ์์ ๊ฐ์ด old = n์ผ๋ก new๋ฅผ o๋ก ๋ฐ๊ฟ์ฃผ๋ ๊ฑด ์ค๋ฅ๊ฐ ๋ ๊ฑฐ์์.
๋ฌด์จ ์ค๋ฅ๋๋ฉด old์ new๋ Int๋ก ๋์ด์์ฃ ? ํ์ง๋ง ํจ์์์ ํ๋ผ๋ฏธํฐ์ ํ์ ์ ์์ง ์ ํด์ง์ง ์์ ์ํ์ฌ์ ๊ฐ์ ํ ๋นํ ์๊ฐ ์๋ค๋ ์๋ฆฌ์์.
In- Out
์ด๊ฒ์ ํด๊ฒฐํด์ค ๋ฐฉ๋ฒ์ด ๋ฌด์์ด๋ ๋ฐ๋ก inout ํ๋ผ๋ฏธํฐ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๋๋ค.
inout ํ๋ผ๋ฏธํฐ๋?
๊ณต์ ๋ฌธ์์๋ ์๋์ ๊ฐ์ด ์ค๋ช
๋์ด ์์ด์.
์ด ๋ง์ด ๋ฌด์์ด๋? ์๋ ๋ฉ์๋์ ์๋ ํ๋ผ๋ฏธํฐ๋ ์์๋ก ๋์ด์์ด์ ๊ฐ์ ๋ณ๊ฒฝํ ์๊ฐ ์์์์?
ํ์ง๋ง ์ด๊ฒ์ ์ฌ์ฉํ๋ฉด ํ๋ผ๋ฏธํฐ๊ฐ๋ ๋ฐ๊ฟ ์ ์๋ค๋ ๊ฒ์ด์์!
์ฌ์ฉ ๋ฐฉ๋ฒ์ ๊ฐ๋จํด์. ๋ฉ์๋์ ํ์ ์์ inout์ ๋ถ์ฌ์ฃผ๋ฉด ๋ฉ๋๋ค.
๋ ์ฃผ์ํ์ค ์ ์ inout์ผ๋ก ๋ฐ๋ ๋ณ์์ ๊ฐ์ ์ฌ์ฉํ๊ณ ์ถ๋ค๋ฉด ์์ &๋ฅผ ๋ถ์ฌ์ฃผ์ ์ผ ํฉ๋๋ค!
Generic & In - Out
์ ์ด์ ์ ๋๋ฆญ๊ณผ in - out์ ํฉ์ณ์ ์ด๋ค ํ์ ์ด๋ ๋ค์ด์ค๋ฉด ๋ฐ๊พธ๋ ๋ฉ์๋๋ฅผ ๋ง๋ค์ด๋ณด๋ฉด
์๋์ฒ๋ผ ์ด๋ค ํ์ ์ด ๋ค์ด์ค๋ ํ ๋ฉ์๋๋ก ๊ฐ์ ๋ฐ๊ฟ์ค ์ ์๋ ๋ชจ์ต์ ๋ณผ ์ ์์ต๋๋ค!!
๋ณ์์ ๊ฐ๋ ํ๋ฒ ํ์ธํด๋ณผ๊น์? ์ถ๋ ฅ๋ ๋ด์ฉ์ ๋ณด๋ฉด ๊ฐ ๊ฐ ๊ฐ์ด ์๋ก ๋ฐ๋์ด ์๋ ๋ชจ์ต์ ๋ณผ ์ ์์ต๋๋ค!!
์ฌ๊ธฐ์ ํ๊ฐ์ง ๋ ์์๋ณผ๊ฒ ์๋๋ฐ์.
๋ง์ฝ ํ๋ผ๋ฏธํฐ์ ๊ฐ์ ๋น๊ตํ๊ณ ์ถ๋ค๋ฉด ์ด๋ป๊ฒ ํด์ผํ ๊น์?
์ ๋น์ฐํ "=="๋ฅผ ์ฌ์ฉํด์ ํ๋ผ๋ฏธํฐ๋ผ๋ฆฌ ๋น๊ตํ๋ฉด ๋์ง ์์๊น? ํ๊ณ ๋ง๋ค์๋๋ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ด์....
์ค๋ฅ๋ฅผ ์ดํด๋ณด๋ T๋ผ๋ฆฌ๋ ๋น๊ตํ ์ ์๋ค๊ณ ๋งํ๋ค์... ์ด๊ฒ ๋ฌด์จ ๋ง์ผ๊น์?
์ด๊ฒ์ T๋ก ๋ค์ด์จ ํ์ ์ด ๋น๊ตํ ์ ์๋ ํ์ ์ผ์๋ ์๋ค๋ ๋ง์ด์์!
๊ทธ๋ ๋ค๋ฉด ๋น๊ตํ๊ธฐ ์ํด์ ์ด๋ป๊ฒ ํด์ผํ ๊น?
Equatable
๋ฐ๋ก Equatable์ด๋ผ๋ ํ๋กํ ์ฝ์ ์ฌ์ฉํ๋๊ฒ์ ๋๋ค.
๊ณต์ ๋ฌธ์์ ๊ฐ์ ๋น๊ตํ ์ ์๋ ํ์ ์ด๋ผ๊ณ ๋์ด์์ต๋๋ค.
์ด Equatable์ ์ค์ํ๋ ํ์ ์ด๋ผ๋ฉด ๊ฐ์ ๋น๊ตํ ์๊ฐ ์๋๊ฑฐ๊ฒ ์ฃ ?
์ค์ ๋ก String,Int,Array ๋ฑ ์ฐ๋ฆฌ๊ฐ ์๊ณ ์๋ ํ์ ๋ค์ Equatable์ ์ค์ํ๊ณ ์๋ต๋๋ค.
๊ทธ๋ฌ๋ฉด ์ ๋๋ฆญ๊ณผ ์ฌ์ฉ๋ฒ์ ๋ฐ๋ก ํ์ ๋ค์ Equatable์ ์ค์ํ๊ณ ์๋ค๊ณ ํด์ฃผ๋ ๊ฒ์ ๋๋ค.
์๋์ฒ๋ผ ๋ง์ด์ฃ ! ์ด๋ ๊ฒ ํ๋ฉด ์ค๋ฅ๊ฐ ์ฌ๋ผ์ง๋ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค!!
์ค๋์ ์ ๋๋ฆญ , ์ธ์์, ์ด์ฟผํฐ๋ธ์ ๋ํด์ ๊ฐ๋จํ๊ฒ ์์๋ณด์์ต๋๋ค.
์ ๋ ๊ทธ๋์ Apple๋ฌธ์์์ ๋ฉ์๋๋ฅผ ์ฐพ์๋ณผ ๋ <T>๊ฐ ์์ผ๋ฉด ๋ฌด์จ ํ์ ์ธ๋ฐ T๋ก ๋์ด์๋๊ฒ ์๋๋ณด๋ค ํ๋๋ฐ
์ด๋ฒ ๊ณต๋ถ๋ฅผ ํตํด์ T๋ Type์ ์ฝ์๋ก ์ด๋ค ํ์ ์ด๋ผ๋ ๊ฒ์ ์ถ์์ ์ผ๋ก ์๋ฏธํ๋ค๋ ๊ฒ์ ์๊ฒ ๋์์ด์.
์ด์ ๊ณต์ ๋ฌธ์์์ T๋ฅผ ๋ณด์๋ ์น๊ทผํ๊ฒ ๋ณผ ์ ์์๊ฑฐ ๊ฐ์ต๋๋ค!
'๐ iOS > iOS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[iOS ๋ฉด์ ์ง๋ฌธ] GCD๋? - ๊ฐ๋ (0) | 2020.12.18 |
---|---|
[iOS/UI] UITableView๋? (0) | 2020.12.16 |
[iOS] ํด๋์ค์ด๋ฆ ํ๋ฒ์ ๋ชจ๋ ๋ฐ๊พธ๊ธฐ (Refactor Class name) (0) | 2020.12.14 |
[iOS ๋ฉด์ ์ง๋ฌธ] Cocoa Touch Framework๋? (0) | 2020.12.08 |
[iOS] Background์์ Timer์๋ํ๊ฒ ํ๊ธฐ(Allow timer to work in the background) Swift (0) | 2020.12.07 |
๋๊ธ