๐ป iOS
Bounds vs Frame ?
Bounds
- ๋ณธ์ธ์ ์ขํ๊ณ ๊ธฐ์ค
- The bounds rectangle, which describes the view's location and size in its own coordinate system.)
Frame
- superview์ ์ขํ๊ณ ๊ธฐ์ค
- The frame rectangle, which describes the view's location and size in its superview's coordinate system.)
์ค์ ๋๋ฐ์ด์ค๊ฐ ์์ ๊ฒฝ์ฐ ๊ฐ๋ฐ ํ๊ฒฝ (์๋ฎฌ๋ ์ดํฐ ํ๊ฒฝ) ์์ ํ ์ ์๋ ๊ฒ ?
ํ๋์จ์ด
- ์นด๋ฉ๋ผ
- ๋ง์ดํฌ
- ๋ ์๊ฐ๋ฝ์ผ๋ก Zoom In / Zoom Out (๋ง์ฐ์ค๋ก ์ ์ค์ณ๋ฅผ ์ทจํด์ผ ํ๊ธฐ ๋๋ฌธ)
- ์ ํ
- ์ผ์ (๊ฐ์๋, GPS, ๊ฐ์๊ณ, ์ฃผ๋ณ๊ด)
API
- ํธ์ ์๋ฆผ ์ก์์
- Handoff
- MessageUI
- Face ID (์ง์ ์ผ๊ตด ์ธ์์ ์๋์ง๋ง ์ธ์ ์ฒ๋ฆฌ ์ฌ๋ถ๋ ์ค์ ๊ฐ๋ฅ)
- ๋ธ๋ฃจํฌ์ค
etc
- CPU๋ ๋ฉ๋ชจ๋ฆฌ ๋ถ๋ด๋๋ ์ ๋ ์์๋ณด๊ธฐ (Mac์ด ์์ดํฐ๋ณด๋ค ์ฑ๋ฅ์ด ์ข๊ธฐ ๋๋ฌธ)
- ๋คํธ์ํฌ ์๋ ํ
์คํธ
์ฑ์ ์ฝํ
์ธ ๋ ๋ฐ์ดํฐ ์์ฒด๋ฅผ ์ ์ฅ / ๋ณด๊ดํ๋ ํน๋ณํ ๊ฐ์ฒด๋ฅผ ๋ฌด์์ด๋ผ๊ณ ํ๋๊ฐ ?
Core Data
- ๋ณต์กํ๊ณ ํฐ ๋ฐ์ดํฐ ์ ์ฅ์ ์ ํฉ
- ์ฑ์ ์๊ตฌ ๋ฐ์ดํฐ ์ ์ฅ์ ๋ง์ด ์ฌ์ฉ
- ํ
์ด๋ธ์ ์ฌ์ฉํ์ง ์๊ณ ๊ฐ์ฒด๋ฅผ ์์ฑํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ด์ํ๊ธฐ ๋๋ฌธ์ ์ ์ฅ ๊ณต๊ฐ๊ณผ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ง์ด ํ์๋ก ํ์ง๋ง, ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋ ์๋๋ ๋น ๋ฅด๋ค.
- ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์๋
UserDefaults
- ๊ฐ๋จํ ์ ๋ณด (ex. ์๋ ๋ก๊ทธ์ธ ์ฌ๋ถ, ์์ด๋, ์ฑ ์ค์ ๋ฑ ..) ์ ์ฅ์ ์ ํฉ
- [Key : Value] ์์ผ๋ก ์ ์ฅ
SQLite
- C์ธ์ด๋ก ์์ฑ๋์ด ์๊ธฐ ๋๋ฌธ์ ๋งค์ฐ ๊ฐ๋ฒผ์
- ์ ์ฒด ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋์คํฌ ํ์ผ 1๊ฐ์ ์ ์ฅ
- ๋ค์ํ ์ด์์ฒด์ (iOS, Android, Linux, Window) ์์ ์ฌ์ฉ
Realm
- ๋ชจ๋ฐ์ผ์ ์ต์ ํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
- SQLite, Core Data๋ณด๋ค ์๋๊ฐ ๋น ๋ฅด๊ณ , ์ฑ๋ฅ์ด ์ฐ์ํจ
- ์ฉ๋ ์๊ด์์ด ์๋, ์ฑ๋ฅ์ด ์ ์ง๋จ
์ฑ ํ๋ฉด์ ์ฝํ
์ธ ๋ฅผ ํ์ํ๋ ๋ก์ง๊ณผ ๊ด๋ฆฌ๋ฅผ ๋ด๋นํ๋ ๊ฐ์ฒด๋ฅผ ๋ฌด์์ด๋ผ๊ณ ํ๋๊ฐ ?
ViewController
- ๋ฐ์ดํฐ ๋ณ๊ฒฝ์ ๋ฐ๋ฅธ View์ ๋ด์ฉ ์
๋ฐ์ดํธ
- View์ ์ฌ์ฉ์ ์ฌ์ด์ ์ํธ ์์ฉ์ ๋ํ ์๋ต
- View ํฌ๊ธฐ ์กฐ์ ๋ฐ ์ ์ฒด ๋ ์ด์์ ๊ด๋ฆฌ
- ๋ชจ๋ ์ฑ์ ํ๋์ด์ ํฌํจ
App thinning ?
- ์ฑ์ด ๋๋ฐ์ด์ค์ ์ค์น๋ ๋, ์ฑ ์คํ ์ด์ ์ด์์ฒด์ ๊ฐ ๋๋ฐ์ด์ค์ ํน์ฑ์ ๋ง๊ฒ ์ค์น๋๋๋ก ํ๋ ์ค์น ์ต์ ํ ๊ธฐ์
- ๋์คํฌ ์ฌ์ฉ์ ์ต์ํํ๊ณ , ๋ค์ด๋ก๋ ์๊ฐ์ ๋จ์ถํ ์ ์์
- ์ข
๋ฅ : slicing, bitcode, on-demand resource (์ฃผ๋ฌธํ ๋ฆฌ์์ค)
Slicing
- ์ฑ์ด ์ง์ํ๋ ์ฌ๋ฌ ๋๋ฐ์ด์ค์ ๋ํด ๊ฐ๊ฐ ์กฐ๊ฐ ์ฑ ๋ฒ๋ค์ ์์ฑํ๊ณ , ํด๋น ๋๋ฐ์ด์ค์ ๊ฐ์ฅ ์ ํฉํ ์กฐ๊ฐ์ ์ ๋ฌํ๋ ๊ธฐ์
- ๊ฐ๋ฐ์๊ฐ App store connect์ ์
๋ก๋ํ๋ฉด ์ฑ ์คํ ์ด์์ ๋๋ฐ์ด์ค ํน์ฑ์ ๋ฐ๋ผ ๋ค์ํ ๋ฒ์ ์ ์กฐ๊ฐ๋ค์ ์์ฑํ๊ณ , ์ฌ์ฉ์๊ฐ ๊ทธ ์กฐ๊ฐ๋ค ์ค์์ ๊ฐ์ฅ ๋ง๋ ์กฐ๊ฐ์ ๋ค์ด๋ก๋๋ฐ๋ ๊ฒ
Bitcode
- ๊ธฐ๊ณ์ธ์ด๋ก ๋ฒ์ญ๋๊ธฐ ์ ๋จ๊ณ์ ์ค๊ฐํํ
On-demand Resource
- ํ์ํ ๋ ๋ค์ด๋ก๋๋ฐ๋ ๊ฒ
- ์ฌ์ฉ์์ ์ ํ์ ๋ฐ๋ผ ๋ค์ด๋ก๋๋ฐ๋ ๊ฒ
์ฑ์ด ์์ํ ๋ main.c์ ์๋ UIApplicationMain ํจ์์ ์ํด์ ์์ฑ๋๋ ๊ฐ์ฒด๋ ๋ฌด์์ธ๊ฐ ?
@main ?
- ํ์
๊ธฐ๋ฐ์ ํ๋ก๊ทธ๋จ ์ง์
์ (Type-Based Program Entry Points)
- ํ๋ก๊ทธ๋จ ์์ํ ๋๋ฅผ ์ง์ ํด์ฃผ๋ ํค์๋
- AppDelegate ํด๋์ค (์ฑ์ด ์์๋๋ ์ง์
์ ์ ์๋ ค์ฃผ๊ณ , ์ฑ์ ์
๋ ฅ ์ด๋ฒคํธ๋ฅผ ์ ๋ฌํ๋ ๋ฐ๋ฃจํ๋ฅผ ์์ฑํ๋ ์ญํ ์ ํจ) ์ ์์ชฝ ์ ์ ๋ถ๋ถ์์ ๋ณผ ์ ์๋ค.
- Swift 5.3 ver. ๋ถํฐ ์ฌ์ฉํ๋ ํค์๋ (์ด์ ๋ฒ์ ๊น์ง๋ @UIApplicationMain์ด๋ผ๋ ํค์๋๋ฅผ ์ฌ์ฉํ๋ค.)
์ฑ์ด foreground ์ ์์ ๋์ background ์ ์์ ๋ ์ด๋ค ์ ์ฝ์ฌํญ์ด ์๋์ ?
Foreground ์ ์์ ๋
- ๋ฉ๋ชจ๋ฆฌ ๋ฐ ๊ธฐํ ์์คํ
๋ฆฌ์์ค์ ๋์ ์ฐ์ ์์๋ฅผ ๊ฐ์ง๋ฉฐ, ์์คํ
์ ์ด๋ฌํ ๋ฆฌ์์ค๋ฅผ ์ฌ์ฉํ ์ ์๋๋ก ํ์์ ๋ฐ๋ผ background ์ฑ์ ์ข
๋ฃํ๋ค.
Background ์ ์์ ๋
- ๊ฐ๋ฅํ ์ ์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์ฌ์ฉํด์ผ ํ๋ค.
์ํ ๋ณํ์ ๋ฐ๋ผ ๋ค๋ฅธ ๋์์ ์ฒ๋ฆฌํ๊ธฐ ์ํ AppDelegate ๋ฉ์๋๋ค ?
application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey:Any]?) -> Bool
- ์ฑ์ ์คํํ๋ฉด ํธ์ถ๋๋ ๋ฉ์๋
- 'launchOptions' ๋ผ๋ ํ๋ผ๋ฏธํฐ์ ์ฑ์ด ์คํ๋ ์ด์ ๋ฑ์ ํฌํจํ๋ค.
applicationDidBecomeActive(_ application: UIApplication)
- ์ฑ์ด ํ๋ฉด์ ๋ฌ ์ดํ ์คํ๋๋ ๋ฉ์๋
- ์ฑ์ด Background ์ํ์๋ค๊ฐ Foreground ์ํ๋ก ๋ฐ๋ ๊ฒฝ์ฐ์๋ ์คํ๋๋ค.
applicationWillResignActive(_ application: UIApplication)
- ํ ๋ฒํผ์ด ๋๋ ค์ ์ฑ์ด Background ์ํ๊ฐ ๋์์ ๋ ํธ์ถ๋๋ ๋ฉ์๋
- Task ์ผ์ ์ ์ง / ํ์ด๋จธ ๋นํ์ฑํ ๊ธฐ๋ฅ ๋ฑ์ ์ฒ๋ฆฌํ๋ ๋ก์ง์ ๊ตฌํํ๋ค.
applicationDidEnterBackground(_ application: UIApplication)
- ์ฑ์ด Background ์ํ๊ฐ ๋์ด ๋ ์ด์์ด ์ฑ์ด ๋ณด์ด์ง ์์ ๋ ํธ์ถ๋๋ ๋ฉ์๋
- ๊ณต์ ์์ ํด์ / ์ ์ ๋ฐ์ดํฐ ์ ์ฅ ๋ฑ์ ๋ก์ง์ ๊ตฌํํ๋ค.
applicationWillEnterForeground(_ application: UIApplication)
- ์ฑ์ด ๋ค์ Foreground ์ํ๊ฐ ๋ ๋ ํธ์ถ๋๋ ๋ฉ์๋
- ๋ณดํต API ๋ฅผ ํตํด ์ฑ์ ์ํ๋ฅผ ๊ฐฑ์ ํ ๋ ์ฌ์ฉํ๋ค.
์ฑ์ด In-Active ์ํ๊ฐ ๋๋ ์๋๋ฆฌ์ค ?
- ํํ ๊ฒฝ์ฐ๋ ์๋์ง๋ง ๋ค์ด๋ฒ์ฑ์์ ๊ธฐ์ฌ๋ฅผ ์ฝ๊ณ ์๋ค๊ฐ ์ด ๊ธฐ์ฌ๋ฅผ ์นด์นด์คํก์ผ๋ก ๊ณต์ ํ๋ ค๊ณ ํ๋ ๊ฒฝ์ฐ ๋ค์ด๋ฒ์ฑ ์๋ก ์นด์นด์คํก ์ฑ์ด ์คํ๋ ํ
๋ฐ, ์ด๋ ๋ค์ด๋ฒ์ฑ์ In-Active ์ํ๊ฐ ๋๋ค.
Scene Delegate ?
UIApplication ๊ฐ์ฒด์ ์ปจํธ๋กค๋ฌ ์ญํ ์ ์ด๋์ ๊ตฌํํด์ผ ํ๋์ ?
Not Running ? Foreground ? Inactive ? Active ? Background ? Suspended ?
- ์ฑ์ ์คํ ์ํ๋ฅผ ์๋ฏธํ๋ ํค์๋๋ค
Not Running
- ์ฑ์ด ์คํ๋์ง ์์ ์ํ
Foreground
- ์ฑ์ด ์คํ๋์ด ์ฌ์ฉ์์๊ฒ ๋ณด์ด๊ณ ์๋ ์ํ
- ์ด๋ฒคํธ ์์ ์ฌ๋ถ์ ๋ฐ๋ผ active์ inactive๋ก ๋๋จ
Inactive
- ์ฑ์ด ์คํ ์ค์ด์ง๋ง ์์ง ์๋ฌด๋ฐ ์ด๋ฒคํธ๋ฅผ ๋ฐ์ง ์์ ์ํ
Active
- ์ฑ์ด ์คํ ์ค์ด๋ฉด์ ์ด๋ฒคํธ๋ฅผ ๋ฐ๊ณ ์๋ ์ํ
Background
- ์ฑ์ด ๋ฐฑ๊ทธ๋ผ์ด๋์ ์์ง๋ง ์ฌ์ ํ ์คํ๋๊ณ ์๋ ์ฝ๋๊ฐ ์๋ ์ํ
Suspended
- ์ฑ์ด ๋ฐฑ๊ทธ๋ผ์ด๋์ ์๊ณ , ์คํ๋๊ณ ์๋ ์ฝ๋๊ฐ ์๋ ์ํ
- ์ฌ์ ํ ๋ฉ๋ชจ๋ฆฌ์ ์ฑ์ด ์กด์ฌํ๊ธฐ๋ ํ์ง๋ง, CPU๋ ๋ฐฐํฐ๋ฆฌ๋ฅผ ์๋ชจํ์ง๋ ์์ผ๋ฉฐ ์ธ์ ๋ ์ง ๋ฉ๋ชจ๋ฆฌ ๋ถ์กฑ ๋ฑ์ ์ด์ ๋ก ์ข
๋ฃ๋ ์ ์๋ค.
NSOperationQueue vs GCD Queue ?
- (๊ณตํต์ ๋ ์๋ค๋ฉด ์ถ๊ฐํ๊ธฐ)
GCD API ๋์ ๋ฐฉ์๊ณผ ํ์์ฑ ?
๋์ ๋ฐฉ์
- ํด์ผํ ์์
์ Operation ์ผ๋ก Wrapping ํ ํ Queue ์ ๋ฃ๊ณ , Queue ์์ ๋จ๋ ์ค๋ ๋์ ์์
์ ๋ฐฐ๋ถํ๋ค.
ํ์์ฑ
- ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฌ๋ ์์
์ ํด์ผํ ๊ฒฝ์ฐ, ๋น๋๊ธฐ ์ฒ๋ฆฌ๋ฅผ ํ์ง ์์ผ๋ฉด ๊ทธ ์์
์ ํ๋ ๋์ ๋ค๋ฅธ ์์
์ ํ ์ ์๊ณ ์ฑ์ด ๋ฉ์ถฐ๋ฒ๋ฆฌ๊ธฐ ๋๋ฌธ์ด๋ค.
Global DispatchQueue Qos ์ ์ข
๋ฅ ?
iOS ์ฑ์ ๋ง๋ค๊ณ , User Interface ๋ฅผ ๊ตฌ์ฑํ๋๋ฐ ํ์์ ์ธ ํ๋ ์์ํฌ ?
Foundation ?
Delegate ?
- (retain ๋๋์ง ์๋๋์ง๋ ๊ทธ ์ด์ ๊ผญ ์ถ๊ฐํ๊ธฐ)
NotificationCenter ๋์ ๋ฐฉ์๊ณผ ํ์ฉ ๋ฐฉ์ ?
UIKit ํด๋์ค๋ค์ ๋ค๋ฃฐ ๋ ๊ผญ ์ฒ๋ฆฌํด์ผ ํ๋ ์ ํ๋ฆฌ์ผ์ด์
์ฐ๋ ๋ ์ด๋ฆ ?
- Main Thread
- Cocoa Touch ์ฑ์์๋ UIApplication ์ ์ธ์คํด์ค๊ฐ Main Thread ์ ๋ถ๊ธฐ ๋๋ฌธ์ด๋ค.
- ์ฐธ๊ณ ์ฌ์ดํธ
UIApplication
- ์ฑ์ ์์ํ ๋ ์ธ์คํด์คํ๋๋ ์ฑ์ ์ฒซ๋ฒ์งธ ๋ถ๋ถ
- ์ฑ์ Run Loop ๋ฅผ ํฌํจํ Main Event Loop ๋ฅผ ์ค์ ํ๊ณ , Event ์ฒ๋ฆฌ๋ฅผ ์์ํ๋ค.
Main Event Loop
- touch, gesture ๋ฅผ ํฌํจํ ๋ชจ๋ UI Event ๋ฅผ ์์ ํ๋ค.
UI Event
- [UIApplication -> UIWindow -> UIViewController -> UIView -> subviews] ์์ผ๋ก UIResponder ์ ์ ๋ฌ๋๋ ๊ฒ์ด ์ผ๋ฐ์ ์ด๋ค.
App Bundle ์ ๊ตฌ์กฐ์ ์ญํ
๋ชจ๋ View Controller ๊ฐ์ฒด์ ์์ ํด๋์ค๋ ๋ฌด์์ด๊ณ , ์ด๋ค ์ญํ ์ ๋ด๋นํ๋์ ?
๋๋ง์ Custom View ๋ฅผ ๋ง๋ค๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผ ํ๋์ ?
View ๊ฐ์ฒด ?
UIView ์์ Layer ๊ฐ์ฒด๋ ๋ฌด์์ด๊ณ , ์ด๋ค ์ญํ ์ ๋ด๋นํ๋์ ?
UIWindow ๊ฐ์ฒด์ ์ญํ ?
UINavigationController ์ ์ญํ ?
TableView ์ ๋์ ๋ฐฉ์๊ณผ Cell ์ ์ถ๋ ฅํ๊ธฐ ์ํด ๋ฐ๋์ ๊ตฌํํด์ผ ํ๋ DataSource ๋ฉ์๋๋ ?
ํ๋์ View Controller ์ฝ๋์์ ์ฌ๋ฌ TableView Controller ์ญํ ์ ํด์ผ ํ ๊ฒฝ์ฐ ์ด๋ป๊ฒ ๊ตฌ๋ถํด์ ๊ตฌํํด์ผ ํ๋์ ?
setNeedsLayout vs setNeedsDisplay ?
- (๊ณตํต์ ๋ ์๋ค๋ฉด ์ถ๊ฐํ๊ธฐ)
setNeedsLayout
setNeedsDisplay
NSCache ์ ๋์
๋๋ฆฌ๋ก ์บ์๋ฅผ ๊ตฌ์ฑํ์ ๋์ ์ฐจ์ด์ ?
- (๊ณตํต์ ๋ ์๋ค๋ฉด ์ถ๊ฐํ๊ธฐ)
URLSession ?
prepareForReuse ?
- Table View ์ Delegate ๊ฐ ์ฌ์ฌ์ฉํ ์ ์๋๋ก ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ Cell ์ ์ค๋นํด์ฃผ๋ ๋ฉ์๋
- UITableViewCell ์ด 'reuse identifier' ๋ฅผ ๊ฐ์ง๊ณ ์์ผ๋ฉด ๊ทธ Table View ๋ dequeueReusableCell(withIdentifier:) ๋ฉ์๋๋ฅผ ๋ฐํํ๊ธฐ ์ง์ ์ prepareForReuse ๋ฉ์๋๋ฅผ ํธ์ถํ๋ค.
- ์ ์ฌ์ ์ธ ์ฑ๋ฅ ์ด์๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด Cell ์ ์์ฑ๋ค ์ค ๋ด์ฉ๊ณผ ๊ด๋ จ์๋ ๊ฒ (alpha, editing, selection state ๋ฑ) ๋ค๋ง ์ฌ์ค์ ํด์ผ ํ๋ค. ([์ฝ๋ 1] ์ฐธ๊ณ )
override func prepareForReuse() {
super.prepareForReuse()
imageView?.image = nil
}
- tableView(_:cellForRowAt:) ์ ์๋ Table View ์ Delegate ๋ Cell ์ ์ฌ์ฌ์ฉํ ๋ ๋ชจ๋ ๋ด์ฉ์ ํญ์ ์ฌ์ค์ ํด์ค์ผ ํ๋ค.
- Table View ๋ Cell ์ด reuse identifier ๋ฅผ ๊ฐ์ง๊ณ ์์ง ์๊ฑฐ๋, ๊ธฐ์กด Cell ์ ๋ด์ฉ์ ์
๋ฐ์ดํธํ๊ธฐ ์ํด reconfigureRows(at:) ์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ์๋ prepareForReuse ๋ฉ์๋๋ฅผ ํธ์ถํ์ง ์๋๋ค.
- prepareForReuse ๋ฉ์๋๋ฅผ override ํ ๊ฒฝ์ฐ์๋ superclass ๊ตฌํ์ ๋ฐ๋์ ํธ์ถํด์ผ ํ๋ค. ([์ฝ๋ 2] ์ฐธ๊ณ )
override func prepareForReuse() {
super.prepareForReuse()
}
- Apple ๊ณต์ ๋ฌธ์
- ๊ถ๊ธํ ๊ฒ : UITableViewCell ์ init() ๋ฃ์ด์ฃผ๋ ๊ฒ๊ณผ prepareForReuse() ๋ ๋ค๋ฅธ ๊ฐ๋
์ธ์ง ..?
๋คํฌ๋ชจ๋๋ฅผ ์ง์ํ๋ ๋ฐฉ๋ฒ ?
View Controller ์ ์๋ช
์ฃผ๊ธฐ ?
TableView vs CollectionView ?
- (๊ณตํต์ ๋ ์๋ค๋ฉด ์ถ๊ฐํ๊ธฐ)
๐ป Autolayout
Autolayout ์ ์ฝ๋๋ก ์์ฑํ๋ ๋ฐฉ๋ฒ 3๊ฐ์ง ?
NSLayoutAnchor
- iOS 9 ๋ถํฐ ๋์
- ์ ๋์ ์ธ API ๋ฅผ ์ฌ์ฉํ๋ ๋ ์ด์์ ์ ์ฝ์ ๋ง๋ ๋ค.
- NSLayoutConstraint ๋ณด๋ค ๋ ๊ฐ๊ฒฐํ๊ณ ๊น๋ํด์ ์ฝ๊ธฐ ํธํ๋ค.
- Apple ๊ณต์ ๋ฌธ์
Anchor ์ข
๋ฅ
- widthAnchor
- heightAnchor
- topAnchor
- bottomAnchor
- leftAnchor
- rightAnchor
- leadingAnchor
- trailingAnchor
- centerXAnchor
- centerYAnchor
NSLayoutConstraint
- iOS 6 ๋ถํฐ ๋์
- ์ ์ฝ ๊ธฐ๋ฐ์ ๋ ์ด์์ ์์คํ
์์ ์ถฉ์กฑํด์ผ ํ๋ 2๊ฐ์ง ์ธํฐํ์ด์ค ๊ฐ์ฒด ๊ฐ์ ๊ด๊ณ
- NSLayoutAnchor ๋ฐฉ์๊ณผ ๋ค๋ฅด๊ฒ, ๋ ์ด์์์ ์ํฅ์ ์ฃผ์ง ์๋๋ผ๋ ๊ฐ ๋งค๊ฐ๋ณ์์ ๊ฐ์ ๋ฃ์ด์ฃผ์ด์ผ ํ๋ค.
- NSLayoutConstraint.Attribute ์๋ธ ํด๋์ค๋ ์ถ๊ฐ์ ์ผ๋ก ํ์
๊ฒ์ฌ๋ฅผ ์ ๊ณตํด์ ์ ํจํ์ง ์์ ์ ์ฝ ์กฐ๊ฑด ์์ฑํ๋ ๊ฒ์ ๋ฐฉ์งํ๋ค.
- iOS 8 ๋๋ OS X 10.10 ๋๋ ์ด์ ๋ฒ์ ์ ์ง์ํด์ผ ํ๋ ๊ฒฝ์ฐ๊ฐ ์๋๋ผ๋ฉด NSLayoutAnchor ๋ฐฉ์์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข๋ค.
- Apple ๊ณต์ ๋ฌธ์
NSLayoutConstraint ์ ์ธ
NSLayoutConstraint(item view1: Any, attribute attr1: NSLayoutConstraint.Attribute, relatedBy relation: NSLayoutConstraint.Relation, toItem view2: Any?, attribute attr2: NSLayoutConstraint.Attribute, multiplier: CGFloat, constant c: CGFloat)
NSLayoutConstraint ๋งค๊ฐ ๋ณ์
- item : ์ ์ฝ์ ์ง์ ํ ์์ดํ
- attribute : ์ ์ฝ์ ์ง์ ํ ์์ดํ
์ ์ ์ฝ ์์ฑ
- relatedBy : ์ ์ฝ์ ์ง์ ํ ์์ดํ
๊ณผ ์ ์ฝ์ ๊ธฐ์ค์ด ๋๋ ์์ดํ
์ฌ์ด์ ๊ด๊ณ
- toItem : ์ ์ฝ์ ๊ธฐ์ค์ด ๋๋ ์์ดํ
- attribute : ์ ์ฝ์ ๊ธฐ์ค์ด ๋๋ ์์ดํ
์ ์ ์ฝ ์์ฑ
- multiplier : ์ ์ฝ์ ๋น์จ
- constant : ์ ์ฝ์ ์์๊ฐ
- ๋ฌธ์์ด๊ณผ ๊ฐ์ ASCII ๋ฅผ ์ฌ์ฉํด ์ ์ฝ ์กฐ๊ฑด์ ์ ์ํ๋ ๋ฐฉ์
- ASCII ์ํธ์ ์ ์ฌํ ์๊ฐ์ ํ์ ๋ฌธ์์ด๋ก ์ ์ฝ ์กฐ๊ฑด์ ๋ง๋๋ ๋ฐฉ์
- Apple ๊ณต์ ๋ฌธ์
class func constraints(withVisualFormat format: String,
options opts: NSLayoutConstraint.FormatOptions = [],
metrics: [String : Any]?,
views: [String : Any]) -> [NSLayoutConstraint]
- format : ์ ์ฝ ์กฐ๊ฑด์ ๋ํ ํ์ ์ฌ์
- options : ์๊ฐ์ ํ์ ๋ฌธ์์ด์ ๋ชจ๋ ๊ฐ์ฒด์ ๋ํ ์์ฑ ๋ฐ ๋ ์ด์์ ๋ฐฉํฅ์ ์ค๋ช
ํ๋ ์ต์
- matrics : ์๊ฐ์ ํ์ ๋ฌธ์์ด์ ๋ํ๋๋ ์์ Dictionary
- views : ์๊ฐ์ ํ์ ๋ฌธ์์ด์ ํ์๋๋ ๋ณด๊ธฐ Dictionary
(key : ์๊ฐ์ ํ์ ๋ฌธ์์ด์ ์ฌ์ฉ๋ ๋ฌธ์์ด ๊ฐ / value : view ๊ฐ์ฒด)
Hugging ? Resistance ?
Intrinsic Size ?
์คํ ๋ฆฌ๋ณด๋๋ก UI ๋ฅผ ๊ทธ๋ฆด ๋์ ์ฅ๋จ์ ?
- ๊ฐ๋จํ UI ๋ง ๊ทธ๋ฆฌ๋ ๊ฒฝ์ฐ์๋ StoryBoard ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ ์ข์ ์๋ ์์ง๋ง, ๋ณต์กํ ํ๋ก์ ํธ๋ฅผ ๋ง๋๋ ๊ฒฝ์ฐ์๋ Code Base ๋ฐฉ์์ด ๋ ๋์ ๋ฐฉ์์ผ ๊ฐ๋ฅ์ฑ์ด ํฌ๋ค.
- Custom View ๋ฅผ ๋ง๋ค์ด์ ์ฌ์ฉํ ๊ฒฝ์ฐ์๋ Code Base ๋ฐฉ์์ด ๋ ์ข๋ค. (Code Base ๋ฐฉ์์ ๋ฐ๋ก ๋ฐ์ ์๋ '์ฝ๋๋ก UI ๋ฅผ ๊ทธ๋ฆด ๋์ ์ฅ๋จ์ ?' ์ฐธ๊ณ )
- ์ฐธ๊ณ ์ฌ์ดํธ
์ฅ์
- UI ๊ตฌ์ฑ์ ํ๋์ ํ์ธํ ์ ์๋ค.
- View ์ ์ด๋ค ์์ฑ๊ณผ ๊ฐ์ ์ค์ ํ๋์ง ํ์ธํ๊ธฐ ์ฝ๋ค.
๋จ์
- StoryBoard ๊ตฌํ์ ์ํด Xcode ๋ฉ๋ชจ๋ฆฌ๊ฐ ์ฌ๋ผ๊ฐ๋ค.
- ํ์
ํ ๋ StoryBoard ์ถฉ๋ ๋ฐ ์ด์๊ฐ ์๊ธธ ์ ์๋ค.
- ์ธํฐํ์ด์ค ๋น๋์ StoryBoard ๊ฐ ์ฐ๊ฒฐ์ ์ถ์ ํ๊ธฐ ์ด๋ ค์ธ ์ ์๋ค.
์ฝ๋๋ก UI ๋ฅผ ๊ทธ๋ฆด ๋์ ์ฅ๋จ์ ?
์ฅ์
- StoryBoard ์ ๋น๊ตํ์ ๋ Xcode ๋ฉ๋ชจ๋ฆฌ๊ฐ ๊ฐ๋ฒผ์์ง๋ค.
- ํ์
ํ ๋ ์ถฉ๋ ๋ฐ ์ด์๊ฐ ์๊ธธ ํ๋ฅ ์ด ๋ฎ๋ค.
- StoryBoard ์ ๋นํด View ์ ์ฌ์ฌ์ฉ์ฑ์ด ์ข๋ค.
๋จ์
- View ๊ฐ ์ด๋ค ๋ชจ์ต์ ๊ฐ์ง๊ณ ์๋์ง ํ๋์ ํ์
ํ๊ธฐ ์ด๋ ต๋ค.
- View ์ ์์ฑ ๋ฐ ๊ธฐ๋ฅ์ ์๊ณ ์์ด์ผ ํ๋ค.
- NSLayoutConstraint ๋ก AutoLayout ์ ์ค์ ํด์ค์ผ ํด์ ๋ณต์กํ๋ค. (Snapkit ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ import ํ๋ฉด ํด๊ฒฐ ๊ฐ๋ฅํ๋ค.)
Safe Area ?
- iOS 11 ์ด์ ๊น์ง๋ 'Safe Area' ๋ผ๋ ๊ฐ๋
์ด ์์๊ณ , Safe Area ๋์ 'Top Layout Guide' ์ 'Bottom Layout Guide' ๋ผ๋ ๊ฐ๋
์ด ์์๋ค. (์ง๊ธ์ ์ด ๋๊ฐ์ง ๊ฐ๋
์ด Deprecate ๋์๋ค.)
- ์ํ๋ฐ (Status Bar) / ๋ค๋น๊ฒ์ด์
๋ฐ (Navigation Bar) / ํญ๋ฐ (Tap Bar) ๋ฑ์ ์ํด์ View ๊ฐ ๊ฐ๋ ค์ง๋ ๊ฒ์ ๋ฐฉ์งํ๊ธฐ ์ํ ์์คํ
์ Margin
- iOS 11 ์ด์ ๊น์ง๋ Top ๊ณผ Bottom ์ชฝ์ด View ๋ฅผ ๊ฐ๋ฆฌ๋ ๊ฒ๋ง ์ ๊ฒฝ์ฐ๋ฉด ๋์์ง๋ง, iOS 11 ์ดํ๋ถํฐ๋ ๋๋ฐ์ด์ค๋ฅผ ๊ฐ๋ก๋ก ๋๋ ธ์ ๋์ ๋
ธ์น (ex. ํํ ๋งํ๋ ์์ดํฐ์ M์ ๋ผ์ธ) ์ View ๊ฐ ๊ฐ๋ ค์ง๋ ํ์์ด ์๊ธฐ๊ธฐ ์์ํ์ฌ 'Leading Layout Guide' ์ 'Trailing Layout Guide' ๊ฐ๋
๋ ํ์ํด์ก๋ค.
- Safe Area ๋ Top / Bottom / Leading / Trailing ์ ๋ํ Margin ์ ๋ชจ๋ ๊ฐ์ง๋ค. (์์คํ
์ ์ํด ๊ฐ๋ ค์ง ์ ์๋ ๋ถ๋ถ์ Margin ์ ์์ฒด์ ์ผ๋ก ๊ฐ์ง๋ ๊ฒ์ด๋ค.)
- Safe Area ๊ฐ ๊ธฐ๋ณธ์ ์ผ๋ก ์์ฑ๋๋ค.
- Safe Area ๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ํ๋ฉด์ ๊ฝ ์ฐจ๊ฒ ๋ณด์ด๋๋ก ํ๋ ๋ฐฉ๋ฒ๋ ์๊ธด ํ์ง๋ง ๋์์์ด๋ ์ฌ์ง์ ๋ณด์ฌ์ฃผ๋ ๊ฒฝ์ฐ๊ฐ ์๋๋ผ๋ฉด Safe Area ์์ View ๋ค์ ๋ฃ์ด์ฃผ๋ ๊ฒ์ด ์ข๋ค.
- ์ฐธ๊ณ ์ฌ์ดํธ
Left Constraint vs Leading Constraint ?
Left Constraint
- ์ด๋ค ๊ฐ์ฒด์ ์ผ์ชฝ
- ์ ๋์ ์ด๊ณ , ํญ์ ํ๋ฉด ๋๋ ์ปจํธ๋กค์ ์ผ์ชฝ์ ์ฐธ์กฐํ๋ค.
Leading Constraint
- ์ด๋ค ๊ฐ์ฒด์ ์์ชฝ ๊ฐ์ฅ์๋ฆฌ
- Device Locale (์ฅ์น๋ณ ๊ตญ๊ฐ ์ค์ ) ์ ์ํฅ์ ๋ฐ๋๋ค.
- ์ฝ๊ธฐ ๋ฐฉํฅ์ด ์ค๋ฅธ์ชฝ์์ ์ผ์ชฝ์ธ ๊ตญ๊ฐ์ ์ธ์ด (ex. ํ๋ธ๋ฆฌ์ด, ์๋์ด) ๋ leading ์ด ์ค๋ฅธ์ชฝ์ด๊ณ , trailing ์ด ์ผ์ชฝ์ด๋ค.
๐ป Swift
Struct vs Class vs Enum ?
Class ์ ์ฑ๋ฅ์ ํฅ์์ํฌ์ ์๋ ๋ฐฉ๋ฒ ?
- (์ฌ๋ฌ ๊ฐ์ง ์ฐพ์๋ณด๊ธฐ)
Copy On Write ๋์ ๋ฐฉ์ ?
Convinience init ?
AnyObject ?
Optional ?
Struct ?
Subscripts ?
String ์ ์ subscript ๋ก ์ ๊ทผ์ด ๋ถ๊ฐ๋ฅํ๊ฐ์ ?
instance ๋ฉ์๋ vs class ๋ฉ์๋ ?
- (๊ณตํต์ ๋ ์๋ค๋ฉด ์ถ๊ฐํ๊ธฐ)
class ๋ฉ์๋ vs static ๋ฉ์๋ ?
- (๊ณตํต์ ๋ ์๋ค๋ฉด ์ถ๊ฐํ๊ธฐ)
Delegate ํจํด์ ํ์ฉํ๋ ์์ ?
Singleton ํจํด์ ํ์ฉํ๋ ์์ ?
KVO ๋์ ๋ฐฉ์ ?
Delegates ๋ฐฉ์ vs Notification ๋ฐฉ์ ?
- (๊ณตํต์ ๋ ์๋ค๋ฉด ์ถ๊ฐํ๊ธฐ)
๋ฉํฐ ์ฐ๋ ๋๋ก ๋์ํ๋ ์ฑ์ ์์ฑํ๊ณ ์ถ์ ๋ ๊ณ ๋ คํ ์ ์๋ ๋ฐฉ์๋ค ?
MVC ๊ตฌ์กฐ ?
- (๋ธ๋ก ๊ทธ๋ฆผ ๊ทธ๋ ค์ ์ถ๊ฐํ๊ธฐ)
- (๊ฐ ์ญํ ๊ณผ ํ๋ฆ ์ถ๊ฐํ๊ธฐ)
Protocol ?
Protocol Oriented Programming vs Object Oriented Programming ?
Hashable ?
- (quatable ์ ์์ํด์ผ ํ๋ ์ด์ ์ถ๊ฐํ๊ธฐ)
mutating ?
- Swift ์์ Class ๋ ์ฐธ์กฐ ํ์
์ด๊ณ Struct ์ Enum ์ ๊ฐ ํ์
์ธ๋ฐ, ๊ฐ ํ์
์ ํ๋กํผํฐ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ธ์คํด์ค ๋ฉ์๋ ์์์ ์์ ํ ์ ์๋ค.
- ๊ฐ ํ์
์์ ์๋ ๋ฉ์๋์์ ํ๋กํผํฐ๋ฅผ ์์ ํ ์ ์๊ฒ ํ๋ ค๋ฉด ํด๋น ํ๋กํผํฐ ์์ mutating ํค์๋๋ฅผ ๋ถ์ฌ์ ์ ์ธํด ์ฃผ์ด์ผ ํ๋ค.
struct Person {
let name : String
var age : Int
init(name : name, age : age) {
self.name = name
self.age = age
}
func changeAge() {
age = 10
}
}
- [์ฝ๋ 5] : ๊ตฌ์กฐ์ฒด๋ ์์ (immutable) ์ด๊ธฐ ๋๋ฌธ์ ๊ฐ์ ๋ฐ๊ฟ์ค ์ ์์ด์ ์๋ฌ๊ฐ ๋๋ค.
struct Person {
let name : String
var age : Int
init(name : name, age : age) {
self.name = name
self.age = age
}
mutating func changeAge() {
age = 10
}
}
var r1verfuture = Person(name : "r1verfuture", age : 25)
r1verfuture.changeAge()
print(r1verfuture.age)
- [์ฝ๋ 6] : changeAge ๋ฉ์๋์ mutating ํค์๋๋ฅผ ๋ถ์ฌ์ฃผ๋ฉด ๊ตฌ์กฐ์ฒด ์์ ํ๋กํผํฐ๋ฅผ ๋ณ๊ฒฝํ ์ ์๊ฒ ๋์ด ์๋ฌ๊ฐ ๋์ง ์๋๋ค.
- ์ฐธ๊ณ ์ฌ์ดํธ
ํ์ถ ํด๋ก์ ?
Extension ?
Extension ๋ด๋ถ์์ ํจ์๋ฅผ override ํ ์ ์๋์ ?
์ ๊ทผ ์ ์ด์์ ์ข
๋ฅ ?
defer ?
defer ๊ฐ ํธ์ถ๋๋ ์์ ?
defer ๊ฐ ํธ์ถ๋์ง ์๋ ๊ฒฝ์ฐ ?
property wrapper ?
Generic ?
some ํค์๋ ?
Result ํ์
?
Codable ?
๐ป ARC
ARC ?
- ๋ฉ๋ชจ๋ฆฌ ์์ญ 4๊ฐ์ง ์ค ํ ์์ญ์ ๊ด๋ฆฌํ๋ ๊ฒ
- ์ธ์คํด์ค๊ฐ ๋ ์ด์ ์ฐธ์กฐ๋์ง ์์ผ๋ฉด ๋ฉ๋ชจ๋ฆฌ์์ ํด์ ํ๋ค.
- ๋ด๊ฐ ์ ๋ฆฌํ 'ARC'
Retain Count ๋ฐฉ์ ?
Strong ์ฐธ์กฐ ๋ฐฉ์ ? Weak ์ฐธ์กฐ ๋ฐฉ์ ?
- strong : ์ธ์คํด์ค๊ฐ ์ฐธ์กฐ๋์ด RC๊ฐ์ด ์ฆ๊ฐํ๋ ๊ฒ
- weak : ์ธ์คํด์ค๊ฐ ์ฐธ์กฐ๋์ด๋ RC๊ฐ์ด ์ฆ๊ฐํ์ง ์๋ ๊ฒ
- ๋ด๊ฐ ์ ๋ฆฌํ 'Strong & Weak'
์ํ ์ฐธ์กฐ ?
๊ฐํ ์ํ ์ฐธ์กฐ๋ ์ด๋ค ๊ฒฝ์ฐ์ ๋ฐ์ํ๋์ ?
๐ป Functional Programming
์์ ํจ์ ?
ํจ์ํ ํ๋ก๊ทธ๋๋ฐ ?
๊ณ ์ฐจ ํจ์ ?
Swift Standard Library ์ map ? filter ? reduce ? compactMap ? flatMap ?
๐ป Architecture
์๊ณ ์๋ ์ํคํ
์ณ ?
- (MVVM, MVI, Ribs, VIP ๋ฑ ์ฐพ์์ ์ถ๊ฐํ๊ธฐ)
์์กด์ฑ ์ฃผ์
?
๐ป SwiftUI
@State ?
๐ป Combine
PassthroughSubject ?
@Published ?
AnyCancellable ?
sink ?
throttle vs debounce ?
- (๊ณตํต์ ๋ ์๋ค๋ฉด ์ถ๊ฐํ๊ธฐ)
๐ป Rx
Reactive Programming ?
RxSwift ๋ฅผ ์ฌ์ฉํด์ผ ํ๋ ์ด์ ?
RxSwift ์ ๋จ์ ?
RxSwift ์์ Hot Observable vs Cold Observable ?
Subject ์ ์ข
๋ฅ์ ์ฐจ์ด์ ?
- (๊ณตํต์ ๋ ์๋ค๋ฉด ์ถ๊ฐํ๊ธฐ)
Subject vs Driver ?
- (๊ณตํต์ ๋ ์๋ค๋ฉด ์ถ๊ฐํ๊ธฐ)
Single vs Completable vs Maybe ?
- (๊ณตํต์ ๋ ์๋ค๋ฉด ์ถ๊ฐํ๊ธฐ)
- (๊ฐ๊ฐ ์ธ์ ์ ์ฉํ๋ฉด ์ข์์ง๋ ์ถ๊ฐํ๊ธฐ)
MRC
ARC ๋์ Manual Reference Count ๋ฐฉ์์ผ๋ก ๊ตฌํํ ๋ ๊ผญ ์ฌ์ฉํด์ผ ํ๋ ๋ฉ์๋๋ค ?
- (๋ฉ์๋๋ค ๊ฐ๊ฐ์ ์ญํ ๋ ์ถ๊ฐํ๊ธฐ)
retain vs assign ?
- (๊ณตํต์ ๋ ์๋ค๋ฉด ์ถ๊ฐํ๊ธฐ)
ํน์ ๊ฐ์ฒด๋ฅผ autorelease ํ๊ธฐ ์ํด ํ์ํ ๊ฒ๊ณผ ๊ณผ์ ?
Autorelease Pool ์ ์ฌ์ฉํด์ผ ํ๋ ์ํฉ๊ณผ ์์ ?
- (2๊ฐ์ง ์ด์ ์ถ๊ฐํ๊ธฐ)
์๋ ์ฝ๋๋ฅผ ์คํํ๋ฉด ์ด๋ค ์ผ์ด ๋ฐ์ํ ๊น์ ?
Ball *ball = [[[[Ball alloc] init] autorelease] autorelease];
๐ป Advanced
method swizzling ?
- (์ด๋จ ๋ ์ฌ์ฉํ๋์ง๋ ์ถ๊ฐํ๊ธฐ)
NSCoder ํด๋์ค๋ ์ด๋ค ์ํฉ์์ ์ด๋ป๊ฒ ์จ์ผ ํ๋์ ?
Responder Chain ๊ตฌ์กฐ ?
First Responder ์ญํ ?
- (์ ์๋ถํฐ ์ฐพ์๋ณด๊ธฐ)
Shallow Copy vs Deep Copy ?
- (๊ณตํต์ ๋ ์๋ค๋ฉด ์ถ๊ฐํ๊ธฐ)
Push Notification ๋ฐฉ์ ?
Foundation vs Core Foundation ํ๋ ์์ํฌ ?
- (๊ณตํต์ ๋ ์๋ค๋ฉด ์ถ๊ฐํ๊ธฐ)
NSURLConnection ์์ ์ฌ์ฉํ๋ Delegate ๋ฉ์๋๋ค ?
Synchronous ๋ฐฉ์๊ณผ Asynchronous ๋ฐฉ์์ผ๋ก URL Connection ์ ์ฒ๋ฆฌํ ๊ฒฝ์ฐ์ ์ฅ๋จ์ ?
Plist ํ์ผ ๊ตฌ์กฐ์ Plist ํ์ผ์ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃจ๊ธฐ ์ ํฉํ ํด๋์ค ?
Core Data vs Sqlite ?
- (๊ณตํต์ ๋ ์๋ค๋ฉด ์ถ๊ฐํ๊ธฐ)
JSON ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐฉ์๊ณผ ํ์, ๊ฐ์ฒด ๋ณํ ๋ฐฉ์ ?
์น ์๋ฒ์ HTTP ์ฐ๊ฒฐ์ ์ฌ์ฉํด์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ฑฐ๋ ๋ฐ์ผ๋ ค๋ฉด ์ฌ์ฉํด์ผ ํ๋ ํด๋์ค์ ๋์ ๋ฐฉ์ ?
Protocol ์์๋ var ๋ง ๋๋ ์ด์ ?
DispatchQueue.main.sync ๋ฅผ ์ฌ์ฉํ๋ ์ํฉ ?
Run Loops ?
๐ป Objective-C
Swift ์ ํด๋ก์ vs Objective-C ์ ๋ธ๋ก ?
Mutable ๊ฐ์ฒด ?
- (์ด๋ค ๊ฒ์ด ์๋์ง ์์๋ ์ถ๊ฐํ๊ธฐ)
Immutable ๊ฐ์ฒด ?
- (์ด๋ค ๊ฒ์ด ์๋์ง ์์๋ ์ถ๊ฐํ๊ธฐ)
Mutable ๊ฐ์ฒด vs Immutable ๊ฐ์ฒด
- (๊ณตํต์ ๋ ์๋ค๋ฉด ์ถ๊ฐํ๊ธฐ)
dynamic ?
property ?
dynamic vs property ?
- (๊ณตํต์ ๋ ์๋ค๋ฉด ์ถ๊ฐํ๊ธฐ)
@property ๋ก ์ ์ธํ NSString* title ์ getter / setter ๋ฉ์๋๋ฅผ ๊ตฌํํด๋ณด์ธ์.
@property ์์ atomic vs nonatomic
- (์ด๋ค ๊ฒ์ด ๋ ์์ ํ์ง, ์ด๋ ๊ฒ์ด ๊ธฐ๋ณธ์ธ์ง๋ ์ถ๊ฐํ๊ธฐ)
- (๊ณตํต์ ๋ ์๋ค๋ฉด ์ถ๊ฐํ๊ธฐ)
@property ๋ก ์ ์ธํ๋ค๋ ์๋ฏธ ?
@property ๋ก ์ ์ธํ ๋ .h ์ ๋ฃ์ ๊ฒฝ์ฐ vs .m ์ ๋ฃ์ ๊ฒฝ์ฐ ?
- (๊ณตํต์ ๋ ์๋ค๋ฉด ์ถ๊ฐํ๊ธฐ)
Objective-C ์์ ์บก์ํ๋ ๋ฐ์ดํฐ์ ์ ๊ทผํ๊ธฐ ์ํ ๋ฐฉ๋ฒ ?
- (์ฌ๋ฌ๊ฐ์ง ์ถ๊ฐํ๊ธฐ)
Fast Enumeration ?
unnamed category ๋ฐฉ์ ?
Category ํ์ฅ vs Subclass ํ์ฅ ?
- (๊ณตํต์ ๋ ์๋ค๋ฉด ์ถ๊ฐํ๊ธฐ)
Category ๋ฐฉ์ ?
Objective-C ์์ Protocol ์ด๋ ?
Objective-C++ ๋ฐฉ์ ?
- (์ด๋ค ๊ฒฝ์ฐ์ ์ฌ์ฉํด์ผ ํ๋์ง๋ ์ถ๊ฐํ๊ธฐ)
์ฐธ๊ณ