๐ฑ Mobile/iOS (24) ์ธ๋ค์ผํ ๋ฆฌ์คํธํ [iOS - Swift] Class(ํด๋์ค)์ Struct(๊ตฌ์กฐ์ฒด)์ ์ฐจ์ด์ ์ ๋ํด์ - ์ฐธ์กฐ ํ์ , ๊ฐ ํ์ Swift ๊ณต๋ถ๋ฅผ ํ๋ค๋ณด๋ฉด ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ผ๋ก ์์์ผ ํ ๊ฒ๋ค ์ค ํ๋์ธ Class(ํด๋์ค)์ Struct(๊ตฌ์กฐ์ฒด)์ ๋ํด ์์๋ณด๋ ค๊ณ ํ๋ค. ํด๋์ค์ ๊ตฌ์กฐ์ฒด๋ Swift ๋ฟ๋ง ์๋๋ผ ๊ฐ์ฒด์งํฅ ์ธ์ด์์ ์์ฃผ ๋ณผ ์ ์๋ค. ๊ทธ๋งํผ ์ค์ํ๊ธฐ ๋๋ฌธ์ ์ค๋ ์ด ๊ฐ๋ ๋ค์ ๋ํด ์ฝ๋์ ๊ฐ์ด ์์ธํ๊ฒ ์ ๋ฆฌํด๋ณผ๊ฒ์ด๋ค. ํด๋์ค์ ๊ตฌ์กฐ์ฒด์ ์ฐจ์ด์ ํด๋์ค๋ ์ฐธ์กฐ ํ์ , ๊ตฌ์กฐ์ฒด๋ ๊ฐ ํ์ ์ด๋ค. ์ฐธ์กฐ ํ์ : reference type ๊ฐ ํ์ : value type ์ฒ์์๋ ๋๋์ฒด ์ฐธ์กฐ๊ฐ ๋ญ๊ณ ๊ฐ์ด ๋ญ์ผ? ๋ญ๊ฐ ๋ฌ๋ผ?๐ค ๋ผ๋ ์๋ฌธ์ด ๋ค ์ ์๋ค. ๋น์ฐํ ๋๋ ๊ทธ๋ฌ๋ค. C์ธ์ด์์์ ํฌ์ธํฐ๋ฅผ ์๋ฉด ์กฐ๊ธ ์ดํด๊ฐ ์ฝ๋ค. ์ผ๋จ ์ฐธ์กฐ ํ์ ๊ณผ ๊ฐ ํ์ ์ ๋ํด์๋ ๋ฐ์์ ๋ค์ ์ค๋ช ํ๊ฒ ๋ค. ํด๋์ค (Class) ์ฐธ์กฐ ํ์ (reference ty.. [iOS - Swift] Auto Layout Constraint์ Priority์ ๋ํด์ Auto Layout์ ์ฌ์ฉ์ ์ธํฐํ์ด์ค ์์๋ค์ ํฌ๊ธฐ์ ์์น๋ฅผ ์กฐ์ ํ๋๋ฐ ์ฌ์ฉ๋๋ ๋ฉ์ปค๋์ฆ์ด๋ค. Apple ์ ํ๋ค๋ง ๋ด๋, ์์ดํฐ๋ ๊ธฐ์ข ๋ณ๋ก ๋ค์ํ ํ๋ฉด์ ํฌ๊ธฐ๊ฐ ์๋ค. ์์ดํจ๋๋ ๋ง์ฐฌ๊ฐ์ง์ด๋ค. ์ด๋ฐ ๊ฒฝ์ฐ์ Auto Layout์ ํตํด ๋ค์ํ ๋๋ฐ์ด์ค ๋ฐ ํ๋ฉด ํฌ๊ธฐ์์ ์ผ๊ด๋ ๋ ์ด์์์ ์ ์งํ ์ ์๋ค. ์ค์ํํธ์์ Auto Layout์ ๋ค๋ฃฐ ๋ Constraint์ ์ฐ์ ์์(Priority)๋ ํด๋น ์ ์ฝ์กฐ๊ฑด์ด ๋ค๋ฅธ ์ ์ฝ์กฐ๊ฑด๊ณผ ์ด๋ค ์์๋ก ์ ์ฉ๋์ด์ผ ํ๋์ง๋ฅผ ์ง์ ํ๋ ์ญํ ์ ํ๋ค. ์ฐ์ ์์๋ ์ ์ฝ์กฐ๊ฑด๋ค ์ฌ์ด์ ์ถฉ๋์ ํด๊ฒฐํ๊ณ ์ํ๋ ๋ ์ด์์์ ๊ตฌ์ฑํ๋ ๋ฐ ๋์์ ์ค๋ค. ์๋ฅผ ๋ค์ด, ์ฌ๋ฌ ์ ์ฝ์กฐ๊ฑด์ด ์๋ก ์ถฉ๋ํ๋ ๊ฒฝ์ฐ์ ์ฐ์ ์์๋ฅผ ์ฌ์ฉํ์ฌ ์ด๋ค ์ ์ฝ์กฐ๊ฑด์ ๋ ์ค์ํ๊ฒ ์ฌ๊ธธ ์ง ๊ฒฐ์ ํ ์ ์๋ค. ๋ ๋ฎ.. [iOS - Swift] Any, AnyObject์ ์ฐจ์ด์ ์? Swift๋ ๋ค์ํ ๋ฐ์ดํฐ ํ์ ๋ค์ด ์๋ค. ๋ณดํต ๊ธฐ๋ณธ์ ์ธ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด C, Python, Java์์ ์ฐ์ด๋ Int, Double, Float, String, Bool, Array๋ฑ ์ ๋ง ๋ง๋ค. ํ์ง๋ง ๋ด๊ฐ ์ฒ์ Swift๋ฅผ ๊ณต๋ถํ ๋ ๋ฏ์ ๋ฐ์ดํฐ ํ์ ์ด ์์๋ค. ๋ฐ๋ก Any์ AnyObject ์ด๋ค. Python์์๋ object ํ์ ๊ณผ ๋น์ทํ๊ณ C#์์๋ object ํ์ ๊ณผ ๋น์ทํ๋ค. ์ค๋์ Swift์์์ Any์ AnyObject์ ์ฐจ์ด์ ์ ์์๋ณด๊ฒ ๋ค. Any ์ค์ํํธ์ ๋ชจ๋ ํ์ ์ ๋ํ๋ด๋ ์ผ๋ฐ์ ์ธ ํ์ ์ด๋ค. ๋ชจ๋ ํ์ ์ ์ธ์คํด์ค๋ฅผ ๋ํ๋ผ ์ ์๋ค. AnyObject ๋ชจ๋ ํด๋์ค ํ์ ์ ์ธ์คํด์ค๋ฅผ ๋ํ๋ผ ์ ์๋ค. AnyObject๋ ํ์ ์ด ์๋๋ผ 'ํ๋กํ ์ฝ' ์ด๋ค. ์ค์ํํธ์ ๋ชจ๋ ํด๋์ค๋.. [iOS - Swift] Singleton Pattern ์ฑ๊ธํค ํจํด์ด๋? Singleton Pattern ์ํํธ์จ์ด ๋์์ธ ํจํด ์ค ํ๋์ด๋ฉฐ ํน์ ์ฉ๋๋ก ๊ฐ์ฒด๋ฅผ ํ๋๋ง ์์ฑํด์ ๊ณต๋์ผ๋ก ์ฌ์ฉํ๊ณ ์ถ์ ๋ ์ฌ์ฉํ๋ ๋์์ธ ์ ํ์ด๋ค. ํด๋์ค์ ์ธ์คํด์ค๊ฐ ํ๋๋ง ์์ฑ๋๋๋ก ๋ณด์ฅํ๊ณ ์ด ํจํด์ ์ฌ์ฉํ๋ฉด ์ด๋์๋ ํด๋น ํด๋์ค์ ์ธ์คํด์ค์ ์ ๊ทผํ ์ ์๊ฒ๋๋ค. ์ฆ, ์ฑ ์ ๋ฐ์์ ๊ณต์ ๋๋ ๋ฐ์ดํฐ๋ ๊ธฐ๋ฅ์ ๊ด๋ฆฌํ๊ธฐ ์ฉ์ดํด์ง๋ค. Singleton Pattern ์ ํน์ง 1. ๋จ ํ๋์ ์ธ์คํด์ค 2. ์ ์ญ์ ์ ๊ทผ์ 3. ์ง์ฐ ์ด๊ธฐํ 4. ์ ์ญ ์ํ ๊ด๋ฆฌ ํน์ง์ด ์ ์๋ฟ์ง ์๋๋ค๋ฉด ์ฝ๋๋ก ๊ตฌํํด๋ณด๊ฒ ๋ค. Singleton Pattern ์ฝ๋๋ก ๊ตฌํํ๊ธฐ class StudentInfo { var id : String? var grade : Int? var name : String? } ํ์์ id์.. [iOS - Swift] ์ต์ ๋(Optional)์ ๋ํ์ฌ, ์ต์ ๋ ์ถ์ถ, ์ต์ ๋ ๋ฐ์ธ๋ฉ(Optional Binding), ์ต์ ๋ ์ฒด์ด๋(Optional Chaining) ์ต์ ๋(Optional) ์ด๋? ์ต์ ๋์ด๋ ๊ฐ์ด ์์ ์๋ ์๊ณ , ์์ ์๋ ์๋ ๊ฒ์ด๋ค. ์ผ๋ฐ์ ์ธ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์์๋ ๊ฐ์ด null ์ธ ๋ณ์์ ์ ๊ทผํ๋ฉด ํ๋ก๊ทธ๋จ์ด ์ข ๋ฃ๋๋ค. ํ์ง๋ง, swift์์๋ ์ต์ ๋์ ์ฌ์ฉํ๋ฉด ๊ฐ์ด ์๋ ๋ณ์์ ์ ๊ทผํด๋ ํ๋ก๊ทธ๋จ์ด ์ข ๋ฃ๋์ง ์๋๋ค. ์ต์ ๋(Optional) ์ ์ฌ์ฉํ๋ ์ด์ ๊ฐ์ด ์๋ ๋ฐ์ดํฐ ๊ณต๊ฐ์ ์ ๊ทผํ๋ ค๊ณ ํ๋ฉด ์๋ฌ๊ฐ ๋ฐ์ํ๋ค. ๊ฐ์ ์ด๊ธฐํํ์ง ์์๊ธฐ ๋๋ฌธ์ ๋ฉ๋ชจ๋ฆฌ์ ๊ฐ์ด ์ ์ฅ๋์ด ์์ง ์์ ๊ฒ์ด๋ค. ํน์, ‘์ฐ๋ ๊ธฐ ๊ฐ’์ด ์ ์ฅ๋์ด ์์ ๊ฒ์ด๋ค. ์ฝ๋๋ก ๊ฐ๋จํ๊ฒ ์์๋ฅผ ๋ค์ด๋ณด๊ฒ ๋ค. var name : String print(name) ์์ ์์๋ฅผ ์คํ์์ผ๋ณด๋ฉด ์๋ฌ๊ฐ ๋ฐ์ํ ๊ฒ์ด๋ค. ์๋๋ฉด name์๋ ์๋ฌด๋ฐ ๊ฐ์ด ์์ง ์๊ธฐ ๋๋ฌธ์ด๋ค. ๊ทธ๋ผ ์ฑ์ด ๊บผ์ง์ง ์๊ฒ .. [iOS - Swift] is, as ํ์ ์บ์คํ (์ ์บ์คํ , ๋ค์ด ์บ์คํ ) ์ฑ์ ๊ฐ๋ฐํ๋ค ๋ณด๋ฉด is, as, as!, as? ์ ๊ฐ์ด ๊ฐ์ ๋ฏ ๋ค๋ฅธ ๋ฌธ๋ฒ์ ๋ณธ ์ ์ด ์์๊ฒ์ด๋ค. ์ฐ๋ฆฌ๋ ์ด๊ฑธ ํ์ ์บ์คํ ์ด๋ผ๊ณ ํ๋๋ฐ ์ด๋ค ๊ฒ๋ค์ด ๋ค๋ฅธ์ง ์ ํํ ์ง๊ณ ๋์ด๊ฐ๊ธฐ ์ํด ๊ธ์ ์์ฑํ๊ฒ ๋์๋ค. ํ์ ์บ์คํ (Type Casting) ๋ณ์๋ ์์์ ํ์ ์ ๋ค๋ฅธ ํ์ ์ผ๋ก ๋ณ๊ฒฝํ๋ ๊ฒ์ ๋งํ๋ค. ์ธ์คํด์ค์ ํ์ ์ ํ์ธํ๊ฑฐ๋, ์ธ์คํด์ค๋ฅผ ๊ฐ์ ๊ณ์ธต์ ์๋ ๋ค๋ฅธ ์ํผ ํด๋์ค(์์)๋ ์๋ธ ํด๋์ค(ํ์)๋ก ์ทจ๊ธํ๋ ๋ฐฉ๋ฒ์ด๊ธฐ๋ ํ๋ค. ํ์ ์บ์คํ ์ is ์ as ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ๋ค. is ์ฐ์ฐ์ ํน์ ์ธ์คํด์ค์ ํ์ ์ ํ์ธํ๋ ์ฐ์ฐ์ด๋ค. ๋ฐํ ํ์ ์ Bool์ด๋ค. let mystr : String = "Kimgahyun" mystr is Character // false mystr is String .. ์ด์ 1 2 3 4 ๋ค์