์ฒ์์ Swift ๊ณต๋ถํ ๋๋ ์ ๋ง ์๋ฌด๊ฒ๋ ๋ชฐ๋ผ์, ํ๋ค์๋ ๊ฒฝํ์ด ์๋ค. ์ข์ ๊ธฐํ๋ก ํ๋ฒ๋ ์ ๋ฆฌํ ์๊ฐ์ด ์๊ฒผ๋ค. ๋ค์ํ๋ฒ ์ ์ฒด์ ์ผ๋ก ํ๋ ์๋ฆฌ์ฆ๋ฅผ ๋ง๋ค์ด๋ณธ๋ค. ๋จผ์ , Swift๊ฐ ์ด๋ค ์ธ์ด์ ํน์ง์ ๊ฐ๋์ง, ๊ธฐ๋ณธ ๋ฌธ๋ฒ์ ์ด๋ค์ง ์์๋ณด๋ ์๊ฐ์ ๊ฐ์ง๋ ค ํ๋ค.
Swift์ ํน์ง
- ๊ฐํ์ ์ธ์ด
- let ์ฌ์ฉ์ ๋๋ ค์ผ ํจ
- Value ํ์ ์ด ์กด์ฌ
- Optional
- ๊ฐ์ ๋ถ์ฌ ๊ฐ๋ฅ์ฑ์ ํญ์ ์ผ๋์ ๋์ด์ผ ํจ
- ๋ค์ด๋ฐ์ ์ ๊ฒฝ ์ด๋ค.
- ๋ช
ํํ ์ฌ์ฉ์ ๊ถ์ฅํ๋ค.
- remove(x) : x๋ผ๋ ๊ฐ์ ์ง์ฐ๋ผ๋ ๊ฒ์ธ๊ฐ? x๋ฒ์งธ ์ธ๋ฑ์ค๋ฅผ ์ง์ฐ๋ผ๋ ๊ฒ์ธ๊ฐ?
- remove(at :x)
- mutatating/nonmutating ๋ฉ์๋ ์์ ์ผ๊ด๋๊ฒ ์ด๋ฆ์ ์ง์
- reference๋ก ๋ณ๊ฒฝํ๋ ๊ฒฝ์ฐ ๋์ฌํ
- return ํ๋ ๊ฒฝ์ฐ ed, ing
- ๋ช
ํํ ์ฌ์ฉ์ ๊ถ์ฅํ๋ค.
Constant & Variable
- let
- constant
- ๋ณ๊ฒฝ ๋ถ๊ฐ
- var
- variable
- let ์ฌ์ฉ ๊ถ์ฅ
- ๋๋ฒ๊น
์ฉ์ด
- ํ์ธ ํฌ์ธํธ ์ค์ด๋ฆ
- ๊ฐ๋ ์ฑ ํฅ์
- ๋๋ฒ๊น
์ฉ์ด
Swift์ Type
value, reference type์ด ์กด์ฌํ๋ค.
||Value Type|Reference Type| |::|:---------|:-------------| |๋ค๋ฅธ ๋ณ์์ ๋์ |
๊ฐ ์์ฒด๊ฐ ๋ณต์ฌ๋จ
๋ณ๋์ instance๊ฐ ์์ฑ
|reference๊ฐ ๋์ ๋จ
๋ ๋ณ์๊ฐ ๋์ผํ instance ๋ฅผ ๊ฐ๋ฅดํค๊ฒ ๋จ
| |member๊ฐ์ ๋ณ๊ฒฝ|ํด๋น type์ด var๋ก ์ ์ธ๋๋ฉด ๋ณ๊ฒฝ๊ฐ๋ฅํ๋ let์ผ๋ก ์ ์ธ ๋๋ฉด ๋ณ๊ฒฝ ๋ถ๊ฐ๋ฅ.|ํด๋น type์ด ๋์ ๋ ์ํ์ ์๊ด์์ด member๊ฐ์ ๋ณ๊ฒฝ ๊ฐ๋ฅ| |ํด๋น๋๋ ์์|enum / struct|class / function| |๋ํ์ ์ธ ๊ฒ|String, Array, Dictionary ๋ฑ|Class ๋ก ์ ์ธ๋ ๊ฐ์ฒด, Singleton, Manager โฆ|Value Type
- Struct, Enum
- ์ ์ธ์ ์ฐธ์กฐํ๋ ๋ณ์/์์ ์ธ์ ์ฐธ์กฐ ๋ถ๊ฐ
- ๋์
๋๋ ๊ฒฝ์ฐ ๋ณต์ฌ๋จ
let a = TempStruct()
let b = a
๋ผ ํ ๊ฒฝ์ฐ ์ฐธ์กฐ๊ฐ ์๋๊ณ ๋ณต์ฌ๋จ
- argument๋ก ๋์ด๊ฐ ๊ฒฝ์ฐ ๋ณต์ฌ๋จ
- return ์ ๋ณต์ฌ๋จ
- ์ฌ๋ณธ ์์ ํด๋ ์๋ณธ์ ์ํฅ์ด ์์
- ์ค์ ์ฝ๋ ์งค ๋, Struct๋ก ๋ง๋ค๊ณ ๊ฐ์ ๋๊ธฐ๋ค๊ฐ ๋ถ์์ฉ์ด ์ผ์ด๋๋ ๊ฒฝ์ฐ๋ ์์(Class์ ๋์ ๊ธฐ๋ํ ๊ฒฝ์ฐ)
- Copy On Write
- ํ์ง๋ง ๋งค๋ฒ ๋ณต์ฌํ๋ ๊ฒ์ ์๋
- ์ปดํ์ผ๋ฌ๊ฐ ๋ณต์ฌ๋ณธ์ ๋ณ๊ฒฝ ์ ๋ฌด๋ฅผ ํ๋จํ์ฌ ๊ธฐ์กด ๊ฐ์ ์ฌ์ฌ์ฉํ ์ง ์๋ก ๋ง๋ค์ง ํ๋จํจ
Reference Type
- class, function
- ์ ์ธ ์ด์ธ์ ๋ค๋ฅธ ๊ณณ์์ ์ฐธ์กฐ๊ฐ ๊ฐ๋ฅํ type
- ๋์ ๋๋ ๊ฒฝ์ฐ ์ฐธ์กฐ๋จ
- argument๋ก ๋์ด๊ฐ๋ ์ฐธ์กฐ๋จ
- return๋์ด๋ ์ฐธ์กฐ๋จ
- ์ฐธ์กฐํ๋ ๋ณ์์์ ๋ณ๊ฒฝํ๋ฉด ๋ชจ๋ ์ฐธ์กฐ๋ ๊ณณ์์ ๋ณ๊ฒฝ๋จ
Value ํ์ ์ ์ฅ์
-
๋ณดํต์ Value type์ stack์ ์ ์ฅ๋๊ธฐ ๋๋ฌธ์ dereference ๊ณผ์ ์ด ํ์์์
-
dereference
- reference type์ stack์ heap์ ์ ์ฅ๋ ํฌ์ธํฐ๋ฅผ ์ ์ฅํด๋๊ธฐ ๋๋ฌธ์ (์ฌ๋ฌ ๊ณณ์์ ์ฐธ์กฐํ๊ธฐ ์ํจ) ๋ค์ heap ๊ณต๊ฐ์ผ๋ก ๊ฐ์ ๊ฐ์ ์ฝ์ด์ผ ํจ
- ๊ฒฐ๊ตญ 2๋ฒ ๊ฐ์ผํ๋ค๋ ๋ป
-
๋ฐ๋ผ์ ๋ ๋น ๋ฆ
-
Mutability ์ ์ด๊ฐ ๋ ๊ฐ๋ ฅํจ
-
class๋ก ๋ง๋ค ๊ฒ์ struct๋ก ๋ง๋ ๋ค๋ฉด, member๊ฐ๋ ๋ณ๊ฒฝ์ด ๋ถ๊ฐํจ
-
๋ณด๋ค ํจ์ํ ํ๋ก๊ทธ๋๋ฐ ๊ฐ๋ ์ ๋ง๋ ์ฝ๋ฉ์ด ๊ฐ๋ฅ
Basic Grammar
- Type Alias
- ์๋ก์ด ์ด๋ฆ ๋ถ์ฌ ๊ฐ๋ฅ
typealias SampleRate = UInt16
Numbers
- Integers
- ํต์์ ์ผ๋ก Int, UInt ์ฌ์ฉ
- Int๋โฆ
- 32Bit Platform: Int32
- 64Bit Platform: Int64
- CPU๊ฐ ํ๋ฒ์ ์ฒ๋ฆฌํ๋ ๋ฐ์ดํฐ ์ต์๋จ์ ํฌ๊ธฐ
- ํ๋ก๊ทธ๋จ ์นด์ดํฐ์ ํฌ๊ธฐ
- 32bit = 4byte์ ์ฃผ์๊ณต๊ฐ ํํ ๊ฐ๋ฅ
- 2^32 = 4GB
- ๋ฐ๋ผ์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ 4GB๊ฐ ํ๊ณ์์
- Int๋โฆ
- ๋ช
ํํ๊ฒ ํฌ๊ธฐ๋ฅผ ์ ํด์ผ ํ๋ ๊ปด์ฐ
- Int8, Int16, Int32, Int64
- UInt8, UInt16, UInt32, UInt64
- bounds ํ์ธ
- UInt8.min, UInt8.max
- ํต์์ ์ผ๋ก Int, UInt ์ฌ์ฉ
- Floating-Point Numbers
- Float(32bit)
- Double(64bit)
- Type Inference
- ์ปดํ์ผ๋ฌ๊ฐ ๊ฐ ์ ์ถํด์ค
- ํ์ง๋ง Type ๋ช ์์, ์ปดํ์ผ ์๊ฐ ์ค์ผ ์ ์์
- ๊ฒฝ์ฐ์ ๋ฐ๋ผ์(์ํตํด์ผ ํ๋ ๊ฒฝ์ฐ) ๋ช ์ํด์ผ ํจ
- Numeric Literals
- prefix
- Dicimal: 123
- Binary: 0b1001
- Octal: 0o771
- Hexadecimal: 0xAC33
- ์ง์ ํํ
let a = 3.44e2
let b = 2.14e-2
- Big Number
- ํฐ ์ซ์์ ๊ฒฝ์ฐ ์ฝ๊ธฐ ์ฝ๊ฒ ์ค๊ฐ์
_
๋ฅผ ๋ฃ์ ์ ์์ let milion = 1_000_000
- ํฐ ์ซ์์ ๊ฒฝ์ฐ ์ฝ๊ธฐ ์ฝ๊ฒ ์ค๊ฐ์
- prefix
- Numeric Type Conversion
- Swift๋ ๊ฐํ์ ์ธ์ด์ด๊ธฐ ๋๋ฌธ์ Type์ด ๋ค๋ฅผ์ ์ฐ์ฐ ๋ถ๊ฐ
- Int ๋ณ์๋ฅผ Double๋ก ๋ณ๊ฒฝ์
Double(a)
์ ๊ฐ์ด ์ฌ์ฉํจ- ์ด ๋, ์ด ์์ ์ Casting์ด ์๋
- Double๊ณผ ๊ฐ์ ์๋ฃํ์ Swift์์ Struct๋ก ๊ตฌ์ฑ๋์ด ์๊ณ , Int๋ฅผ ๋ฐ์ Double ๊ตฌ์กฐ์ฒด๋ฅผ ์์ฑํ๋ ๊ฒ์
- ๊ฐ์ Integer(UInt, Int)์ฌ๋ ํฌ๊ธฐ๊ฐ ๋ค๋ฅด๋ค๋ฉด Conversionํด์ผ ํจ
Booleans
- 1๊ณผ True๋ ๋ค๋ฅธ Type์
- ์ญ์ ๊ตฌ์กฐ์ฒด์
Tuple
- ์ฌ๋ฌ๊ฐ ๊ฐ์ ํ๋์ ๋ณตํฉ ๊ฐ์ผ๋ก ํํ
Any, AnyObject, nil
- Any
- Swift์ ๋ชจ๋ ํ์ ์ ์ง์นญํ๋ ํค์๋
- ์ค์ํ ์ ์ ์๋ฅผ ๋ค์ด Any ํ์ ์ ๋ณ์์์ Doubleํ ๋ณ์๋ฅผ ๋ฃ์ด๋์๋ค ํ๋๋ผ๋
- ๋ค๋ฅธ Double ๋ณ์์ ์ด ๋ณ์๋ฅผ ์ง์ ์ ์ผ๋ก ํ ๋นํ ์ ์๋ค๋ ๊ฒ์ด๋ค.
- ๊ผญ ํ๋ณํ์ ํด์ค์ผ ํ๋ค.
- AnyObject
- ๋ชจ๋ ํด๋์ค ํ์ ์ ์ง์นญํ๋ ํ๋กํ ์ฝ
- ํ๋กํ ์ฝ์ ์ถํ์ ์์๋ณด์.
- AnyObject๋ ํด๋์ค์ ์ธ์คํด์ค๋ง ๋ฐ์๋จน๊ธฐ ๋๋ฌธ์, ๋ค๋ฅธ ์ธ์คํด์ค๋ฅผ ์ฌ์ฉํ๋ฉด ์๋ฌ๊ฐ ๋๋ค.
- nil
- โ์์โ์ ์๋ฏธ
Any
,AnyObject
์ ๊ฐ์ ํ ๋นํ ์ ์๋ค!!!!!!!!!!
Optional
- ๊ฐ์ด ์กด์ฌํ์ง ์์ ์ ์์ ๋ ์ฌ์ฉ
- ๊ฐ์ด ์๋ ๊ฒฝ์ฐ
nil
์ฌ์ฉ - Explicit Optional
let a: Int? = 3
- ๊ฐ์ ์์์์ ๋ด๋ ๋ชจ์
- ๋น์ด์์ ์๋ ๋ค์ด์์ ์๋ ์์
- Implicit Optional
let a: Int! = 3
- ๊ฐ์ ์์์ ๋ด์ผ๋, ๋ค์ด์๋ค๊ณ ๊ฐ์ ํ๋ ์ํ
- ๊ฐ์ด ์๋ค๊ณ ๊ฐ์ ํ๊ณ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์, ๋ง์ฝ ์์ ๊ฒฝ์ฐ ๋ฐํ์ ์๋ฌ
- ๊ฐ๋ฅํ๋ฉด ์ฌ์ฉํ์ง ์๋ ๊ฒ์ ๊ถ์ฅ
Unwrapping ๋ฐฉ๋ฒ
- ๊ฐ์ด ์์์์ ๋ค์ด์๋ค๋ฉด, ์ด๋ฅผ ๊บผ๋ด์ ์ฌ์ฉํด์ผ ํจ
- ๊บผ๋ด๋ ๋ฐฉ๋ฒ์ผ๋ก๋ ํฌ๊ฒ 2๊ฐ์ง๊ฐ ์์
- Optional Binding
- ์์๋ฅผ ์ฌ๋ ๋ฐฉ๋ฒ
if let
- ์กฐ๊ฑด ๋ง์กฑํ์ง ์์ ๊ฒฝ์ฐ Early Exit์ด ํ์ํ ๊ฒฝ์ฐ
guard let
- ์กฐ๊ฑด์ ๋ง์กฑํ์ง ์๋๋ผ๋ ์งํ๋์ด์ผ ํ๋ ๊ฒฝ์ฐ
- Force unwrapping
- ์์๋ฅผ ๋ถ์๊ณ ๊ฐ์ ๊ฐ์ ธ์ด
- ๊ฐ์ ์กด์ฌ๊ฐ ํ์คํ ๊ฒฝ์ฐ ์ฌ์ฉ
- ๊ฐ์ด ์๋ค๊ณ ๊ฐ์ ํ๊ธฐ ๋๋ฌธ์ ์์ ๊ฒฝ์ฐ ๋ฐํ์ ์๋ฌ
let a = b! + 10
Assert
- Debugging์ ์ํด ๋ฃ๋ ๋ฌธ
- ํน์ ํจ์์ ๊ฒฐ๊ณผ ์์ฒด๊ฐ ์ํ๋ ๊ฒฐ๊ณผ์ ๋ง๋์ง ํ์ธํ๊ธฐ ์ํจ
- ๋ณดํต Test ์ฝ๋์์ ์์ฃผ ์ฌ์ฉํจ