์ ๊ทผ ์ ์ด
์ ๊ทผ์ง์ ์๋ public, private ๊ณผ ๊ฐ์ ํค์๋๋ก, ํด๋์ค, ๊ตฌ์กฐ์ฒด, ํ๋กํผํฐ ๋ฑ์ ์๋ํ ๋ฅผ ์ํด ์ฌ์ฉ๋ฉ๋๋ค.
์ฐ๋ฆฌ๊ฐ ํญ์ SwitUI View ๊ตฌ์กฐ์ฒด๋ฅผ ๋ง๋ค ๋, @State ํ๋กํผํฐ์ private ์ ๊ทผ ์ง์ ์๋ฅผ ์์ฑํ๋ผ๋ ์ด์ ๋, ํด๋น State ๊ฐ์ด ์์ฑ๋ View ๋ด๋ถ์์๋ง ์ฌ์ฉ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์
๋๋ค. ์ฆ ์ธ๋ถ์์ ์ ๊ทผ์กฐ์ฐจ ํ์ง ๋ชปํ๊ฒ ๋ง๋ค์ด์ ๊ฐ๋ฐ์์ ์ค์๋ก ์๊ธธ ์ ์๋ ์ค๋ฅ๋ฅผ ๋ฏธ์ฐ์ ๋ฐฉ์งํ๊ธฐ ์ํจ์ด๊ธฐ๋ ํฉ๋๋ค.
๋ํ ๋ธ๋ก๊ทธ ๊ธ ์ ๋ฐ๋ฅด๋ฉด, ์ ๊ทผ ์ ์ด๋ ๋ค์๊ณผ ๊ฐ์ ์ฅ์ ๋ค์ ๊ฐ์ง๋๋ค
- ์ ๊ทผ ์ง์ ์์ ์์ฑ์ ๊ทธ ์์ฒด๋ก communication ์ ์๋ฏธ๋ฅผ ๊ฐ์ง๋ค. ๊ฐ๋ฐ์๊ฐ private ์ผ๋ก ์ง์ ํ ์ธ์คํด์ค ๋ฉ์๋๋ ํ๋กํผํฐ๋, ์ ๋ override ํ ์ ์๊ณ ๋ด๋ถ ๋ก์ง๋ง์ ์ํ ํ๋กํผํฐ์์ ์๋ฏธํ๋ค. ๋ค๋ฅธ ๊ฐ๋ฐ์๋ค์ ์์์ ์ผ๋ก ๋ฉ์๋๋ ํ๋กํผํฐ์ ์ฌ์ฉ ๋ฒ์๋ฅผ ์ ์ ์๋ค. ์ ์คํ๊ฒ ์ ํ๋ ํ๋์ ๋จ์ด๊ฐ ์ฝ๋๋ฅผ ๋ฌธ์ํ ์ํค๋ ๊ฒ์ด๋ค.
- ์์์ ๋ณ์ (let, var) ๋ํ ๊ทธ ์์ฒด๋ก communication ์๋ฏธ๋ฅผ ๊ฐ์ง๋ค๊ณ ์๊ฐํฉ๋๋ค. ์์ฑํ๋ ๊ฐ๋ฐ์๋ ์๋ฌด ์๊ฐ ์์ด var ์ let ์ ํผ์ฉํด์ ์ธ ์ ์์ง๋ง, ๊ทธ๊ฒ์ ๋ฆฌ๋ทฐํ๋ ๋ค๋ฅธ ๊ฐ๋ฐ์๋ค์ ํด๋น ํ๋กํผํฐ๊ฐ ๋ณ๊ฒฝ์ ์ฌ์ง๊ฐ ์๋์ง ์๋์ง ๋๋จธ์ง ์ฝ๋๋ฅผ ๋ณด๋ฉด์ ์ค์ค๋ก ํ๋จํด์ผ ํฉ๋๋ค.
- swift performance ๊ฐ ํฅ์๋๋ค. Method dispatch ๋ผ๋ ํฅ๋ฏธ๋ก์ด ์ฃผ์ ์ ๊ดํด ์ด์ผ๊ธฐํ๋๋ฐ, ๊ด์ฌ ์์ผ์๋ฉด ์ฝ์ด๋ณด์ธ์
๋ค์๊ณผ ๊ฐ์ ํด๋์ค๊ฐ ์๋ค๊ณ ๊ฐ์ ํด๋ด
์๋ค.
class TestClass {
func getComputedValue(value: Int) -> Int {
let processedValue: Int = valueProcessing(value)
return computeValue(processedValue)
}
func valueProcessing(value: Int) -> Int {
//..,
}
func computeValue(value: Int) -> Int {
//...
}
}
- ์ ํด๋์ค๋ Int ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์ ํน์ ํ ์ ์ฒ๋ฆฌ๋ฅผ ํ๋ค์, ์ ์ฒ๋ฆฌํ ๋ฐ์ดํฐ์ ํน์ ์ฐ์ฐ์ ๊ฑฐ์น๊ณ ์ ์ ์๊ฒ ์ต์ข
์ ์ผ๋ก ๊ฐ์ ๋ฐํํฉ๋๋ค.
- ํด๋น ํด๋์ค๋ฅผ์์ฑํ ๊ฐ๋ฐ์์ ์๋๋ ์ ์ ๊ฐ getComputedValue ๋ง ํธ์ถํด์ ์ํ๋ ๋์์ ์ํํ๋ ๊ฒ์
๋๋ค.
- ๊ทธ๋ฌ๋ ๋ค๋ฅธ ๊ฐ๋ฐ์๋ค์valueProcessing, computeValue ๋ฉ์๋์๋ ์ ๊ทผํ ์ ์๋๋ฐ, ์ด ์์ฒด๋ก ํผ๋์ ์ค ์ ์์ต๋๋ค.
- ํด๋น ๋ฉ์๋๋ค์ ์ด๋ค ์ฉ๋์ ์ฌ์ฉํ๋์ง ์ง์ ์๊ฐํด์ผํ๊ณ , ์ต์
์ ๊ฒฝ์ฐ ํ ๋ช
ํ ๋ช
์ง์ ์ฐพ์์์ ๋ฌผ์ด๋ณผ ์๋ ์๊ฒ ์ฃ .
- ํ์ง๋ง ์ฒ์ ์์ฑํ ๋๋ถํฐ private ๋ฉ์๋๋ก ์์ฑํ๋ค๋ฉด, ์ด๋ฐ ์ํฉ์ ๋ฏธ์ฐ์ ๋ฐฉ์งํ ์ ์์ต๋๋ค.
์ ๊ทผ ์ ์ด์ ์ญํ ์ ์ด๋ ๊ฒ ์ค์ํ๊ณ , ๋ค์๊ณผ ๊ฐ์ด View ๋ด๋ถ์ ์ธ ์ฐ์ฐ์ ์ํด ํ์ํ ํ๋กํผํฐ๋ค๋ ๋๋๋ก์ด๋ฉด ์ ๊ทผ์ ์ด๋ฅผ ์ธ์ฌํ ๊ณ ๋ คํด์ฃผ์๊ธฐ ๋ฐ๋๋๋ค.
struct TestView: View {
private let day: [String] = ["์", "ํ", "์", ....]
var body: some View {
//...
}
}
์ปค๋ฐํ ๋ ๋ถํ์ํ ํ์ผ์ ์ ์ธํ๊ธฐ
์ด๋ฒ ํ๋ก์ ํธ๋ฅผ ํ๋ฉด์ ๊ฐ์ฅ ๋ง์ด ๋์จ ์ํฉ์, ์ง์ ๋ง๋ View ๋ฅผ ํ
์คํธํ๊ธฐ ์ํด ์ต์์ View์ ์ง์ ๋ง๋ ๋ทฐ๋ฅผ ์์ฑํ ๊ฒ์
๋๋ค. ๋ํ ์ฌ๋ฌ๊ฐ์ง ์ด์ ๋ก ๋ค๋ฅธ ํ์ผ๋ค์ ์์ ํ ์ ์์ต๋๋ค. ๋ค๋ฅธ ํด๋์ค๋ ๊ตฌ์กฐ์ฒด ๋ฑ์ ํ
์คํธํ๊ธฐ ์ํด ์ง์ ์ฝ๋๋ฅผ ์์ ํด๋ณผ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๋จ์ ํ
์คํธ๋ฅผ ์ํด ๋ค๋ฅธ ํ์ผ์ ์์ ํ์ผ๋ฉด, ๋ค์ ์ปค๋ฐ์์ ํด๋น ๋ณ๊ฒฝ์ฌํญ๋ค์ ๋ชจ๋ ์ ์ธํด์ผํฉ๋๋ค. ํ์ ์ถฉ๋์ ์์ธ์ด ๋ ์๋ ์๊ณ , ๋ฆฌ๋ทฐํ๋ ์ฌ๋๋ ์์ํฉ๋๋ค.
์ปค๋ฐ ์ ํญ์ ๋ณ๊ฒฝ์ฌํญ์ ์ฐฌ์ฐฌํ ์ดํด๋ณด๋ ์๊ฐ์ ๊ฐ์ง๊ณ ์ํ ํ ํ์
์ ํ๋๋ก ํฉ์๋ค.
@pis3120 @SH0123 @Chaeho-Min @YoonyoungL @jsyworks
cleanup ํธ์ข
์ด ์์
์กฐ์ด ์๋ชฌ๋ ์๋ณด ์ ๋ฆฌ