๐ฑ iOS/-- Swift 5
-
Property Property๋? Class, Struct, Enum์ ์์๋ ์์๋ ๋ณ์๋ฅผ ๋งํ๋ค. ํ๋กํผํฐ์ ์ข ๋ฅ๋ ํฌ๊ฒ 3๊ฐ์ง๋ก ๋ถ๋ฅ ํ ์ ์๋ค. ์ ์ฅ ํ๋กํผํฐ(Stored Property) ์ฐ์ฐ ํ๋กํผํฐ(Computed Property) ํ์ ํ๋กํผํฐ(Type Property) ์ ์ฅ ํ๋กํผํฐ(Stored Property) ์ผ๋ฐ์ ์ผ๋ก ์ฐ๋ let , var ๋ก ์ ์ธํ๋ ์ธ์คํด์ค ๋ณ์, ํน์ ์์๋ฅผ ๋งํ๋ค. ๊ฐ์ ์ ์ฅํ ๋ ์ฌ์ฉ ๊ตฌ์กฐ์ฒด, ํด๋์ค์์๋ง ์ฌ์ฉ๊ฐ๋ฅ ์ง์ฐ ์ ์ฅ ํ๋กํผํฐ(Lazy stored property) ํธ์ถ ๋๊ธฐ ์ ์๋ ๊ฐ์ ์ด๊ธฐํ ํ์ง ์๋๋ค. ๋ฐ๋ผ์ ๋ถํ์ํ ์ฑ๋ฅ์ ํ, ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ์ ์ค ์ผ ์ ์๋ค. ํด๋์ค, ๊ตฌ์กฐ์ฒด์๋ง ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค. ์์์๋ ์ฌ์ฉํ ์ ์๋ค. → ์์๋ ์ธ์คํด..
(Swift) ์ ์ฅ ํ๋กํผํฐ , ์ฐ์ฐ ํ๋กํผํฐ , ํ๋กํผํฐ ์ต์ ๋ฒ (propery observer)Property Property๋? Class, Struct, Enum์ ์์๋ ์์๋ ๋ณ์๋ฅผ ๋งํ๋ค. ํ๋กํผํฐ์ ์ข ๋ฅ๋ ํฌ๊ฒ 3๊ฐ์ง๋ก ๋ถ๋ฅ ํ ์ ์๋ค. ์ ์ฅ ํ๋กํผํฐ(Stored Property) ์ฐ์ฐ ํ๋กํผํฐ(Computed Property) ํ์ ํ๋กํผํฐ(Type Property) ์ ์ฅ ํ๋กํผํฐ(Stored Property) ์ผ๋ฐ์ ์ผ๋ก ์ฐ๋ let , var ๋ก ์ ์ธํ๋ ์ธ์คํด์ค ๋ณ์, ํน์ ์์๋ฅผ ๋งํ๋ค. ๊ฐ์ ์ ์ฅํ ๋ ์ฌ์ฉ ๊ตฌ์กฐ์ฒด, ํด๋์ค์์๋ง ์ฌ์ฉ๊ฐ๋ฅ ์ง์ฐ ์ ์ฅ ํ๋กํผํฐ(Lazy stored property) ํธ์ถ ๋๊ธฐ ์ ์๋ ๊ฐ์ ์ด๊ธฐํ ํ์ง ์๋๋ค. ๋ฐ๋ผ์ ๋ถํ์ํ ์ฑ๋ฅ์ ํ, ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ์ ์ค ์ผ ์ ์๋ค. ํด๋์ค, ๊ตฌ์กฐ์ฒด์๋ง ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค. ์์์๋ ์ฌ์ฉํ ์ ์๋ค. → ์์๋ ์ธ์คํด..
2022.03.16 -
์ค์ํํธ์์ ํจ์์ ์ข ๋ฅ ์ค์ํํธ์์ ํจ์๋ ํฌ๊ฒ ๋๊ฐ์ง๋ก ๋๋๋ค. ์ธ์คํด์ค ๋ฉ์๋์ ํ์ ๋ฉ์๋์ด๋ค. ๊ทธ๋ฆฌ๊ณ ํ์ ๋ฉ์๋๋ ๋ค์ static method, class method๋ก ๋๋๋ค. Instance Method Type Method Static Method Class Method class ExampleClass{ func instanceMethod(){} // ์ธ์คํด์ค ๋ฉ์๋ class func classMethod(){} // ํด๋์ค ๋ฉ์๋ (ํ์ ๋ฉ์๋) static func staticMethod(){} // ์คํํฑ ๋ฉ์๋ (ํ์ ๋ฉ์๋) } ๋ชจ์์ ๋ณด๋ ๋ณ๋ค๋ฅธ ํค์๋ ์์ด ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉํ๋๊ฒ์ ์ธ์คํด์ค ๋ฉ์๋๋ผ๊ณ ํ๋ค. ๊ทธ๋ฆฌ๊ณ class ๋๋ static ํค์๋๋ฅผ ํตํด ์ ์๋ ํจ์๋ฅผ ..
(Swift) ์ธ์คํด์ค ๋ฉ์๋ , ํ์ ๋ฉ์๋ (instance method, type method)์ค์ํํธ์์ ํจ์์ ์ข ๋ฅ ์ค์ํํธ์์ ํจ์๋ ํฌ๊ฒ ๋๊ฐ์ง๋ก ๋๋๋ค. ์ธ์คํด์ค ๋ฉ์๋์ ํ์ ๋ฉ์๋์ด๋ค. ๊ทธ๋ฆฌ๊ณ ํ์ ๋ฉ์๋๋ ๋ค์ static method, class method๋ก ๋๋๋ค. Instance Method Type Method Static Method Class Method class ExampleClass{ func instanceMethod(){} // ์ธ์คํด์ค ๋ฉ์๋ class func classMethod(){} // ํด๋์ค ๋ฉ์๋ (ํ์ ๋ฉ์๋) static func staticMethod(){} // ์คํํฑ ๋ฉ์๋ (ํ์ ๋ฉ์๋) } ๋ชจ์์ ๋ณด๋ ๋ณ๋ค๋ฅธ ํค์๋ ์์ด ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉํ๋๊ฒ์ ์ธ์คํด์ค ๋ฉ์๋๋ผ๊ณ ํ๋ค. ๊ทธ๋ฆฌ๊ณ class ๋๋ static ํค์๋๋ฅผ ํตํด ์ ์๋ ํจ์๋ฅผ ..
2022.03.08 -
์ ๊ทผ ์ ์ด์๋? ์ฝ๋๋ผ๋ฆฌ ์ํธ์์ฉ์ ํ ๋ ์์คํ์ผ ๊ฐ, ๋ชจ๋ ๊ฐ ์ ๊ทผ์ ์ ํํ ์ ์๋ ๊ธฐ๋ฅ์ด๋ค. ์ด๋ฅผ ํตํด ํน์ ์ฝ๋์ ์ธ๋ถ์ ์ธ ๊ตฌํ์ ์จ๊ธฐ๊ณ , ํ์ฉ๋ ๊ธฐ๋ฅ๋ง ์ฌ์ฉํ๋ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํ ์ ์๋ค. ๐ฏ ๋ชจ๋: ๋ฐฐํฌํ ์ฝ๋์ ๋ฌถ์ ๋จ์ (ex: ํ๋์ ํ๋ ์์ํฌ, ๋ผ์ด๋ธ๋ฌ๋ฆฌ, ์ ํ๋ฆฌ์ผ์ด์ ) , ์ฝ๊ฒ๋งํ๋ฉด `import` ๋ฅผ ํตํด ๋ถ๋ฌ์ค๋๊ฒ๋ค ๐ฏ ์์คํ์ผ: Swift ์ฝ๋ ํ์ผ ํ๊ฐ๋ฅผ ์๋ฏธํ๋ค. ๋ณดํต ํ์ผ ํ๋์ ํ๋์ ํ์ ๋ง ์ ์ํ์ง๋ง, ์ฌ๋ฌ๊ฐ๋ฅผ ์ ์ํ๋ ๊ฒฝ์ฐ๋ ์๋ค. ๊ทธ๋ผ ์ ํ์ผ ๊ฐ, ๋ชจ๋ ๊ฐ ์ ๊ทผ์ ์ ํํ๋? OOP ํจ๋ฌ๋ค์์ “์๋ํ"์ ๊ด๋ จ์ด ๊น๋ค. ์ธ๋ถ์์ ๋ณด๊ฑฐ๋ ์ ๊ทผํ๋ฉด ์๋๋ ์ฝ๋๋ฅผ ๋ง๊ธฐ ์ํจ์ด๋ค. ๐ฏ ์๋ํ: ๊ฐ์ฒด ์ธ๋ถ์์ ๊ฐ์ฒด ๋ด์ ์๋ฃ๋ก์ ์ ๊ทผ์ ์ ํํ๊ณ , ๋ฐ์ดํฐ๋ฅผ ์์ ํ๊ฑฐ๋ ์กฐ์ํ..
(Swift) ์ ๊ทผ ์ ์ด์ (Access Control, Access Level)์ ๊ทผ ์ ์ด์๋? ์ฝ๋๋ผ๋ฆฌ ์ํธ์์ฉ์ ํ ๋ ์์คํ์ผ ๊ฐ, ๋ชจ๋ ๊ฐ ์ ๊ทผ์ ์ ํํ ์ ์๋ ๊ธฐ๋ฅ์ด๋ค. ์ด๋ฅผ ํตํด ํน์ ์ฝ๋์ ์ธ๋ถ์ ์ธ ๊ตฌํ์ ์จ๊ธฐ๊ณ , ํ์ฉ๋ ๊ธฐ๋ฅ๋ง ์ฌ์ฉํ๋ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํ ์ ์๋ค. ๐ฏ ๋ชจ๋: ๋ฐฐํฌํ ์ฝ๋์ ๋ฌถ์ ๋จ์ (ex: ํ๋์ ํ๋ ์์ํฌ, ๋ผ์ด๋ธ๋ฌ๋ฆฌ, ์ ํ๋ฆฌ์ผ์ด์ ) , ์ฝ๊ฒ๋งํ๋ฉด `import` ๋ฅผ ํตํด ๋ถ๋ฌ์ค๋๊ฒ๋ค ๐ฏ ์์คํ์ผ: Swift ์ฝ๋ ํ์ผ ํ๊ฐ๋ฅผ ์๋ฏธํ๋ค. ๋ณดํต ํ์ผ ํ๋์ ํ๋์ ํ์ ๋ง ์ ์ํ์ง๋ง, ์ฌ๋ฌ๊ฐ๋ฅผ ์ ์ํ๋ ๊ฒฝ์ฐ๋ ์๋ค. ๊ทธ๋ผ ์ ํ์ผ ๊ฐ, ๋ชจ๋ ๊ฐ ์ ๊ทผ์ ์ ํํ๋? OOP ํจ๋ฌ๋ค์์ “์๋ํ"์ ๊ด๋ จ์ด ๊น๋ค. ์ธ๋ถ์์ ๋ณด๊ฑฐ๋ ์ ๊ทผํ๋ฉด ์๋๋ ์ฝ๋๋ฅผ ๋ง๊ธฐ ์ํจ์ด๋ค. ๐ฏ ์๋ํ: ๊ฐ์ฒด ์ธ๋ถ์์ ๊ฐ์ฒด ๋ด์ ์๋ฃ๋ก์ ์ ๊ทผ์ ์ ํํ๊ณ , ๋ฐ์ดํฐ๋ฅผ ์์ ํ๊ฑฐ๋ ์กฐ์ํ..
2022.03.05 -
๊ตฌ์กฐ์ฒด ํด๋์ค ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ์ฉ๋์ ๋ง๊ฒ ๋ฌถ์ด ํํํ๊ณ ์ ํ ๋ ์ ์ฉํ๋ค. ํ๋์ ์ฌ์ฉ์ ์ ์ ๋ฐ์ดํฐ ํ์ ์ ๋ง๋ค์ด์ฃผ๋๊ฒ์ด๋ค. #Class, Struct ๊ณตํต์ ๊ฐ์ ์ ์ฅํ ํ๋กํผํฐ๋ฅผ ์ ์ธํ ์ ์๋ค. ๋ฉ์๋๋ฅผ ์ ์ธํ ์ ์๋ค. ๋ด๋ถ ํ๋กํผํฐ์ .๋ฅผ ์ฌ์ฉํ์ฌ ์ ๊ทผํ ์ ์๋ค. ์์ฑ์(init)๋ฅผ ์ฌ์ฉํด ์ด๊ธฐ ์ํ๋ฅผ ์ค์ ํ ์ ์๋ค. extension์ ์ฌ์ฉํ์ฌ ๊ธฐ๋ฅ์ ํ์ฅํ ์ ์๋ค. Protocol์ ์ฑํํ์ฌ ๊ธฐ๋ฅ์ ์ค์ ํ ์ ์๋ค. #Class์ ํน์ง Reference Type ARC๋ก ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๋ฅผ ํ๋ค. ๊ฐ์ ํด๋์ค ์ธ์คํด์ค๋ฅผ ๋ง๋ค๊ณ ๊ฐ์ ๋ณ๊ฒฝํ๋ฉด ๋ชจ๋ ๋ณ์์ ์ํฅ์์ค๋ค. (์ฐธ์กฐํ์ ์ด๋๊น;) ์์์ด ๊ฐ๋ฅํ๋ค. ํ์ ์บ์คํ ์ ํตํด ๋ฐํ์์์ ํด๋์ค ์ธ์คํด์ค์ ํ์ ์ ํ์ธํ ์ ์๋ค. ์ธ์คํด์ค๊ฐ ์๋ฉธ..
(Swift) Class ์ Struct ์ ์ฐจ์ด , ์ฉ๋์ ์ ํ ๋ฐฉ๋ฒ๊ตฌ์กฐ์ฒด ํด๋์ค ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ์ฉ๋์ ๋ง๊ฒ ๋ฌถ์ด ํํํ๊ณ ์ ํ ๋ ์ ์ฉํ๋ค. ํ๋์ ์ฌ์ฉ์ ์ ์ ๋ฐ์ดํฐ ํ์ ์ ๋ง๋ค์ด์ฃผ๋๊ฒ์ด๋ค. #Class, Struct ๊ณตํต์ ๊ฐ์ ์ ์ฅํ ํ๋กํผํฐ๋ฅผ ์ ์ธํ ์ ์๋ค. ๋ฉ์๋๋ฅผ ์ ์ธํ ์ ์๋ค. ๋ด๋ถ ํ๋กํผํฐ์ .๋ฅผ ์ฌ์ฉํ์ฌ ์ ๊ทผํ ์ ์๋ค. ์์ฑ์(init)๋ฅผ ์ฌ์ฉํด ์ด๊ธฐ ์ํ๋ฅผ ์ค์ ํ ์ ์๋ค. extension์ ์ฌ์ฉํ์ฌ ๊ธฐ๋ฅ์ ํ์ฅํ ์ ์๋ค. Protocol์ ์ฑํํ์ฌ ๊ธฐ๋ฅ์ ์ค์ ํ ์ ์๋ค. #Class์ ํน์ง Reference Type ARC๋ก ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๋ฅผ ํ๋ค. ๊ฐ์ ํด๋์ค ์ธ์คํด์ค๋ฅผ ๋ง๋ค๊ณ ๊ฐ์ ๋ณ๊ฒฝํ๋ฉด ๋ชจ๋ ๋ณ์์ ์ํฅ์์ค๋ค. (์ฐธ์กฐํ์ ์ด๋๊น;) ์์์ด ๊ฐ๋ฅํ๋ค. ํ์ ์บ์คํ ์ ํตํด ๋ฐํ์์์ ํด๋์ค ์ธ์คํด์ค์ ํ์ ์ ํ์ธํ ์ ์๋ค. ์ธ์คํด์ค๊ฐ ์๋ฉธ..
2022.02.04 -
ํด๋ก์ (Closure) ๋? ๊ฐ๋จํ๊ฒ ๋งํ๋ฉด ํด๋ก์ ๋ ์ผ์ ๊ธฐ๋ฅ์ ํ๋ ์ฝ๋๋ฅผ { } ๋ก ๋ชจ์๋์๊ฒ์ ๋งํ๋ค. ๊ทธ๋ฆฌ๊ณ ์ผ๋ฐ์ ์ธ func ๋ก ์ ์ธ๋๋ ํจ์์ ์์๊ฐ๋ ์ด ํด๋ก์ ์ด๋ค. ์ ํด๋ก์ ๋ผ๊ณ ํ์ง? ํด๋ก์ ๋ ๋ณ์, ์์๊ฐ ์ ์ธ๋ ์ค์ฝํ์์ ์ฐธ์กฐ๋ฅผ ์บก์ณ(์ ์ฅ) ํ ์ ์๋๋ฐ ์ด๊ฑธ ํด๋ก์ง์ด๋ผ๊ณ ํ๋ฉฐ ๊ทธ๋์ ํด๋ก์ ๋ผ๊ณ ์ด๋ฆ๋ถ์ฌ์ก๋ค. ํด๋ก์ ๋ฅผ ์ ์ฐ๋? ์ค์ํํธ๋ ํจ์ํ ํ๋ก๊ทธ๋๋ฐ ํจ๋ฌ๋ค์์ด๋ผ๊ณ ํ๋๋ฐ, ์ด๋ฌํ ์คํ์ผ์ ํด๋ก์ ๊ฐ ์ค์ํ ์ญํ ์ ํ๋ค. ํด๋ก์ ๋ฅผ ์ ๋ค๋ฆญ, ํ๋กํ ์ฝ, ๋ชจ๋๋์ ํจ๊ป ์ฌ์ฉํ๋ฉด์ ์ค์ํํธ๋ ๋ ๊ฐ๋ ฅํ ์ธ์ด๊ฐ ๋ ์์๋ค. ํด๋ก์ ์ ํํ(์ข ๋ฅ) ์ด๋ฆ์ด ์๊ณ , ๊ฐ์ ์บก์ณํ์ง ์๊ณ , ์ ์ญํจ์์ ํํ ์ด๋ฆ์ด ์๊ณ , ๋ค๋ฅธ ํจ์์ ๊ฐ์ ์บก์ณํ๋ ์ค์ฒฉ๋(nested) ํจ์ ํํ ์ด๋ฆ ์๊ณ , ์ฃผ๋ณ co..
(Swift) - ํด๋ก์ (Closure)ํด๋ก์ (Closure) ๋? ๊ฐ๋จํ๊ฒ ๋งํ๋ฉด ํด๋ก์ ๋ ์ผ์ ๊ธฐ๋ฅ์ ํ๋ ์ฝ๋๋ฅผ { } ๋ก ๋ชจ์๋์๊ฒ์ ๋งํ๋ค. ๊ทธ๋ฆฌ๊ณ ์ผ๋ฐ์ ์ธ func ๋ก ์ ์ธ๋๋ ํจ์์ ์์๊ฐ๋ ์ด ํด๋ก์ ์ด๋ค. ์ ํด๋ก์ ๋ผ๊ณ ํ์ง? ํด๋ก์ ๋ ๋ณ์, ์์๊ฐ ์ ์ธ๋ ์ค์ฝํ์์ ์ฐธ์กฐ๋ฅผ ์บก์ณ(์ ์ฅ) ํ ์ ์๋๋ฐ ์ด๊ฑธ ํด๋ก์ง์ด๋ผ๊ณ ํ๋ฉฐ ๊ทธ๋์ ํด๋ก์ ๋ผ๊ณ ์ด๋ฆ๋ถ์ฌ์ก๋ค. ํด๋ก์ ๋ฅผ ์ ์ฐ๋? ์ค์ํํธ๋ ํจ์ํ ํ๋ก๊ทธ๋๋ฐ ํจ๋ฌ๋ค์์ด๋ผ๊ณ ํ๋๋ฐ, ์ด๋ฌํ ์คํ์ผ์ ํด๋ก์ ๊ฐ ์ค์ํ ์ญํ ์ ํ๋ค. ํด๋ก์ ๋ฅผ ์ ๋ค๋ฆญ, ํ๋กํ ์ฝ, ๋ชจ๋๋์ ํจ๊ป ์ฌ์ฉํ๋ฉด์ ์ค์ํํธ๋ ๋ ๊ฐ๋ ฅํ ์ธ์ด๊ฐ ๋ ์์๋ค. ํด๋ก์ ์ ํํ(์ข ๋ฅ) ์ด๋ฆ์ด ์๊ณ , ๊ฐ์ ์บก์ณํ์ง ์๊ณ , ์ ์ญํจ์์ ํํ ์ด๋ฆ์ด ์๊ณ , ๋ค๋ฅธ ํจ์์ ๊ฐ์ ์บก์ณํ๋ ์ค์ฒฉ๋(nested) ํจ์ ํํ ์ด๋ฆ ์๊ณ , ์ฃผ๋ณ co..
2021.08.14 -
Function (ํจ์) ์ ์ ๋ฐ ํธ์ถ (defining and calling functions) swif์์ ํจ์๋ฅผ ์ ์ธํ ๋๋ func ํค์๋๋ฅผ ๋ถ์ธ๋ค. ๊ทธ๋ฆฌ๊ณ (person: String) ํ๋ผ๋ฏธํฐ์ ํ๋ผ๋ฏธํฐ์ ํ์ , ๊ทธ๋ฆฌ๊ณ ๋ฐํํ์-> Stinrg ํ์ดํ ํํ๋ก ์ ์ํ๋ค. func greet(person: String) -> String{ let greeting = "Hello, " + person + "!" return greeting } print(greet(person: "JY")) >>> Hello, JY! ํจ์ ํ๋ผ๋ฏธํฐ์ ๋ฐํ๊ฐ(Function Parameters and Return Values) func sayHelloWorld() -> String{ return "hello, world..
(Swift) Function (ํจ์)Function (ํจ์) ์ ์ ๋ฐ ํธ์ถ (defining and calling functions) swif์์ ํจ์๋ฅผ ์ ์ธํ ๋๋ func ํค์๋๋ฅผ ๋ถ์ธ๋ค. ๊ทธ๋ฆฌ๊ณ (person: String) ํ๋ผ๋ฏธํฐ์ ํ๋ผ๋ฏธํฐ์ ํ์ , ๊ทธ๋ฆฌ๊ณ ๋ฐํํ์-> Stinrg ํ์ดํ ํํ๋ก ์ ์ํ๋ค. func greet(person: String) -> String{ let greeting = "Hello, " + person + "!" return greeting } print(greet(person: "JY")) >>> Hello, JY! ํจ์ ํ๋ผ๋ฏธํฐ์ ๋ฐํ๊ฐ(Function Parameters and Return Values) func sayHelloWorld() -> String{ return "hello, world..
2021.07.13