-
[Swift] @main ๊ณผ ์ปค์คํ ์ํธ๋ฆฌ ํฌ์ธํธiOS/๐ Swift 2021. 1. 19. 13:54
1์ฐจ ์์ : 21.09.28 ์๋ ํ์ธ์ ๐ถ ์ด๋ฒ ์๊ฐ์๋ @main ํน์ฑ (attribute) ์ ๋ํด์ ์์๋ณด๊ฒ ์ต๋๋ค. ๊ทธ๋ผ ์์ํด๋ณผ๊ฒ์๐ฅ A more general purpose and lightweight mechanism for delegating a program’s entry point to a designated type. @main ์ ๊ธฐ๋ฅ @main ์ ์ค์ํํธ 5.3๋ฒ์ ์์ ๊ตฌํ๋ ๋ฒ์ฉ์ ์ธ ์๋ก์ด ์ํธ๋ฆฌ ํฌ์ธํธ ์ ๊ณต ๊ธฐ๋ฅ์ ๋๋ค. ์ด์ ์๋ ์ฑ ๊ฐ๋ฐ์ฉ ํ๋ก๊ทธ๋จ์ ์ํด์๋ @UIApplicationMain ์ด๋ผ๋ ์ดํธ๋ฆฌ๋ทฐํธ๋ก ์ํธ๋ฆฌํฌ์ธํธ๋ฅผ ์ง์ ํ์ต๋๋ค. @main ์ด ๋ฒ์ฉ์ ์ธ ์ด์ ๋ ๋จ์ผ ํ์ผ ์ฝ๋์ด๋ ํ๋ ์์ํฌ ํ๋ก์ ์ด๋ ์ปค์คํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์๊ด์์ด ๋์ผํ๊ฒ ์ํธ๋ฆฌํฌ์ธํธ๋ฅผ ์ ๊ณตํด์ค ์ ์๊ธฐ..
-
Mutating Method - MethodsiOS/๐ Swift 2021. 1. 18. 23:28
์ด ํค์๋๊ฐ ํ์ํ ์ด์ struct์ enum ์ ๊ฐ ํ์ ์ ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ๊ฐ ํ์ ์ ์์ฑ์ ์ธ์คํด์ค ๋ฉ์๋ ๋ด๋ถ์์ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค. ์์ฑ์ ๋ณ๊ฒฝํ ์ ์๊ธฐ ๋๋ฌธ์, implicit property ์ธ `self` ๋ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค. ์ถ๊ฐ์ ์ผ๋ก ์๋ฌ๋ฉ์์ง ๋ด์ฉ์ด ์ make `x` mutable ์ด ์๋ make `self` mutable ์ธ์ง ์๊ฐํด๋ณด๋ฉด, ๋ฉ์๋ ๋ฐ๋์์ x ๋ y๋ implicitly ํ๊ฒ ํํ๋ ๊ฒ์ด๊ณ , ์ฌ์ค์ self.x , self.y์ด๊ธฐ ๋๋ฌธ์ ๋๋ค. ๋ณ๊ฒฝํ ์ ์๊ฒ ํ๋ ๋ฐฉ๋ฒ func ์์ `mutating` ํค์๋๋ฅผ ๋ถ์ฌ์ค๋๋ค. ๋ถ์ฌ์ฃผ๋ฉด ์ธ์คํด์ค ์์ฑ์ ์์ ํ ์ ์๊ฒ ๋ฉ๋๋ค. ๋ฉ์๋๊ฐ ์คํ ์ข ๋ฃ๋๋ฉด ๋ณ๊ฒฝ๋ ๊ฐ์ ์ธ์คํด์ค ์์ฑ์ ๋ฎ์ด ์์ฐ๋ ๋ฐฉ์์ ๋๋ค. ๋ํ ..
-
[Swift] ํ๋กํ ์ฝ ๋ฉ์๋ ์๊ตฌ์ฌํญ (Method Requirements)iOS/๐ Swift 2021. 1. 18. 23:03
์ฐธ๊ณ ์๋ฃ: Protocols - swift.org ์์ฑ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก method ๋ `static` ํค์๋๋ฅผ ํตํด type method๋ฅผ ๊ตฌํํ ์ ์์ต๋๋ค. ์ผ๋ฐ์ ์ธ instance method ์ type method์ฒ๋ผ ์ ์ํ๋ฉด ๋์ง๋ง, ํ๋กํ ์ฝ์ ๊ตฌํ์ ํ์ง ์๋ ์๊ตฌ์ฌํญ ์ด๊ธฐ ๋๋ฌธ์ { } (curly brace) ์ ํด๋นํ๋ ๋ฐ๋ ๋ถ๋ถ์ ์์ต๋๋ค. Syntax protocol SomeProtocol { // Type method // with no-input, no-return static func someTypeMethod() } protocol RandomNumberGenerator { // Instance Method // with no-input, Double type return f..
-
[Swift] ํ๋กํ ์ฝ ์์ฑ ์๊ตฌ์ฌํญ (Property Requirements)iOS/๐ Swift 2021. 1. 15. 14:27
์ฐธ๊ณ ์๋ฃ: Protocols - swift.org var protocol Figure { var name: String { get set } } ํ๋กํ ์ฝ์์ ์์ฑ ์ ์ธ ์์ ๋ถ๋ `var` ํค์๋๋ ์์ฑ์ ๊ฐ๋ณ์ฑ ๊ณผ๋ ๊ด๋ จ์ด ์์ต๋๋ค. ํ๋กํ ์ฝ์์ ์์ฑ์ ๋ฌด์กฐ๊ฑด ์์ `var` ํค์๋๋ฅผ ๋ถ์ฌ์ผํฉ๋๋ค. ๋ํ ์ ์ฅ์์ฑ ํน์ ๊ณ์ฐ์์ฑ๋ง์ผ๋ก ๊ตฌํ์ ๊ฐ์ ํ ์๋ ์์ต๋๋ค. ์์ฑ์ ๊ฐ๋ณ์ฑ์ ๋ณ์ ์ ํ์ ๋ค์ ๋ถ๋ { get set } ์ ์กฐํฉ ์ผ๋ก ๊ฒฐ์ ๋ฉ๋๋ค. get , set ์ด ๋ชจ๋ ์๋ค๋ฉด ์ฝ๊ธฐ ์ฐ๊ธฐ๋ฅผ ๋ชจ๋ ๊ฐ๋ฅํ๊ฒ ๊ตฌํํด์ผ ํ๊ณ , get ๋ง ์๋ ์์ฑ์ด๋ผ๋ฉด ์ฝ๊ธฐ๋ง ๊ฐ๋ฅํด๋ ํ๋กํ ์ฝ์ ๋ฐ๋ฅด๋ ๊ฒ์ ๋๋ค. ์ฝ๊ธฐ ์ฐ๊ธฐ๋ฅผ ๋ชจ๋ ๊ฐ๋ฅํ๊ฒ ๊ตฌํํด๋ ๋ฉ๋๋ค. gettable: ์์ฑ์ ์ฝ๊ธฐ ๊ฐ๋ฅํ๊ฒ ๋ง๋๋ ๊ฒ settab..
-
[Swift] ํ๋กํ ์ฝ ๊ฐ์ (Protocol Overview)iOS/๐ Swift 2021. 1. 15. 14:13
์ฐธ๊ณ ์๋ฃ: Protocols - swift.org ๊ฐ์ ํ๋กํ ์ฝ์ ์๊ตฌ์ฌํญ์ ๋๋ค. ํ๋กํ ์ฝ์๋ ๊ตฌํํด์ผํ๋ ๋ฉค๋ฒ๋ค์ ๋ชฉ๋ก์ด ๋์ด๋์ด ์์ต๋๋ค. ํ๋กํ ์ฝ์ ์ฑ์ฉํ ํ์์ ์๊ตฌ์ฌํญ์ ๋ฐ๋์ ๋ชจ๋ ๊ตฌํํด์ผ ํฉ๋๋ค. " When you adopt protocol, you should conform to protocol." ์ด๊ฒ์ Adopting Protocol ์ด๋ผ๊ณ ํ๋ฉฐ `ํ๋กํ ์ฝ์ ๋ฐ๋ฅธ๋ค`, `ํ๋กํ ์ฝ์ ์ฑ์ฉํ๋ค` ๋ผ๊ณ ํํํฉ๋๋ค. ํ๋กํ ์ฝ์๋ ๊ตฌํ ๋ด์ฉ์ ๋ค์ด๊ฐ ์์ง ์๊ณ , ์ฑ์ฉํ ํ์ ์ด ์ง์ ๊ตฌํ์ ํฉ๋๋ค. ํ๋กํ ์ฝ์ ํ๋กํ ์ฝ ๊ฐ ์์์ ์ง์ํ๋ฉฐ, ํด๋์ค์ ๋ฌ๋ฆฌ ๋ค์ค ์์๋ ์ง์ํฉ๋๋ค. ์ฆ, ํ๋์ ํ๋กํ ์ฝ์ ์ฌ๋ฌ๊ฐ์ ํ๋กํ ์ฝ์ ๋์์ ์์๋ฐ์ ์ ์์ต๋๋ค. enum, struct, class ๊ฐ ํ๋ก..
-
Closure Capture List - MemoryiOS/๐ Swift 2021. 1. 5. 13:49
์ธ์ ์ด ์ด์๋ฅผ ์ ๋ ํด์ผ ํ ๊น ํด๋ก์ ๋ฅผ ์ธ์คํด์ค ์์ฑ์ ์ ์ฅํ ๋์ ๋๋ค. ๋ฐ์ํ๋ ์ํฉ ํด๋ก์ ์ ๊ฐํ ์ฐธ์กฐ ์ํ์ ๋ค์ ์ํฉ์ ๋ฐ์ํฉ๋๋ค. 1. ํด๋ก์ ๊ฐ ์ธ์คํด์ค์ ํ๋กํผํฐ์ผ ๋ 2. ํด๋ก์ ์ ๊ฐ ํ๋ ์ํฉ ํด๋ก์ ๋ด๋ถ์์ self.(propertyName)์ด๋, self.(methodName)์ฒ๋ผ ์ธ์คํด์ค์ ์์ฑ์ด๋ ๋ฉ์๋๋ฅผ ํธ์ถํ ๋, ํด๋ก์ ๋ self๋ฅผ ํ๋ํ๋ฏ๋ก ๊ฐํ ์ฐธ์กฐ ์ํ์ด ๋ฐ์ํฉ๋๋ค. ๋ฌธ์ ๋ ํด๋ก์ ๊ฐ ํ๋ํ ์ธ์คํด์ค์ ์ฐธ์กฐ ์นด์ดํธ๋ฅผ ์ฆ๊ฐ์์ผ ๋ฉ๋ชจ๋ฆฌ ํด์ ๋ฅผ ๋ฐฉ์งํ๋ค๋ ๊ฒ์ ๋๋ค. ์ฆ, ๊ฐํ ์ฐธ์กฐ๋ฅผ ์ ์งํ๊ฒ ๋ฉ๋๋ค. ๋จ, ํด๋ก์ ๋ด๋ถ์์ self ์์ฑ์ ์ฌ๋ฌ ๋ฒ ํธ์ถํ์ฌ ์ ๊ทผํ๋ค๊ณ ํด๋ ์ฐธ์กฐ ํ์๋ ํ ๋ฒ๋ง ์ฆ๊ฐํ๋ค๊ณ ํฉ๋๋ค. ์์ ๊ธ์์๋ ์ฐธ์กฐ ํ์ ์ ์ธ์คํด์ค์ ์ฐธ์กฐ ํ์ ์ธ์คํด์ค ๋๋ฌธ์ ๊ฐํ..
-
Memberwise Initializer - InitializeriOS/๐ Swift 2021. 1. 5. 13:30
" ๊ตฌ์กฐ์ฒด์๋ง ํน๋ณํ ์ ๊ณต๋๋ ์ด๋์ ๋ผ์ด์ " Struct ์๋ง ํน๋ณํ ์ ๊ณต๋๋ Initializer๊ฐ ์์ต๋๋ค. ์ด Initializer๋ ์ด๊ธฐํ ์์ ์์ ์์ ๊ฐ๋ฅํ ์์ฑ์ ํํ์ฌ, Argument๋ก ์ ๊ณตํฉ๋๋ค. ์ ์ธ ์์ ๊ณผ ์ด๊ธฐํ ์์ ์ ๊ตฌ๋ถํด์ ์๊ฐํด๋ณด๋ฉด, ์ ๋ฌธ์ฅ์ ์ฝ๊ฒ ์ดํดํ ์ ์์ต๋๋ค. ๊ฐ๋ฅํ ๋ชจ๋ Member๋ฅผ ์ด๊ธฐํํ ์ ์๊ฒ ํด ์ฃผ๊ธฐ ๋๋ฌธ์ ์์ Memberwise Initializer๋ก ๋ช ๋ช ๋ ๊ฒ ๊ฐ์ต๋๋ค. Parameter ๋ชฉ๋ก์ ์ถ๊ฐ๋์ง ์์ ๊ฒฝ์ฐ๋, let ์ผ๋ก ๊ธฐ๋ณธ ๊ฐ์ด ์ ์ธ๋ ์ ์ฅ์์ฑ์ผ ๊ฒฝ์ฐ์ ๋๋ค. let์ผ๋ก ์ง์ ํ๋ฉด ๊ฐ์ด ํ๋ฒ ์ ์ธ๋ ์ดํ ์์ ํ ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ค. ์ถ๊ฐ์ ์ผ๋ก let์ด์ง๋ง ๊ธฐ๋ณธ ๊ฐ์ ์ ์ธ๋์ง ์์๋ค๋ฉด, ์ด๊ธฐํ ์์ ์์ ์ฒ์ ๊ฐ์ด ๋ค์ด๊ฐ๋ ๊ฒ์ด๋ฏ๋ก Para..
-
Initializers - InitializeriOS/๐ Swift 2021. 1. 5. 13:00
"์ด๋์ ๋ผ์ด์ " ๊ฐ์ Enumeration, Class, Struct ๋ ๋ชจ๋ ๊ฐ๋ฐ์๊ฐ ์ ์ธํด ๋์ ์ค๊ณ๋ ์ ๋๋ค. ์ฐ๋ฆฌ๋ ์ด ์ค๊ณ๋์ Initializer ๋ฅผ ํตํด Instance ๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค. Initializer์ ์คํ ํ, ๋ชจ๋ ์์ฑ์ ๊ธฐ๋ณธ ๊ฐ์ ๊ฐ์ง๊ณ ์๋ ์ํ์ฌ์ผ ํฉ๋๋ค. ๋ง์ฝ ๊ธฐ๋ณธ ๊ฐ์ด ์๋ ์์ฑ์ด ์กด์ฌํ๋ค๋ฉด Initialization ์ฆ, ์ด๊ธฐํ๋ ์คํจํฉ๋๋ค. Initializer์ ์ข ๋ฅ๋ ์ฌ๋ฌ๊ฐ์ง๊ฐ ์์ต๋๋ค. Default Initializer, Memberwise Initializer, Designated Initializer, Convenience Initializer , Required Initializer ์ด์ด์ง๋ ๊ธ์์ ์ฐจ๋ก๋ก ๊ฐ๊ฐ ๋ค๋ค๋ณด๋ ค๊ณ ํฉ๋๋ค. Basic Synt..
-
Strong Reference Cycle - MemoryiOS/๐ Swift 2021. 1. 3. 22:26
"๊ฐํ ์ฐธ์กฐ ์ํ" ARC์ ์๋ ๋ฐ ๊ฐํ ์ฐธ์กฐ์ ๊ท์น์ ์ ๋ชจ๋ฅด๊ณ ์ฌ์ฉํ ๋ ๋ฐ์ํ๋ ์ด์์ ๋๋ค. ARC์ ๊ด๋ จ๋์์ผ๋ฏ๋ก ์ฐธ์กฐ ํ์ ์ฌ์ด์์ ๋ฐ์ํฉ๋๋ค. (class, closure) ๋ฐ์ ์์ ๊ฐ๋ฐ์๊ฐ ์ธ์คํด์ค์ nil์ ํ ๋นํ๋ ๊ฒฝ์ฐ๋ ์ธ์ ์ผ๊น์? ์ธ์คํด์ค๊ฐ ๋ ์ด์ ์ฐธ์กฐํ ํ์๊ฐ ์์ด์ ๋ฉ๋ชจ๋ฆฌ์์ ํด์ ์ํค๊ณ ์ถ์ ๊ฒฝ์ฐ์ผ ๊ฒ์ ๋๋ค. ์๋๋ ์ธ์คํด์ค์ ๋ฉ๋ชจ๋ฆฌ ํด์ ์์ง๋ง, ์ธ์คํด์ค๊ฐ ํด์ ๋์ง ์๊ณ ๋ฉ๋ชจ๋ฆฌ์ ๋จ์์์๊ณผ ๋์์ ์ ๊ทผ๋ ํ ์ ์๋ ๊ฒฝ์ฐ๊ฐ ์๊น๋๋ค. ๋ฐ๋ก ๊ฐํ ์ฐธ์กฐ ์ํ์ด ๋ฐ์ํ ๊ฒฝ์ฐ์ ๋๋ค. ํ์ ์ธ์คํด์ค์ ์ธ์คํด์ค ์ฌ์ด(์ด๋ฒ ๊ธ), ์ธ์คํด์ค์ ๊ทธ ์ธ์คํด์ค์ ์์ฑ์ ์ ์ฅ๋ ํด๋ก์ ์ฌ์ด ์ฝ๋ ์ธ์คํด์ค๊ฐ ์๋ก ๊ฐํ ์ฐธ์กฐ ํ๋ ๊ฒฝ์ฐ, ์ธ์คํด์ค์ nil์ ๋ฃ์ด๋ ์ธ์คํด์ค์ ์์ฑ์ด ๋ค๋ฅธ ์ธ์คํด์ค๋ฅผ ์บก..