<div align="center">
<h1>๐ง JuiceMaker</h1>
</div>
## ๐ Preview

## ๐ Key Experience
* ํ์
์ ์บก์ํ/์๋ํ
* ๋งค์๋์ ๊ธฐ๋ฅ๋จ์ ๋ถ๋ฆฌ
* Alert Controller ํ์ฉ
* Stepper ํ์ฉ
* Modality ํ์ฉ
* ํ๋ฉด ์ฌ์ด์ ๋ฐ์ดํฐ ๊ณต์
* Auto Layout
## โ๏ธ ์ค๋ช
| name | type | ์ญํ ๊ณผ ์ฑ
์ |
|:------------------------- | ----------- |:----------------------------------- |
| JuiceMaker | struct | ๊ณผ์ผ์ ์ฌ๊ณ ๋ฅผ ๊ฐ์ง๊ณ ์ฅฌ์ค ์ ์กฐ |
| Juice | enum | ์ฅฌ์ค ์ข
๋ฅ, ์ข
๋ฅ์ ๋ฐ๋ฅธ ๋ ์ํผ |
| FruitStore | final class | ๊ณผ์ผ์ ์ฌ๊ณ ๊ด๋ฆฌ |
| JuiceMakerError | enum: Error | ์ฌ๊ณ ๊ด๋ จ Error |
| JuiceMakerViewController | final class | ์ฃผ๋ฌธ ๋ฒํผ์ผ๋ก ์ฃผ๋ฌธ์ ๋ฐ์ ์ฃผ์ค ์ ์กฐ, ์ฌ๊ณ ์์ |
| UpdateStockViewController | final class | ๊ณผ์ผ์ ์ฌ๊ณ ๋ฅผ ์์ |
## ๐ค STEP 1์ ๊ณ ๋ฏผ
1. FruitStore๋ฅผ `final class` VS `struct`?
- ์ฌ๊ณ ๋ฅผ ๊ด๋ฆฌํ๋ ์์ฑ์ ํน์ฑ์ ์ถํ ์ฌ๋ฌ ๊ฐ์ JuiceMaker๊ฐ ์๊ธด๋ค๋ฉด
์ฌ๊ณ ๊ด๋ฆฌ๋ฅผ ํจ๊ป ํ ์๋ ์์ ๊ฒ ๊ฐ์ Singleton ๊ตฌํ๋ ๊ณ ๋ คํ์์ต๋๋ค.
- final class์ struct๋ฅผ ๊ณ์ ๊ณ ๋ฏผํ๋ค๊ฐ ๊ฒฐ๊ตญ ๊ฒฐ๋ก ์ ๋ด๋ฆฌ์ง ๋ชปํ๋๋ฐ์,
์ด๋ค ๊ฑธ๋ก ๊ตฌํํด๋ ๋ฌธ์ ๊ฐ ๋์ง ์์ ๊ฒ ๊ฐ์์์.
ํน์ ์ด ์ค์ ๋ฌธ์ ๊ฐ ๋๋ ์ ํ์ง๊ฐ ์๋์ง, ํน์ ๋ ๋์ ์ ํ์ง๊ฐ ์๋ค๋ฉด ๊ทธ ์ด์ ๊ฐ ๊ถ๊ธํฉ๋๋ค!
```swift
๐ถ๐ถ๐ถ
๊ฒฐ๋ก ์ง์ผ์ ๊ฒ ์ฒ๋ผ ํ์ฌ ์คํ
๋จ๊ณ์์๋ ๋๊ฐ์ง ๋ชจ๋ ์ฌ์ฉํด๋ ๊ด์ฐฎ์ต๋๋ค :)
์ผ๋จ ์ ์งํ๊ณ , ๋ค์ ์คํ
์์ ๋ณ๊ฒฝํด์ผํ ๊ฒ ๊ฐ๋ค๋ฉด ๊ทธ ๋ ๋ฐ๊ฟ๋ ๋ ๊ฒ ๊ฐ์์.
๋์ค์ ์ฑ๊ธํค์ ์ฌ์ฉํ ๋์๋ ์ฅ๋จ์ ์ ์ ๊ณ ๋ คํด๋ณด์๊ณ ์ฌ์ฉํ๋๊ฒ ์ข์ต๋๋ค.
```
2. '๊ฐฏ์'๋ฅผ ๋ํ๋ด๋ ๋ณ์๋ช
์ง๊ธฐ
- JuiceMaker์์ requiredQuantity, FruitStore์์ ๊ณผ์ผ์ ์ฌ์ฉํ๊ฑฐ๋ ์ถ๊ฐํ ๋
quantity๋ฅผ ์ฌ์ฉํ๋๋ฐ ๋ ์ข์ ๋ณ์๋ช
์์๊น์ ~?
```swift
๐ถ๐ถ๐ถ
quantity๋ ์์ ์๋ฏธํด์ ๊ฐ์๋ฅผ ๋ํ๋ด๊ธฐ์๋ ์ ๋งคํ ๊ฒ ๊ฐ๋ค์. ๋ค๋ฅธ ๋ณ์๋ช
์ผ๋ก ๊ฐ์ ํด๋ณด๋ฉด ์ข์ ๊ฒ ๊ฐ์ต๋๋ค!
```
## ๐ค STEP 2์ ๊ณ ๋ฏผ
### 1. IBOutlet Collection
๊ฐ ๊ณผ์ผ์ ์ฌ๊ณ ๋ฅผ ๋ํ๋ด๋ Label 5๊ฐ๋ฅผ ํ๋์ฉ ์ฐ๊ฒฐํ์ฌ ์ฌ์ฉํ๋ ๊ฒ๋ณด๋ค
์ฌ๋ฌ Button์ ํ๋์ action์ผ๋ก ์ฐ๊ฒฐํ๋ ๊ฒ์ฒ๋ผ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ ๊ณ ๋ฏผํ๊ฒ ๋์์ด์!
* IBOutlet Collection๋ฅผ ์ ์ฉํ์ฌ ๋ฐฐ์ด๋ก ๋ฌถ์ธ ๋ ์ด๋ธ๋ค์ ๊ฐ ์ธ๋ฑ์ค์ `FruitStore`์ `enum Fruit` `raw value`๋ฅผ ์ผ์น์์ผ ๊ฐ ๊ณผ์ผ์ ๋ ์ด๋ธ์ ๋ณ๊ฒฝ๋ ์ฌ๊ณ ๋ฅผ ํ์ํ์์ต๋๋ค.
* ๊ณ ๋ฏผ๋๋ ๊ฒ์ ๋ ์ด๋ธ์ ์ธ๋ฑ์ค๊ฐ ์ด๋์๋ ์ ํํ ํ์๋์ง ์์ ์ฝ๋๋ฅผ ๊ตฌํํ ์ ํฌ๋ง ์์๋ฅผ ์ ์ ์๊ธฐ ๋๋ฌธ์ ์ถํ ์ ์ง ๋ณด์๊ฐ ์ด๋ ค์ธ ๊ฒ ๊ฐ๋ค๋ ์ฐ๋ ค๊ฐ ๋์์ด์.
* Label์ enum Fruit์ raw value์ ๊ฐ์ ๊ฐ์ผ๋ก tag๋ฅผ ์ฃผ๋ ๊ฒ๋ ๋ฐฉ๋ฒ ์ค ํ๋๋ก ๊ณ ๋ คํด๋ณด์๋๋ฐ,
์ง๊ธ ์ด ์ฝ๋๋ก๋ ๊ด์ฐฎ์์ง, tag๋ฅผ ์ฃผ๋ ๊ฒ์ด ํด๊ฒฐ์ฑ
์ด ๋ ์ ์์์ง, ๋ ๋ค๋ฅธ ์๊ฒฌ์ด ์์ผ์ ์ง ๊ถ๊ธํฉ๋๋ค!
```swift
๐ถ๐ถ๐ถ
๋ง์ํด์ฃผ์ ๊ฒ ์ฒ๋ผ ์ ์ง/๋ณด์์ ์ทจ์ฝํด์ง๋๋ค. tag๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ์ฌ์ค์ enum์ Int rawValue๊ฐ์ UIView์๊ฒ ์ฎ๊ธฐ๋ ๊ฒ ๋ฟ์ด๋ผ ๋๊ฐ์ ์ด์๊ฐ ๋ฐ์ํด์.๐ฅฒ
IBOutlet Collection์ ์ฌ์ฉํ๊ณ ์ถ๋ค๋ฉด, ๊ณผ์ผ ๋ฐ์ดํฐ collection์ ๋ฐ๋ก ๋ง๋ค์ด์
์๋ฃ์ index๋ฅผ ์ด์ฉํ๋๊ฒ ํ์ฌ ๋ฏธ์
์์๋ ์ ํฉํ ๊ฒ ๊ฐ์์.
ํ์ฌ ๋ฏธ์
์์๋ ์คํ ๋ฆฌ๋ณด๋๋ฅผ ์ฌ์ฉํด์ผํ๊ณ ์ฃผ๋ฌธ ๋ฒํผ์ด ๋ฑ ๋ง๊ฒ ๋จ์ด์ ธ ์์ด์,
IBOutlet Collection์ ์ฌ์ฉํ๊ธฐ ์ด๋ ค์ธ ๊ฑฐ๋ ๋๋ฌด ์ ๊ฒฝ์ฐ์ง ์์๋ ๋ฉ๋๋ค!
```
### 2. Modally vs Show
ํ๋ฉด ์ด๋ ๋ฐฉ์์ ๋ํด ๊ณ ๋ฏผ์ ํ๋๋ฐ์,
์ฒ์์ ์ฌ๊ณ ๋ฅผ ์์ ํ ๋๋ง ์ ์ ๋ณด์ด๋ ํ๋ฉด์ผ๋ก ์๊ฐํ์ฌ Modally ๋ฐฉ์์ผ๋ก ๊ตฌํํ๋ ค๋ค๊ฐ
* ์ด ํ๋ก์ ํธ์ ์คํ ๋ฆฌ๋ณด๋๋ ๊ฐ๋ก๋ก ๊ณ ์ ์ด ๋์ด ์๊ณ , ๊ฐ๋ก ํ๋ฉด์์์ Modally ๋ฐฉ์์ ์๋ ํ๋ฉด์ผ๋ก ๋์๊ฐ๋๋ก ํฐ์นํ ์ ์๋ ๋น ๊ณต๊ฐ์ด ์ ๊ณต๋์ง ์์์ ๋ฒํผ์ ๋ง๋ค์ด์ผ ํ๊ธฐ ๋๋ฌธ์ ์๋์ผ๋ก backButton์ด ์ ๊ณต๋๋ Show ๋ฐฉ์์ผ๋ก ๊ตฌํํ๊ฒ ๋์์ต๋๋ค.
STPE 3์์ '๋ซ๊ธฐ' ๋ฒํผ์ ๊ตฌํ์ ํด์ผ ํด์ ๋ค์ Modally ๋ฐฉ์์ผ๋ก ๋ณ๊ฒฝ์ ์๊ฐํ๊ณ ์๋๋ฐ
* ์ ํฌ๋ ๊ฐ๋ก ํ๋ฉด ๊ณ ์ ๊ณผ ๋ฒํผ ์์ฑ์ ๊ธฐ์ค์ผ๋ก ๋ฐฉ์์ ๋๋ ์ฌ์ฉํ์ง๋ง, ์ค์ ์ฌ์ฉํ ๋๋ ์ด๋ค ๊ธฐ์ค์ผ๋ก ๋ฐฉ์์ ์ ํํ๋ ๊ฒ ์ข์์ง ๊ถ๊ธํฉ๋๋ค!
```swift
๐ถ๐ถ๐ถ
์๋ฌด๋๋ ๋ซ๊ธฐ ๋ฒํผ์ด ์์ด์ UX๋ฅผ ๊ณ ๋ คํ์ ๋์๋ Modally๊ฐ ๋ ์์ฐ์ค๋ฝ๊ฒ ๋๊ปด์ง๋ ๊ฒ ๊ฐ์์.
ํ์ง๋ง ํฌ๊ฒ ์๊ด์์ผ๋ ๋๊ฐ ๋ค ํด๋ด์ ์ฐจ์ด์ ์ ์์๋ณด๋ ๊ฒ๋ ์ข์ ๊ฒ ๊ฐ๋ค์ ๐
```
### 3. ๊ณ ์ฐจํจ์
FruitStore์์ ๊ณผ์ผ์ ์ฌ๊ณ ๋ฅผ [Fruit: UInt] ํํ์ ๋์
๋๋ฆฌ๋ก ๊ด๋ฆฌํ์๋๋ฐ์,
์ฒ์์๋ guard๋ฌธ์ ํ์ฉํ์ฌ Optional binding์ ์คํจํ์ ๋ throw notExistFruit๋ก ์์ธ์ฒ๋ฆฌ๋ฅผ ํ์ต๋๋ค. ํ์ง๋ง, ์ค์ ๋ก๋ ๋ฐ์ํ ์ผ์ด ์๋ ์๋ฌ๋ผ์ ์กฐ๊ธ ๋ถํ์ํ๋ค๊ณ ๋๊ปด์ ๊ณ ์ฐจํจ์์ธ filter๋ก ๋ณ๊ฒฝํ์ด์.
#### filter
* ์ฅ์ : ๋ถํ์ํ Error๋ฅผ ๋ง๋ค์ง ์์๋ ๋จ
* ๋จ์ : ์๊ฐ๋ณต์ก๋ O(๊ณผ์ผ์ ๊ฐ์)
#### guard๋ฌธ
* ์ฅ์ : ์๊ฐ๋ณต์ก๋ O(1)
* ๋จ์ : Optional ์ฒ๋ฆฌ๋ฅผ ์ํด ๋ถํ์ํ Error๋ฅผ ๋ง๋ค์ด ๋์ ธ์ค์ผํจ
๊ณผ์ผ์ ๊ฐ์๊ฐ ๋ง์ง ์์ ์ . ๋ถํ์ํ Error๋ฅผ ์ํด ์ฒ๋ฆฌํด์ฃผ์ง ์๊ณ , ์ฝ๋๋ฅผ ์กฐ๊ธ ๋ ๊น๋ํ๊ฒ ์์ฑํ ์ ์๋ ์ . ๋๋ฌธ์ filter๋ฅผ ์ฌ์ฉํ๋๋ฐ์.
guard๋ฌธ์ด ๋ ์ข์์ง. ์๋๋ฉด ๋ ์ข์ ๋ฐฉ๋ฒ์ด ์๋์ง. ์ฝ๋ฆฌ์ ์๊ฒฌ์ ๋ฃ๊ณ ์ถ์ต๋๋ค ๐ถ
```swift
๐ถ๐ถ๐ถ
๋ง์ํ์ ๋๋ก ํ์ฌ ๊ตฌ์กฐ์์๋ guard๊ฐ ๋ถํ์ํด๋ณด์ด๋ค์!
ํ์ฌ ๋ฏธ์
์กฐ๊ฑด์ ๊ณ ๋ คํ๋ฉด filter ์ฌ์ฉ์ ์ข์ต๋๋ค! ๋ค๋ง ๊ฐ๋
์ฑ์ด ์กฐ๊ธ ๋จ์ด์ ธ์
$0.key ๋ $0.value๊ฐ ๋ฌด์์ ๋ปํ๋์ง ์ ๋ฆฌํด์ฃผ๋ฉด ์ข์ ๊ฒ ๊ฐ๋ค์ :)
```
## ๐ค STEP 3์ ๊ณ ๋ฏผ
### 1. `IBOutlet` vs `IBOutlet Collection`
STEP2์์๋ ์ฅฌ์ค์ ์กฐ ํ๋ฉด์์ ๊ณผ์ผ ์ฌ๊ณ ์ ๋ํด IBOutlet์ ๋ฐฐ์ด์ธ IBOutlet Collection์ ์ฌ์ฉํ์๋๋ฐ์,
* ์ค์ ๊ณผ์ผ ์ฌ๊ณ ์ ์ฌ๊ณ ๋ ์ด๋ธ๊ณผ ์ง์ ์ ์ผ๋ก ์ฐ๊ฒฐํ๊ธฐ ํ๋ ์
* ์ถํ ์ ์ง๋ณด์๋ฅผ ์๊ฐํ์ ๋, tag๋ก๋ ์ถฉ๋ถํ์ง ์์ ์
์ ์ด์ ๋ก JuiceMakerViewController, UpdateJuiceViewController์์ ๊ฐ ์ฌ๊ณ ๊ด๋ จ ๋ ์ด๋ธ๋ค์ IBOutlet ์ฌ๋ฌ๊ฐ๋ก ์ฐ๊ฒฐํ์ฌ ๊ตฌํํ๊ณ ๊ธฐ์กด์ IBOutlet Collection๋ IBOutlet์ผ๋ก ๋ณ๊ฒฝํ์ต๋๋ค.
`*์ฅฌ์ค ์ฃผ๋ฌธ` ๋ฒํผ์ ์คํ ๋ฆฌ๋ณด๋์ ์ ํ์๋ ๋ฒํผ text์ ์์กด์ ์ด๋ผ๋ ๋จ์ ์ด ์์ง๋ง ์ผ๋จ์ IBOutlet Collection์์ ๋ณ๊ฒฝํ์ง ์์์ต๋๋ค.
์คํ ๋ฆฌ๋ณด๋๋ฅผ ์ฌ์ฉํ๋ฉด์ ๊ฐ์ฅ ํ๋ค์๋ ๋ถ๋ถ์ด ์ฝ๋๊ฐ ์คํ ๋ฆฌ๋ณด๋์ ์์กด์ ์ด ๋๋ค๋ ๋ถ๋ถ์ด์๋๋ฐ์,
์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์๋ ์ด๋ ํ ๋ฐฉ๋ฒ๋ค์ด ์๋์ง ๊ฐ์ด๋๋ผ์ธ์ด๋ผ๋ ์ฃผ์ค ์ ์์ผ์ค๊น์?
```swift
๐ถ๐ถ๐ถ
์ด๋ฒ์ UpdateJuiceVC์์ IBOutlet์ผ๋ก ๋ค ๋ถ๋ฆฌํ์ ๋ถ๋ถ ์ ๊ตฌํํ์
จ์ต๋๋ค! ๐
์ฅฌ์ค ์ฃผ๋ฌธ ๋ฒํผ๊ฐ์ ๊ฒฝ์ฐ์๋ ํ์ฌ๋ ์คํ ๋ฆฌ๋ณด๋ ์์กด๋๊ฐ ๋๊ธฐ ๋๋ฌธ์ ๋ชจ๋ ๋ถ๋ฆฌํ๋๊ฒ ์ ๋ ์ข์๋ณด์
๋๋ค.
์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์๋ ๋ทฐ๋จ์ ์ฝ๋๋ก ๋ง๋ค์ด์ ์ฒ๋ฆฌํด์ผํฉ๋๋ค.
๋ชจ๋ ์ฝ๋๋ก ์์ฑ
์ฝ๋ + XIB
์คํ ๋ฆฌ๋ณด๋ + ์ฝ๋
๋ฅผ ์ฌ์ฉํด์ ์์กด๋๋ฅผ ๋ฎ์ถฐ์ ํ๋์ ๋ฉ์๋๋ก ์ฌ๋ฌ ๋ฒํผ์ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ์๋ํ ์๋ ์์ด๋ณด์
๋๋ค!
```
### 2. ์ฌ๊ณ ์ถ๊ฐ ํ๋ฉด์์ ๋ซ๊ธฐ ๋ฒํผ์ ๋๋ ์ ๋, ์ด๊ธฐ ํ๋ฉด์ ๋ณ๊ฒฝ๋ ์ฌ๊ณ ๊ฐ ๋ฐ์๋์ง ์๋ ๋ฌธ์ ์
* ์ฌ๊ณ ์ถ๊ฐ ํ๋ฉด์์ ๋ซ๊ธฐ ๋ฒํผ์ ๋๋ฅด๋ฉด `fruitStore`์ ์ ์ฅ๋์ด ์๋ ์ฌ๊ณ ๊ฐ ์ด๊ธฐ ํ๋ฉด์ ๋ฐ์์ด ๋์ง ์๋ ๋ฌธ์ ์ ์ด ๋ฐ์ํ์ฌ
์๋ ๋ฐฉ๋ฒ์ ํตํด ํด๊ฒฐ์ ํ๊ธด ํ๋๋ฐ, ํน์ ๋ ์ข์ ๋ฐฉ๋ฒ์ด ์์๊น์?
```swift
override func viewWillAppear(_ animated: Bool)
```
```swift
updateStockViewController.modalPresentationStyle = .fullScreen
```
```swift
๐ถ๐ถ๐ถ
์ง๊ธ viewWillAppear์์ ๊ตฌํํ ๋ถ๋ถ๋ ๊น๋ํ๊ฒ ์ ๊ตฌํํ์
จ์ต๋๋ค!
protocol๋ก ์ ํธ๋ ๋ฐ์ดํฐ ์ ๋ฌ์ ํ๋ ๋ฐฉ๋ฒ๋ ์์ต๋๋ค :)
```
## โญ๏ธ ๋ฐฐ์ฐ๊ณ ๋๋ ์
### โจ iyeah
[๋ชฉํ]
- [x] GIt๊ณผ ์นํด์ง๊ธฐ
-> Xcode์์ Git์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ฐฐ์ ๋ค
- [x] Access Control, Nested Types, Type casting, Error Handling ์ฒ์ ์ฌ์ฉํด ๋ณด๊ธฐ
-> ์ฌ์ฉ์ ํ์ง๋ง ๋ ๋ง์ ๊ณต๋ถ๊ฐ ํ์ํ๋ค
- [ ] ๋ฌธ์ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๋ํด ํผ์์๋ ๊ณ ๋ฏผํด ๋ณด๊ธฐ
- [x] June์๊ฒ ๋ง์ด ๋ฐฐ์ฐ๊ณ ๋์์ด ๋๊ธฐ ์ํด ๋
ธ๋ ฅํ๊ธฐ
-> ๋ง์ด ๋ฐฐ์ด ๊ฑด ํ์คํ๋ฐ ๋์์ ๋์ง ๋ชปํ๋ ๊ฒ ๊ฐโฆ ๐ฅน
[๋ฐฐ์ด ๊ฒ]
* ๋งค์๋์ ๊ธฐ๋ฅ๋จ์ ๋ถ๋ฆฌ
* ์๋ฌ ์ฒ๋ฆฌ
* self ํค์๋ ์ฌ์ฉ ์ผ์ด์ค
* Modality
* Alert Controller
[๋ ๊ณต๋ถํด์ผ ํ ๊ฒ]
* Unit Test
* Naming
* Access Control
* ViewController Life Cycle
[๋๋ ์ ]
* ์ผ๋จ ์์ฃผ ๋ฉ์ง ํ์ `june`์ ๋ง๋ฌ๋ค.
์ ํ์ด ํํํด๋ด์ง ๋ชปํ ๋์ ์๊ฐ๊ณผ ์๊ฒฌ์ ๊ฒฝ์ฒญํด์ฃผ๊ณ ์ฌ๋ฌ ๋ถ๋ถ์์ ๋ง์ ๊ฐ๋ฅด์นจ์ ๋ฐ์๋ค.
์ฝ๋ ์ปจ๋ฒค์
, ์๋ฌ ์ฒ๋ฆฌ, ์ ๋ ํ
์คํธ, git ์ฌ์ฉ๋ฒ, ์์ฒญ๋ ์์ ๋จ์ถํค๊น์ง!
๋ด๊ฐ ๋ ์ ์ ๋ฐ์ง ์ฐจ๋ฆฌ๊ณ ํก์ํ๋ค๋ฉด ์ข์์ ๊ฑธ ํ๋ ์์ฌ์๋ ๋จ๋๋ค....โจ
* ๋ ๊ณต๋ถํ๊ณ ๋ ๋ฌ๋ ค๋ค์์ด์ผ ํ๋ค๋ ์๊ฐ์ด ๋ ๋ค.
๋๋ฑ ๋๋ฑ ์ํ๋ ํ์์๊ฒ ์์งํ์ฌ ์์ฑํ์ง ์์๋๊ฐ ํ๋ ์ฃ์ฑ
๊ฐ์ ๋จ์น๊ธฐ ์ด๋ ต๋ค.
๋๋ถ๋ถ์ ์ธ์
๋ค์ ํ๋ก์ ํธ ์ง๋์ ๋ง์ถฐ ์งํ๋๊ธฐ ๋๋ฌธ์
ํ๋ก์ ํธ๋ฅผ ์งํํ๋ฉฐ ์ธ์
์์ ๋ฐฐ์ด ๊ฒ์ ์ ์ฉํ๋ฉฐ ๋์๊ฐ์ผ ํ๋ค.
์ด๋ฏธ ๋์ณ๋ฒ๋ฆฐ ๋ถ๋ถ๋ค์ ๊ผญ ์๊ฐ๋ด์ ๋ณต์ตํ๋๋ก ํ๊ณ , ์์ผ๋ก๋ ์ง๋์ ์ ๋ง์ถฐ ์์ต๊ณผ ์ ์ฉ์ ํด์ผ๊ฒ ๋ค.
### ๐ก june
* Swift์์ ์ถ๊ตฌํ๋ ๋ช
๋ฃ์ฑ๊ณผ ์ฝ๋์ ๊ฐ๋
์ฑ์ ์ํ ๊ฐ๊ฒฐ์ฑ์ ๋์์ ๋ง์กฑ์ํค๋ ๊ฒ์ ์๋นํ ์ด๋ ค์ด ์ผ์ด๊ณ Swift ๊ทธ๋ง๋๋ ๋ ๊น์ง ๊ฐ์ฅ ํฐ ์์ ๊ฐ ๋์ง ์์๊น ์ถ๋ค.
* IBAction, property, method ๊ฐ๊ฐ ๋ค์ด๋ฐ ์ปจ๋ฒค์
์ด ์์ผ๋ฉฐ ๋ฐ๋ก ์๊ฐ์ ๋ด์ด ์ด์ ๋ํ ์ ๋ฆฌ๋ฅผ ํด์ผํ ๊ฒ ๊ฐ๋ค๊ณ ๋๊ผ๋ค. (๋ง์ ํ๋ก์ ํธ ์งํํ๊ณ ์์ ๋๋ ๊ตฌํํ๊ธฐ ๋ฐ์ ํ
๋ ๐ฅฒ)
* ์คํ ๋ฆฌ๋ณด๋๋ฅผ ์ฌ์ฉํ๋ฉด ํ์
๋ฐ ์ ์ง๋ณด์๊ฐ ํ๋ค์ด์ง๋ค๋ ์ฌ์ค์ ๋ง์ฐํ๊ฒ ์๊ณ ์์๋๋ฐ, ์ด๋ฒ ํ๋ก์ ํธ๋ฅผ ์งํํ๋ฉด์ ๊ทธ ์ด์ ๋ฅผ ์กฐ๊ธ์ด๋๋ง ์ฒด๊ฐํด๋ณธ ๊ฒ ๊ฐ๋ค๋ ์๊ฐ์ด ๋ ๋ค. ์ฝ๋๊ฐ ์คํ ๋ฆฌ๋ณด๋์ ์์กด์ ์ด ๋๋ค๋๊ฐ... ๋ฐฐ์ด(IBOutlet Collection)๋ก ์ ์ธํด๋ ์ธ๋ฑ์ค ์์๋ฅผ ์ ํ๊ธฐ ํ๋ค๋ค๋๊ฐ... ์ฝ๋๋ ์ฃผ์์ ์ฌ์ฉํ์ฌ ์๋๋ฅผ ๋๋ฌ๋ผ ์ ์์ง๋ง ์คํ ๋ฆฌ๋ณด๋๋ ๊ทธ๋ด ์ ์๋ค๋ ๊ฒ์ด ๊ฐ์ฅ ํฐ ๋จ์ ์ด์ง ์์๊นํ๋ ์๊ฐ์ด ๋ ๋ค.