iOS ํ๋ก๊ทธ๋๋ฐ๊ณผ ๊ด๋ จ๋ ์์ด ๋ฌธ์ ๋ฐ ์ฌ์ดํธ๋ฅผ ํ๊ตญ์ด๋ก ๋ฒ์ญํด ๋์์ต๋๋ค.
- ์ฒ์ฒํ, ์กฐ๊ธ์ฉ ์ ๊ฐ ๊ถ๊ธํ ๋ถ๋ถ ๋ถํฐ ์ฌ๋ ค๋ณด๊ฒ ์ต๋๋ค.
- ์๋ต๋ ๋ด์ฉ๊ณผ ์ฝ๋๊ฐ ๋ง์ผ๋ ์์ธํ๊ณ ์ ํํ ๋ด์ฉ์ ๊ฐ ๊ธ์ ์๋ฌธ์ ์ฐธ๊ณ ํด์ฃผ์ธ์.
- ๊ทธ์ ๊ฐ๋ฐ์ ๋ ์ํ๋ ค๊ณ ์ถ์ด ๊ณต๋ถํ๋ค ์ฌ๋ฆฌ๊ฒ ๋์์ผ๋ ๋ง์ด ๋ถ์กฑํ๊ณ ์ค์ญ์ด ์์ด๋ ๋์ ๋์ง์ง ๋ง์์ฃผ์ธ์.
iOS Programming Guide ์๋ฌธ ๋ฐ๋ก๊ฐ๊ธฐ
๋ฌธ์์ ๋ชฉ์ ๋ฐ ์ฉ๋ ์ค๋ช
์ฑ ๊ธฐ๋ณธ ๊ตฌ๋ ๋ฐ ๋ฐฐํฌ์ ํ์ํ ๋ฆฌ์์ค, ์ฌ์ฉ์ ๊ฐ์ธ์ ๋ณด ๋ณดํธ, ์ฑ ์ง์ญํ(ํ์งํ)์ ๊ดํ ๋ด์ฉ
- Providing the Required Resources
- Supporting User Privacy
- Internationalizing Your App
iOS ์ฑ ๊ธฐ๋ณธ ์๋ ๊ตฌ์กฐ ๋ฐ ์ฑ ์๋ช ์ฃผ๊ธฐ, ๊ฐ ์ฃผ๊ธฐ์์ ์ํํ๋ ์์ ๋ด์ฉ๊ณผ ์์ ์์ ์ ๊ดํ ๋ด์ฉ
- The Main Function
- The Structure of an App
- The Main Run Loop
- Execution States for Apps
- App Termination
- Threads and Concurrency
๋ฐฑ๊ทธ๋ผ์ด๋ ์ํ๋ก ์ ํ๋ ๋ ์์ ๋ง๋ฌด๋ฆฌํ๊ธฐ, ๋ฐฑ๊ทธ๋ผ์ด๋ ์ํ์์ ๋๋์์ค๊ธฐ ๋ฑ ๋ฐฑ๊ทธ๋ผ์ด๋ ์ํ์ ๊ด๋ จ๋ ๋ด์ฉ
- Executing Finite-Length Tasks
- Downloading Content in the Background
- Implementing Long-Runnig Tasks
- Getting the User's Attention While in the Background
- Understanding When Your App Gets Launched into the Background
- Being a Responsible Background App
- Opting Out of Background Execution
์คํ, ๊ตฌ๋, ๋ฐฑ๊ทธ๋ผ์ด๋, ์ข ๋ฃ, ์ผ์ ์ ์ง ๋ฑ๊ณผ ๊ฐ์ ์ฑ์ ์คํ ์ํ ๋ณํ์ ๋ฐ๋ฅธ ์ญํ ๊ณผ ๊ด๋ จ ๋ฉ์๋ ์ฌ์ฉ๋ฒ์ ๊ดํ ๋ด์ฉ
- What to Do at Launch Time
- What to Do When Your App Is Interrupted Temporally
- What to Do When Your App Enters the Background
๊ฐ์ธ์ ๋ณด ํ์ฉ, ๋ฑ๊ธ์ ํ, ์ฌ๋ฌ iOS ๋ฒ์ ์ ๋์ํ๊ธฐ, ์ฑ ์ํ ๋ณด์กด/๋ณต์, VoIP ํ์ฉ ๋ฑ ์ฌ๋ฌ๊ฐ์ง ์ฑ์์ ์ฌ์ฉ๋๋ ๊ธฐ๋ฅ์ ๋ํ ์๊ฐ ๋ฐ ์ฌ์ฉ๋ฒ์ ๊ดํ ๋ด์ฉ
- Privacy Strategies
- Respecting Restrictions
- Supporting Multiple Versions of iOS
- Preserving Your App's Visual Appearance Across Launches
- Tips for Developing a VoIP App
iOS์์ ์ด๋ฃจ์ด์ง๋ ์ฑ๊ฐ์ ํต์ ๋ฐฉ๋ฒ(AirDrop, URLs)์ ๋ํ ์๊ฐ์ ๋ฐ์ดํฐ ์ก/์์ ๋ฐฉ๋ฒ
- Supporting AirDrop
- Using URL Schemes to Communicate with Apps
์ ๋ ฅ ์๋ชจ์ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ ๋ฑ ์ฑ์ ์ค์ ๋ก ๊ตฌ๋ํ ๋ ์ฑ๋ฅ ํฅ์์ ์ํด ๊ณ ๋ คํด์ผํ ์ฌ๋ฌ๊ฐ์ง ๋ด์ฉ
- Reduce Your App's Power Consumption
- Use Memory Efficiently
- Tune Your Networking Code
- Improve Your Networking Code
- Improve Your File Management
- Make App Backups More Efficient
- Move Word off the Main Thread
์ ์์ ์ธ ์ฑ ๊ตฌ๋์ ์ํ iOS ์ฝ์ด ์์คํ ๋ฐ ์ฑ ์ค๊ณ์ ๊ดํ ๋ฌธ์
- ๋ณธ ๋ฌธ์๋ iOS ์ฑ์ ์ฒ์ ์ ์ํ๋ ์ฌ๋๋ค์ ์ํด์๊ฐ ์๋๋ผ, ์ด๋ฏธ ์ฑ์ ๊ฐ๋ฐํ์ฌ ๋ค๋ฌ๊ณ ํฅ์์ํค๋ ค๋ ๊ฐ๋ฐ์๋ค์ ์ํ ๊ฐ์ด๋์ ๋๋ค.
- ๋ง์ฝ iOS ๊ฐ๋ฐ์ด ์ฒ์์ด๋ผ๋ฉด Start Developing iOS Apps_Swift๋ฅผ ๋จผ์ ์ฝ์ด๋ณด์ธ์.
- iOS ๊ธฐ์ ์ ๋ํด ์ฌ๋์๊ฒ ์์๋ณด๋ ค๋ฉด About the iOS Technologies๋ฅผ ์ฐธ๊ณ ํ์ธ์.
Xcode๋ฅผ ์ด์ฉํด ์ ์๋ ๋ชจ๋ ํ๋ก์ ํธ๋ ์ฆ๊ฐ ์ฅ๋น์์ ๊ตฌ๋ ๋ ์ ์์ง๋ง, ๊ทธ๋ ๋ค๊ณ App Store์ ๋ฑ๋ก๋ ์ค๋น๊ฐ ์๋ฃ๋ ๊ฒ์ ์๋๋๋ค. ๋ชจ๋ ์ฑ์ ์ฌ์ฉ์์๊ฒ ์ข์ ์ฌ์ฉ ๊ฒฝํ(UX)์ ์ ๋ฌํ๊ธฐ ์ํด ์ด๋ ์ ๋์ ์์คํ ์ค์ ์ด ํ์ํฉ๋๋ค. ์ด๋ฒ ์น์ ์์๋ ์ฑ ์ค๊ณ ์ด๊ธฐ ๋จ๊ณ์์ ๊ณ ๋ คํด์ผํ ์ฑ์ ๊ธฐ๋ณธ ํํ ๋ฐ ๊ตฌ๋์ ๋ํด ์์๋ด ๋๋ค.
๋ชจ๋ ์ดํ์ ์๋์ ๋ฆฌ์์ค ๋ฐ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ํฌํจํด์ผํฉ๋๋ค.
- ์ ๋ณด ์์ฑ ๋ชฉ๋ก ํ์ผ(Info.plist)
- ์ฑ ์คํ ํ๋์จ์ด ์ฌ์
- ํ๊ฐ ์ด์์ ์ฑ ์์ด์ฝ
- ํ๊ฐ ์ด์์ ์ฑ ๋ฐ์นญ ์ด๋ฏธ์ง
iOS ์ฑ์ ์์ฑํ๊ฒ๋๋ฉด Xcode๋ ์ฑ์ bundle๋ก ๋ฌถ๋๋ฐ, bundle์ ์ฑ๊ณผ ๊ด๋ จ๋ ์์์ ๊ทธ๋ฃนํํด๋์ ํ์ผ ์์คํ ์ ๋๋ ํ ๋ฆฌ์ ๋๋ค. bundle์๋ ์ฑ ์คํ ํ์ผ, ์ฑ ์์ด์ฝ, ์ด๋ฏธ์ง ํ์ผ ๋ฐ ํ์งํ(localize)๋ ์ฝํ ์ธ ๋ฑ์ ๋ฆฌ์์ค ํ์ผ์ด ํฌํจ๋์ด์์ต๋๋ค.
-
์ ๋ณด ์์ฑ ๋ชฉ๋ก ํ์ผ(Info.plist) : Info.plist ํ์ผ์ ์ฑ ๊ตฌ์ฑ์ ๊ดํ ์ค์ํ ์ ๋ณด๊ฐ ํฌํจ๋ ๊ตฌ์กฐํ๋ ํ์ผ์ ๋๋ค. App Store ๋ฐ iOS์์ ์ฑ์ ๊ธฐ๋ฅ์ ํ์ธํ๋๋ฐ ์ฌ์ฉ๋๋ฉฐ, ๋ชจ๋ ์ฑ์ด Info.plist. ํ์ผ์ ํฌํจํด์ผํฉ๋๋ค.
- ๊ธฐ๋ณธ์ผ๋ก ์ ๊ณต๋๋ Info.plist ํ์ผ์๋ ํ์ํญ๋ชฉ์ ๋ํ ๊ธฐ๋ณธ๊ฐ์ด ์ค์ ๋์ด์์ผ๋ฉฐ, ํน์ ๊ธฐ๋ฅ์ ์ํ ํญ๋ชฉ ์ถ๊ฐ/๋ณ๊ฒฝ์ด ๊ฐ๋ฅํฉ๋๋ค.
- Wi-Fi ์ฐ๊ฒฐ, custom URL ์คํค๋ง ์ง์, ์ฌ์ง ์จ๋ฒ ์ ๊ทผ๋ฑ์ ์ํด์๋ Info.plist์ ์ ์ ํ ํค๋ฅผ ์ค์ ํด์ค์ผํฉ๋๋ค.
- Info.plist์ ๋ค์ํ ํค์ ๊ฐ์ ๋ํด ์์ธํ ์์๋ณด๋ ค๋ฉด About Info.plist Keys and Valuse๋ฅผ ์ฐธ๊ณ ํ์ธ์.
-
์ฑ ์์ด์ฝ : ๋ชจ๋ ์ฑ์ ๊ธฐ๊ธฐ์ ํ ํ๋ฉด๊ณผ App Store์ ํ์ํ ์์ด์ฝ์ ์ ๊ณตํด์ผ ํฉ๋๋ค.
- ์ฑ ์์ด์ฝ์ Image Assets์ ํฌํจ๋ฉ๋๋ค.
- ์์ด์ฝ์ ํฌ๊ธฐ๋ฅผ ํฌํจํ์ฌ ์์ด์ฝ์ ๋์์ธ ํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์์ธํ ๋ด์ฉ์ iOS Human Interface Guidelines์ ์ฐธ๊ณ ํ์ธ์.
-
๋ฐ์นญ ์ด๋ฏธ์ง : ๋ฐ์นญ ์ด๋ฏธ์ง๋ ์ฑ์ ์ฒ์ ๊ตฌ๋ํ ๋ ํ๋ฉด์ ์ ๊น ๋ณด์ด๋ ์ด๋ฏธ์ง๋ก, ์ฑ ํ๋ฉด์ ๊ตฌ์ฑํ๊ณ ์ฌ์ฉ์์๊ฒ ๋ณด์ฌ์ค ์ค๋น๊ฐ ์๋ฃ๋๋ฉด ๋ฐ์นญ ์ด๋ฏธ์ง๊ฐ ์ฌ๋ผ์ง๋๋ค.
- ์ฑ์ด foregrounde์์ background๋ก ๋ค์ด๊ฐ๋๋ ์ฌ์ฉ์ค์ธ ์ฑ์ ์ค๋ ์ท์ด ์์ฑ๋๊ณ , ๋ค์ foreground๋ก ๋๋์ ์ฌ๋๋ ๋ฐ์นญ ์ด๋ฏธ์ง๊ฐ ์๋ ์ค๋ ์ท์ ํ์ฉํฉ๋๋ค. ์ค๋๋๋ก ์ฑ์ ์คํํ์ง ์์ ๊ฒฝ์ฐ์๋ ์ค๋ ์ท์ ์ญ์ ํ๊ณ ๊ธฐ์กด์ ๋ฐ์นญ ์ด๋ฏธ์ง๋ฅผ ํ์ฉํ๊ฒ ๋ฉ๋๋ค.
- ๋ฐ์นญ ์ด๋ฏธ์ง์ ํฌ๊ธฐ ๋ฐ ๋์์ธ ๋ฐฉ๋ฒ์ ๋ํด์๋ iOS Human Interface Guidelines์ ์ฐธ๊ณ ํ์ธ์.
์ฌ์ฉ์ ๊ฐ์ธ ์ ๋ณด ๋ณดํธ ๋ฐ ์ฌ์ฉ์ ์ํ ์ฑ ์ค๊ณ๋ ๋๋จํ ์ค์ํฉ๋๋ค. ๋๋ถ๋ถ์ iOS ์ฅ๋น์๋ ์ฌ์ฉ์๊ฐ ์ธ๋ถ์ ๊ณต๊ฐํ๊ณ ์ถ์ง ์์ ๊ฐ์ธ ์ ๋ณด๊ฐ ํฌํจ๋์ด์์ต๋๋ค. ๊ฐ์ธ ์ ๋ณด๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์๋ ๋ฐ๋์ ํด๋น ๋ฒ๋ฅ ์ ์ค์ํ์ฌ ์ฌ์ฉ์์ ๋์๋ฅผ ์ป์ ํ์ ์ ๊ทผํด์ผํฉ๋๋ค.
- ๋ณดํธ๋ ๋ฐ์ดํฐ ๋ฐ ๋ฆฌ์์ค์ ๊ฒฝ์ฐ ์ธ์ฆํ์ธ ๋ฐ ์์ฒญ์ ์ํ ์ ์ฉ ํค์ API๋ฅผ ๊ฐ๊ฐ ์ ๊ณตํฉ๋๋ค.
- ์ฌ์ฉ์๋ ์ ๊ทผ ๊ถํ์ ์์คํ ์ค์ (Setting)์์ ์ธ์ ๋ ์ง ๋ณ๊ฒฝํ ์ ์์ผ๋ฏ๋ก, ํด๋น ํญ๋ชฉ์ ์ ๊ทผํ๊ธฐ ์ ์ ๊ถํ ๋ถ์ฌ ์ํ๋ฅผ ํ์ธํ์ญ์์ค.
- ์ ๊ทผ์ ์ฌ์ฉ์ ๊ถํ์ด ํ์ํ ํญ๋ชฉ์๋ ๋ค์๊ณผ ๊ฐ์ ๊ฒ์ด ์์ต๋๋ค.
- ๋ธ๋ฃจํฌ์ค, ์นด๋ฉ๋ผ, ๋ฌ๋ ฅ, ์ฐ๋ฝ์ฒ, ๊ฑด๊ฐ ์ ๋ณด, ํํท, ์์น์ ๋ณด, ๋ง์ดํฌ, ๊ธฐ๊ธฐ ๋ชจ์ , ์์ , ์ฌ์ง, ๋ฏธ๋ฆฌ ์๋ฆผ, ์๋ฆฌ, ์์ฑ์ธ์, ํฐ๋น ๋ฑ
* ์ค์์ฌํญ : ์ฑ์์ ๋ณดํธ๋ ํญ๋ชฉ์ ์ ๊ทผํ๋ ค๊ณ ํ๋ฉด ์์คํ ์์ ์ฌ์ฉ์์๊ฒ ์์ธ์ค ๊ถํ์ ์์ฒญํ๋ ๋ฉ์์ง(alert)๋ฅผ ํ์ํฉ๋๋ค. iOS 10 ๋ถํฐ๋ Info.plist์ ๊ฐ๊ฐ์ ๊ฐ์ธ ์ ๋ณด๋ฅผ ํ์ฉํ๋ ค๋ ๋ชฉ์ ๋ฌธ๊ตฌ๋ฅผ ๋ช ์ํ์ฌ ์ก์ธ์ค ๊ถํ ์์ฒญ ๋ฉ์์ง(alert)์ ๋ณด์ด๋๋ก ํด์ผํฉ๋๋ค.
iOS ์ฑ์ ๋ง์ ๊ตญ๊ฐ์ ๋ฐฐํฌ๋ ์ ์๊ธฐ ๋๋ฌธ์ ์ฑ ์ฝํ ์ธ ๋ฅผ ์ง์ญํํ๋ฉด ๋ ๋ง์ ์ฌ์ฉ์์๊ฒ ๋ค๊ฐ ๊ฐ ์ ์์ต๋๋ค. ์ฝํ ์ธ ๋ฅผ ํ์งํํ๋ ๊ณผ์ ์ ๊ฐ๋จํ ๊ณผ์ ์ ๋๋ค.
- ์ง์ญํ ๊ณผ์ ์ ์์ํ๋ฉด Xcode์์ ์ฑ์ ํ์งํ ๊ฐ๋ฅํ ๋ฆฌ์์ค ํ์ผ๋ก ๋ถ๋ฆฌํ๊ณ , ๊ฐ ๋ฆฌ์์ค๋ฅผ ์ธ์ด ๋ณ ํ๋ก์ ํธ(.lproj) ๋๋ ํ ๋ฆฌ๋ฅผ ์ ๊ณตํฉ๋๋ค.
- ์ผ๋ฐ์ ์ผ๋ก, iOS ์ฑ์์๋ ๋ค์ ์ ํ์ ๋ฆฌ์์ค ํ์ผ์ ํ์งํ๊ฐ ํ์ํฉ๋๋ค.
- ์คํ ๋ฆฌ ๋ณด๋ ํ์ผ, ๋ฐ์นญ ์ด๋ฏธ์ง ํ์ผ: ๋ฌธ์์ด์ด ํฌํจ๋ ๊ฒฝ์ฐ
- ์ค๋์ค ํ์ผ: ์์ฑ ํด์ค์ด ํฌํจ๋ ๊ฒฝ์ฐ
- ์ธ์ด ๋ณ ๋๋ ๋ฌธํ๋ณ ์ปจํ ์ธ ๊ฐ ํฌํจ๋์ด ์์ง ์์ ๊ฒฝ์ฐ ๋ฉํฐ ๋ฏธ๋์ด ํ์ผ์ ์ง์ญํ๋ ํ์ง ์์ต๋๋ค.
์ฑ์ ์์ฑ๋ ์ฝ๋์ ์์คํ ํ๋ ์ ์ํฌ๊ฐ์ ์ ๊ตํ ์ํธ์์ฉ์ ๋๋ค. ์์คํ ํ๋ ์ ์ํฌ๋ ๋ชจ๋ ์ฑ์ ์คํ์ ํ์ํ ๊ธฐ๋ณธ ์ธํ๋ผ๋ฅผ ์ ๊ณตํ๋ฉฐ, ๊ฐ๋ฐ์๋ ์ฑ์ ์ด์ธ๋ฆฌ๋ ๋ชจ์๊ณผ ๋๋์ ์ฝ๋๋ก ๊ตฌํํฉ๋๋ค. ์ด ๋์ ํจ๊ณผ์ ์ธ ์ํธ์์ฉ์ ์ํด iOS ์๋์๋ฆฌ์ ๋ํ ์ดํด๊ฐ ํ์ํฉ๋๋ค.
๋ชจ๋ C ๊ธฐ๋ฐ์ ํ๋ก๊ทธ๋จ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก, iOS ์ฑ์ ์ง์ ์ ์ญ์ main ํจ์ ์ ๋๋ค. iOS์์์ ๋ค๋ฅธ ์ ์ main ํจ์๋ฅผ ์ง์ ์์ฑํ์ง ์๋๋ค๋ ์ ์ ๋๋ค. Xcode๊ฐ ๊ธฐ๋ณธ main ํจ์๋ฅผ ์ ๊ณตํด์ฃผ๋ฉฐ, ์ ๊ณต๋ main ํจ์๋ฅผ ์์ ํด์๋ ์๋ฉ๋๋ค.
- main ํจ์๋ UIKit ํ๋ ์์ํฌ์ ์ ์ด๊ถํ์ ๋๊ฒจ์ค๋๋ค. UIApplicationMain ํจ์๋ ์ฑ์ ํต์ฌ ๊ฐ์ฒด๋ฅผ ๋ง๋ค๊ณ , ์คํ ๋ฆฌ ๋ณด๋ ํ์ผ๋ก๋ถํฐ UI๋ฅผ ๋ก๋ํ๊ณ , ์ด๊ธฐ ์ค์ ์ ์ํ ์ฝ๋๋ฅผ ํธ์ถํ๊ณ , ์ฑ์ ์คํ ๋ฃจํ๋ฅผ ๋์์ํต๋๋ค.
- ๊ฐ๋ฐ์๊ฐ ์ ๊ณตํด์ผํ๋ ๋ถ๋ถ์ ์คํ ๋ฆฌ ๋ณด๋ํ์ผ๊ณผ ์ฌ์ฉ์ ์ง์ ์ด๊ธฐํ ์ฝ๋์ ๋๋ค.
์ฑ์ ์์ํ๋ ๋์ UIApplicationMain ํจ์๋ ํต์ฌ ๊ฐ์ฒด๋ฅผ ์ค์ ํ๊ณ , ์ฑ ์คํ์ ์ค๋นํฉ๋๋ค. UIApplication ๊ฐ์ฒด๋ ๋ชจ๋ iOS ์ฑ์ ํต์ฌ์ผ๋ก, ์์คํ ๊ณผ ์ฑ ๊ฐ์ฒด ์ฌ์ด์ ์ํธ์์ฉ์ ์ํํ๊ฒ ํ๋ ์ญํ ์ ํฉ๋๋ค.
- iOS ์ฑ์ Model View Controller ์ํคํ ์ฒ(MVC ํจํด)๋ฅผ ์ฌ์ฉํฉ๋๋ค. MVC ํจํด์ ์ฑ์ ๋ฐ์ดํฐ ๋ถ๋ถ(ํน์ ๋น์ง๋์ฆ ๋ก์ง)๊ณผ ์ด๋ฅผ ์ด๋ป๊ฒ ๋ณด์ฌ์ค์ง์ ๋ํ ๋ถ๋ถ์ ๋ถ๋ฆฌํฉ๋๋ค. ์ด๋ฌํ ํจํด์ ํ๋ฉด ํฌ๊ธฐ๊ฐ ๋ค๋ฅธ ๋ค์ํ ์ฅ์น์์ ์ฑ์ ๊ตฌ๋ํ๋๋ฐ ๋งค์ฐ ์ค์ํ ์ญํ ์ ํฉ๋๋ค.
์ฑ์ main run loop๋ ๋ชจ๋ ์ฌ์ฉ์ ๊ด๋ จ ์ด๋ฒคํธ๋ฅผ ์ฒ๋ฆฌํฉ๋๋ค. UIApplication ๊ฐ์ฒด๋ ์คํ์ main run loop๋ฅผ ์ค์ ํ๊ณ , ์ด๋ฅผ ์ฌ์ฉํด ์ด๋ฒคํธ๋ฅผ ์ฒ๋ฆฌํ๊ณ UI ์ ๋ฐ์ดํธ๋ฅผ ์ฒ๋ฆฌํฉ๋๋ค. ์ด๋ฆ์์ ์ ์ ์๋ฏ์ด, main run loop๋ ์ฑ์ main thread์์ ์คํ๋๋ฉฐ, ์ฌ์ฉ์ ์ด๋ฒคํธ๊ฐ ์ ๋ ฅ๋๋ฉด ์์ฐจ์ ์ผ๋ก ์ฒ๋ฆฌํฉ๋๋ค.
- ์ฌ์ฉ์๊ฐ ์ฅ๋น์ ์ํธ ์์ฉํ๋ฉฐ ๋ฐ์๋ ์ด๋ฒคํธ๋ UIKit์ ์ํด ์ค์ ๋ ํน์ ํฌํธ๋ฅผ ํตํด ์ฑ์ ์ ๋ฌ๋ฉ๋๋ค. ์ด๋ฒคํธ๋ค์ ๋ด๋ถ queue์์ ๋๊ธฐํ๊ณ ์๋ค๊ฐ main run loop์ ํ๋์ฉ ์ ๋ฌ ๋ฉ๋๋ค.
- ๋ค์ํ ์ ํ์ ์ด๋ฒคํธ๋ฅผ iOS ์ฑ์ ์ ๋ฌ ํ ์ ์์ต๋๋ค. ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ์ด๋ฒคํธ์๋ ํฐ์น, ์๊ฒฉ ์ ์ด, ๋ชจ์ , ๊ฐ์๋๊ณ ๋ฐ ์์ด๋ก ์ค์ฝํ ์ด๋ฒคํธ ๋ฑ์ด ์์ต๋๊ฐ. ๊ฐ ์ด๋ฒคํธ์ ๋ํ ์์ธํ ๋ด์ฉ์ Event Handling Guid for UIKit Apps์์ ํ์ธ ํ ์ ์์ต๋๋ค.
iOS ์ฑ์ ์ธ์ ๋ ๋ค์ ์ค ํ๋์ ์ํ๊ฐ์ ์ง๋๊ฒ๋ฉ๋๋ค.
* Not running : ์ฑ์ด ์คํ๋์ง ์์๊ฑฐ๋ ํน์ ์์คํ
์ ์ํด ์ข
๋ฃ๋ ์ํ
* Inactive : ์ฑ์ด foreground์์ ์คํ ์ค์ด์ง๋ง, ์ผ์์ ์ผ๋ก ์ด๋ฒคํธ๋ฅผ ๋ฐ์ง ๋ชปํ๋ ์ํ
* Active : ์ฑ์ด foreground์์ ์คํ ์ค์ด๋ฉฐ, ์ฌ์ฉ์ ์ด๋ฒคํธ๋ฅผ ๋ฐ์ ์ ์๋ ์ํ
* Background : ์ฑ์ด ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์ฝ๋๋ฅผ ์คํ ์ค์ธ ์ํ
* Suspended : ๋ฐฑ๊ทธ๋ผ์ด๋์ ์๋ ์ฑ์ด ๋์ด์ ์ฝ๋๋ฅผ ์คํํ์ง ์๋ ์ ์ง๋ ์ํ
- iOS ์์คํ ์ ์ ์ฒด ์์คํ ์์ ๋ฐ์ํ๋ ์์ ์ ์ฒ๋ฆฌํ๋ฉฐ ํด๋น ์ฑ์ ์ฌ๋ฌ๊ฐ์ง ์ํ๋ก ์ด๋์ํต๋๋ค. ์๋ฅผ ๋ค์ด ์ฌ์ฉ์๊ฐ ํ ๋ฒํผ์ ๋๋ฅด๊ฑฐ๋ ์ ํ๊ฐ ๊ฑธ๋ ค์ค๋ฉด ํ์ฌ ์คํ ์ค์ธ ์ฑ์ด ๋นํ์ฑ ์ํ๋ก ๋ณํ๊ฒ ๋ฉ๋๋ค.
- ๋๋ถ๋ถ์ ์ํ ์ ํ์๋ appDelegate ๋ฉ์๋๊ฐ ํธ์ถ ๋ฉ๋๋ค. ๊ฐ ๋ฉ์๋๋ฅผ ์ ์ ํ ์ฌ์ฉํ๋ฉด ์ํ๋ณํ์ ๋์ํ ์ ์์ต๋๋ค.
application:willFinishLaunchingWithOptions:์ฑ์์ ์ฒ์์ผ๋ก ์ฝ๋๋ฅผ ์คํ ํ ์ ์์ต๋๋ค.application:didFinishLaunchingWithOptions:์ฌ์ฉ์์๊ฒ ์ฑ์ ํ๋ฉด์ด ๋ณด์ฌ์ง๊ธฐ ์ ์ ๋ง์ง๋ง์ผ๋ก ์ด๊ธฐํ๋ฅผ ์ํํ ์ ์์ต๋๋ค.applicationDidBecomeActive:์ฑ์ด foreground๋ก ์ ํ๋๋ ์์ ์ ์๋ ค์ค๋๋ค.applicationWillResignActive:์ฑ์ด foreground ์ํ์์ inactive ๋๋ ์์ ์ ๋๋ค.applicationDidEnterBackground:์ฑ์ด background์์ ์คํ๋๊ณ ์์ผ๋ฉฐ, ์ธ์ ๋ ์ง ์ ์ง๋ ์ ์์์ ์๋ฆฝ๋๋ค.applicationWillEnterForeground:์ฑ์ด background์์ foreground๋ก ์ง์ ํ๊ณ ์์ง๋ง ์์ง active ๋ ์ํ๋ ์๋๋๋ค.applicationWillTerminate:์ฑ์ด ์ข ๋ฃ๋๊ณ ์์์ ์๋ฆฌ๋ ๋ฉ์๋ ์ ๋๋ค. ํ์ง๋ง ์ฑ์ด ์์คํ ์ ์ํด ์ ์ง๋์์ ๊ฒฝ์ฐ์๋ ํธ์ถ ๋์ง ์์ต๋๋ค.
์ฑ์ ์ธ์ ๋ ์ง ์ข ๋ฃ๋ ์ ์์ด์ผ ํ๋ฉฐ, ์ข ๋ฃํ๊ธฐ ์ ์ ์ฌ์ฉ์ ์ ๋ณด๋ฅผ ์ ์ฅํ๊ฑฐ๋ ํน๋ณํ ๊ธฐ๋ฅ์ ์ํ์ ์ํด ๊ธฐ๋ค๋ฆฌ์ง ์์ต๋๋ค. ์์คํ ์ ์ํ ์ฑ ์ข ๋ฃ๋ ์ฑ ์๋ช ์ฃผ๊ธฐ์์ ์ ์์ ์ธ ๋ถ๋ถ์ ๋๋ค. ๋ณดํต์ ์์คํ ์ด ์ฌ์ฉํ์ง ์๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ์ํ์ฌ ๋ค๋ฅธ ์ฑ์ ์คํ ํ ์ ์๋ ๊ณต๊ฐ์ ํ๋ณดํ๊ธฐ ์ํด ์ข ๋ฃํ์ง๋ง, ์ค์๋์ ํ๊ฑฐ๋ ์ฑ์ด ์ ์ ํ๊ฒ ์๋ตํ์ง ์๋ ๊ฒฝ์ฐ์๋ ์ฑ์ ์ข ๋ฃ ์ํฌ ์ ์์ต๋๋ค.
- ์์คํ ์ ์ํด ์ ์ง๋ ์ฑ์ ์ข ๋ฃ ๋ ๋ ์๋ฆผ์ ๋ฐ์ง ์์ง ์๊ณ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ์๋นํ๊ฒ ๋ฉ๋๋ค.
- ์ฌ์ฉ์๊ฐ ์๋์ ์ผ๋ก ์ฑ์ ์ข ๋ฃํ๋ ๊ฒฝ์ฐ ์ญ์ ์ฑ ์ข ๋ฃ๊ฐ ์ฑ์ ์ ์ก๋์ง ์์ต๋๋ค.
์์คํ ์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ฑ์ main thread๋ฅผ ์์ฑํ๋๋ฐ, ํ์์ ๋ฐ๋ผ ์ถ๊ฐ thread๋ฅผ ์์ฑํ์ฌ ๋ค๋ฅธ ์์ ์ ์ํ ํ ์ ์์ต๋๋ค. iOS ์ฑ์ ๊ฒฝ์ฐ, ์ง์ thread๋ฅผ ๋ง๋ค๊ณ ๊ด๋ฆฌํ๋ ๋์
Grand Central Dispatch(GCD),operation objects,asynchronousํ๋ก๊ทธ๋๋ฐ ๊ธฐ๋ฒ์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
- GCD๋ฅผ ์ด์ฉํ๋ฉด ์ํํ๊ณ ์ถ์ ์์ ๊ณผ, ์์ ์ ์์๋ฅผ ์ ํ ์ ์์ง๋ง, ์์คํ ์ด CPU์์ ์์ ์ ๊ฐ์ฅ ํจ๊ณผ์ ์ผ๋ก ์ํํ ์ ์๋ ๋ฐฉ๋ฒ์ ๊ฒฐ์ ํ ์ ์๋๋ก ํ๋ ๊ฒ์ด ์ ๋ฐ์ ์ธ ์ฑ๋ฅ์ ํฅ์์ํค๊ณ , ์ฝ๋๋ฅผ ๋จ์ํ ์ํฌ ์ ์์ต๋๋ค.
- Thread์ concurrency(๋์์ฑ)๋ฅผ ์ฌ์ฉํ ๋ ๋ค์ ์ฌํญ์ ๊ณ ๋ คํ์ธ์.
- View, Core Animation ๊ทธ๋ฆฌ๊ณ UIKit ํด๋์ค์ ๊ด๋ จ๋ ์์ ์ main thread์์ ์คํ๋์ด์ผ ํฉ๋๋ค.
- ์ค๋ ๊ฑธ๋ฆฌ๋ ์์ ์ ๋ฐฑ๊ทธ๋ผ์ด๋ ์ค๋ ๋์์ ์ํํด์ผํฉ๋๋ค. ๋คํธ์ํฌ ์์ ์ ํฌํจํ๊ฑฐ๋, ํ์ผ์ ์ ๊ทผํ๊ฑฐ๋, ๋ง์ ์์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ ๋๋ GCD๋ฅผ ์ด์ฉํ์ฌ ๋น๋๊ธฐ๋ก ์ํํด์ผํฉ๋๋ค.
- GCD ๋ฐ operation object๋ฅผ ์ฌ์ฉํ ์์ ๋ฐฉ๋ฒ์ ๋ํด์๋ Concurrency Programming Guide๋ฅผ ์ฐธ๊ณ ํ์ธ์.
์ฌ์ฉ์๊ฐ ์ฑ์ ์ฌ์ฉํ์ง ์์ ๊ฒฝ์ฐ ์์คํ ์ ์ฑ์ ๋ฐฑ๊ทธ๋ผ์ด๋ ์ํ๋ก ์ ํ์ํต๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ๋ฐฑ๊ทธ๋ผ์ด๋ ์ํ๋ ์ ์ง ์ํ(suspended)๋ก ๊ฐ๋ ๊ธธ์ ๋๋ค. ์ฑ์ ์ ์ง ์ํค๋ ์ผ์ ๋ฐฐํฐ๋ฆฌ ์๋ช ์ ํฅ์ ์ํค๋ ์ผ์ด๋ฉฐ, ๋ค๋ฅธ ์ฑ์ด foreground์์ ์คํ ๋ ์ ์๋ ๋ฆฌ์์ค๋ฅผ ์ ๊ณตํด์ค๋๋ค. ํ์ง๋ง ๋ชจ๋ ์ฑ์ด ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์ ์ง๋๋ ๊ฒ์ ์๋๋๋ค. ์๋ฅผ ๋ค์ด ํ์ดํน ์ฑ์ ๋ฐฑ๊ทธ๋ผ์ด๋์์๋ ์ฌ์ฉ์์ ์์น๋ฅผ ์ถ์ ํด์ผํ๋ฉฐ, ์ค๋์ค ์ฑ์ ์ ๊ธํ๋ฉด์์๋ ๊ณ์ ์์ ์ ์ฌ์ํ ์ ์์ด์ผ ํฉ๋๋ค. ์ด๋ ๊ฒ ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์ฑ์ ์คํํ๋ ๊ฒ์ด ํ์ํ๋ค๊ณ ํ๋จ๋๋ฉด iOS๋ ๋ฐฐํฐ๋ฆฌ๋ฅผ ๋ง์ด ์๋ชจํ์ง ์๊ณ ํจ์จ์ ์ผ๋ก ์ํ ํ ์ ์๋๋ก ๋ค์๊ณผ ๊ฐ์ ๊ธฐ์ ์ ์ ๊ณตํฉ๋๋ค.
- foreground์์ ์งง์ ์์ ์ ํ๋ ์ฑ์ ๋ฐฑ๊ทธ๋ผ์ด๋๋ก ์ ํ๋ ๋ ํด๋น ์์ ์ ์๋ฃํ ์๊ฐ์ ์์ฒญํ ์ ์์ต๋๋ค.
- foreground์์ ๋ค์ด๋ก๋๋ฅผ ์์ํ๋ ์ฑ์ ๋ค์ด๋ก๋ ๊ด๋ฆฌ๋ฅผ ์์คํ ์ ์ ํ ํ ์ ์์ผ๋ฏ๋ก, ๋ค์ด๋ก๋๊ฐ ๋๋ ๋์ ์ฑ์ด ์ค์ง๋๊ฑฐ๋ ์ข ๋ฃ๋์ง ์์ต๋๋ค.
- ํน์ ์ ํ์ ์์ ์ ์ง์ํ๊ธฐ ์ํด ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์คํํ๋ ์ฑ์ ํ๋ ์ด์์ ๋ฐฑ๊ทธ๋ผ์ด๋ ์คํ ๋ชจ๋์ ๋ํ ์ง์์ ์ ์ธ ํ ์ ์์ต๋๋ค.
๋ฐฑ๊ทธ๋ผ์ด๋๋ก ์ด๋ํ ์ฑ์ด ์์ ์ค์ธ ์ผ์ ์๋ฃํ๊ธฐ ์ํด ์ถ๊ฐ์ ์ธ ์๊ฐ์ด ํ์ํ ๊ฒฝ์ฐ,
UIApplication๊ฐ์ฒด์beginBackgroundTaskWithName : expirationHandler :๋๋beginBackgroundTaskWithExpirationHandler :๋ฉ์๋๋ฅผ ํธ์ถํ์ฌ ์์ ์ด ์๋ฃ๋๊ธฐ ๊น์ง์ ์ถ๊ฐ ์๊ฐ์ ์์ฒญ ํ ์ ์์ต๋๋ค. ์ ๋ฉ์๋ ์ค ํ๋๋ฅผ ํธ์ถํ๋ฉด ์ฑ์ ์ผ์์ ์ผ๋ก ์ค์ง๊ฐ ์ง์ฐ๋๊ณ , ์์ ์ ๋ง์ ์คํ ํ ์ ์์ต๋๋ค. ์์ ์ด ๋๋ ์ฑ์endBackgroundTask:๋ฉ์๋๋ฅผ ํธ์ถํ์ฌ ์์คํ ์ ์์ ์ ๋ง์ณค์์ ์๋ฆฝ๋๋ค.
expirationHandler :์ ์ข ๋ฃํ๊ธฐ ์ ์ ์ํํด์ผํ๋ ์ฝ๋๋ฅผ ์ถ๊ฐ ํ ์ ์์ง๋ง, ์ด๋ ์คํ๋๋ ์์ ์ด ๋๋ฌด ์ค๋ ๊ฑธ๋ฆฌ์ง ์์์ผํฉ๋๋ค.- ์์
์ ์ฒ๋ฆฌํ๋๋ฐ ๋จ์ ์๊ฐ์ ์๊ณ ์ถ๋ค๋ฉด
UIApplication์backgroundTimeRemaining๊ฐ์ ํ์ธํ์ธ์.
ํ์ผ์ ๋ค์ด๋ก๋ ํ ๋๋
NSURLSession(URLSession)๊ฐ์ฒด๋ฅผ ์ด์ฉํด ๋ค์ด๋ก๋๋ฅผ ์์ํด์ผ ์ฑ์ด ์ค์ง ๋๊ฑฐ๋, ์ข ๋ฃ ๋ ๊ฒฝ์ฐ ์์คํ ์์ ๋ค์ด๋ก๋ ํ๋ก์ธ์ค๋ฅผ ์ ์ด ํ ์ ์์ต๋๋ค. ๋ฐฑ๊ทธ๋ผ์ด๋ ๋ค์ด๋ก๋๋ฅผ ์ง์ํ๋NSURLSessionConfiguration๊ฐ์ฒด๋ฅผ ํตํด ์์ ์ด ์์๋๋ฉด ์ ์ ํ ์๊ฐ์ ์ ๋ก๋ ๋๋ ๋ค์ด๋ก๋ ์์ ์ ์์คํ ์ ์ ๋ฌํฉ๋๋ค.
- ์ฑ์ด ์คํ์ค์ผ๋ ์์
์ด ์๋ฃ๋๋ฉด ์ธ์
๊ฐ์ฒด๋ ์ผ๋ฐ์ ์ธ ๋ฐฉ์์ผ๋ก
delegate์ ์๋ ค์ค๋๋ค. - ์์ ์ด ๋๋์ง ์์ ์ํ์์ ์์คํ ์ด ์ฑ์ ์ข ๋ฃํ๋ฉด ์์คํ ์ ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์์ ์ ๊ณ์ ๊ด๋ฆฌํฉ๋๋ค.
- ์ฌ์ฉ์๊ฐ ์ฑ์ ๊ฐ์ ๋ก ์ข ๋ฃํ๋ฉด ๋ณด๋ฅ์ค์ธ ์์ ์ด ์ทจ์๋ฉ๋๋ค.
๊ตฌํํ๋๋ฐ ๋ง์ ์๊ฐ์ด ํ์ํ ์์ ์ ๊ฒฝ์ฐ, ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์คํ ๋ ์์๋๋ก ํน์ ๊ถํ์ ์์ฒญํด์ผํฉ๋๋ค. ๋ฐฑ๊ทธ๋ผ์ด๋ ์คํ ๊ธฐ๋ฅ์ ์ํด์๋.
Project Setting-Capabilities-Background Modes์ต์ ์ ์ ํํด์ผํ๋ฉฐ, ์ด๋ ๊ฒํ๋ฉด Info.plist ํ์ผ์UIBackgroundModeํค๊ฐ ์ถ๊ฐ๋ฉ๋๋ค. iOS์์๋ ์๋์ ๊ฐ์ ํน์ ์ ํ์ ๊ธฐ๋ฅ๋ง ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์คํ ํ ์ ์์ต๋๋ค.
* ์์
ํ๋ ์ด์ด ์ฑ๊ณผ ๊ฐ์ด ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์ฌ์ฉ์์๊ฒ ๋ฏธ๋์ด ์ฝํ
์ธ ๋ฅผ ์ฌ์ํ๋ ์ฑ
* ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์ค๋์ค ์ฝํ
์ธ ๋ฅผ ๋
น์ํ๋ ์ฑ
* ๋ด๋น๊ฒ์ด์
์ฑ๊ณผ ๊ฐ์ด ํญ์ ์ฌ์ฉ์์๊ฒ ์์น ์ ๋ณด๋ฅผ ์ ๊ณตํ๋ ์ฑ
* VoIP (Voice over Internet Protocol)๋ฅผ ์ง์ํ๋ ์์ฉ ํ๋ก๊ทธ๋จ
* ์๋ก์ด ์ฝํ
์ธ ๋ฅผ ์ ๊ธฐ์ ์ผ๋ก ๋ค์ด๋ก๋ํ๊ณ ์ฒ๋ฆฌํด์ผํ๋ ์ฑ
* ์ธ๋ถ ์ก์ธ์๋ฆฌ๋ฅผ ์ ๊ธฐ์ ์ผ๋ก ์
๋ฐ์ดํธํ๋ ์ฑ
์๋์ ์ฑ์ด ์ค์ง๋์๊ฑฐ๋ ๋ฐฑ๊ทธ๋ผ์ด๋์ ์์๋ ์ฌ์ฉ์์ ์์ ์ ๋์ ์๋ ๋ฐฉ๋ฒ์ ๋๋ค. ๋ก์ปฌ ์๋ฆผ์ ์ฌ์ด๋, ๋ฐฐ์ง, ์๋ฆผ ๊ธฐ๋ฅ์ ์ด์ฉํ์ฌ ์ฌ์ฉ์์๊ฒ ์๋ฆด ์ ์์ผ๋ฉฐ ์ฌ์ฉ์๋ ์ฑ์ foreground๋ก ๋๋๋ ค ๋์์ง ๊ฒฐ์ ํด์ผํฉ๋๋ค. ์ฑ์ด ์ด๋ฏธ foreground์์ ์คํ์ค์ธ ๊ฒฝ์ฐ, ๋ก์ปฌ ์๋ฆผ์ ์ฌ์ฉ์์๊ฒ ์ ๋ฌ๋์ง ์์ต๋๋ค.
- ๋ก์ปฌ ์๋ฆผ์ ์์ฝํ๋ ค๋ฉด
UILocalNotificationํด๋์ค์ ์ธ์คํด์ค๋ฅผ ๋ง๋ค๊ณ ๋งค๊ฐ๋ณ์๋ฅผ ๊ตฌ์ฑํ ๋ค์UIApplicationํด๋์ค์ ๋ฉ์๋๋ฅผ ์ด์ฉํด ์ผ์ ์ ์์ฝ ํ ์ ์์ต๋๋ค. - ๋ก์ปฌ ์๋ฆผ์ ์๋ฆผ์ ์ ํ(์๋ฆฌ, ์๋ฆผ, ๋ฐฐ์ง) ๋ฐ ์๋ฆผ ์๊ฐ์ ๋ํ ์ ํ ์ ํ ์ ์์ต๋๋ค.
UIApplicationํด๋์ค์ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ์์ฝ๋ ์๋ฆผ์ ์ทจ์ํ๊ฑฐ๋ ์๋ฆผ ๋ชฉ๋ก์ ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค. ์์ธํ ๋ด์ฉ์ Local and Remote Notification Programming Guide๋ฅผ ์ฐธ๊ณ ํ์ธ์.
๋ฐฑ๊ทธ๋ผ์ด๋ ์คํ์ ์ง์ํ๋ ๊ฒฝ์ฐ, ์์คํ ์ด ์ด๋ฒคํธ ์ฒ๋ฆฌ๋ฅผ ์ํด ์ฑ์ ์ฌ์คํ ์ํฌ ์ ์์ต๋๋ค. ์ฌ์ฉ์์ ์ํด ๊ฐ์ ๋ก ์ฑ์ด ์ข ๋ฃ๋์ง ์์ ์ด์ ๋ค์๊ณผ ๊ฐ์ ์ด๋ฒคํธ ์ค ํ๋๊ฐ ๋ฐ์ํ๋ฉด ์์คํ ์ด ์์๋ก ์ฑ์ ์ฌ์คํํ๊ฒ๋ฉ๋๋ค.
* ์์น ์ฑ : ์ฑ์ ์ง์ ๋ ํน์ ์ง์ญ์ ๋ค์ด์์์ ์ธ์งํ์๋
* ์ค๋์ค ์ฑ : ์ผ๋ถ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํด(์ค๋์ค ์ฌ์ ํน์ ๋ง์ดํฌ ์ฌ์ฉ)
* ๋ธ๋ฃจํฌ์ค ์ฑ : ์ฐ๊ฒฐ๋ ์ฃผ๋ณ ๊ธฐ๊ธฐ์์ ๋ฐ์ดํฐ๋ฅผ ์์ ํ๊ฑฐ๋, ์ค์์ผ๋ก๋ถํฐ ๋ช
๋ น์ ๋ฐ์ ๋
* ๋ฐฑ๊ทธ๋ผ์ด๋ ๋ค์ด๋ก๋ ์ฑ : ๋ค์ด๋ก๋๋ฅผ ์ฑ๊ณต์ ์ผ๋ก ์๋ฃํ๊ฑฐ๋ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ ๋
- ์ฌ์ฉ์๊ฐ ๊ฐ์ ๋ก ์ฑ์ ์ข ๋ฃํ ๊ฒฝ์ฐ์๋ ์์คํ ์ด ์ฑ์ ์ฌ์คํ ํ์ง ์์ง๋ง, iOS8 ์ด์์ ์ฅ๋น์์ ์์น์ฑ์ ์ฌ์คํ๋ฉ๋๋ค.
- ๋ง์ผ ๊ธฐ๊ธฐ๊ฐ ๋น๋ฐ๋ฒํธ(์ง๋ฌธ)์ผ๋ก ๋ณดํธ์ค์ด๋ฉด ์ฌ์ฉ์๊ฐ ๋จผ์ ๊ธฐ๊ธฐ๋ฅผ ์ ๊ธํด์ ํด์ผ ๋ฐฑ๊ทธ๋ผ์ด๋ ์ํ์์ ์ฑ์ด ์คํ๋ฉ๋๋ค.
Foreground ์ํ์ ์ฑ์ ์์คํ ๋ฆฌ์์ค ๋ฐ ํ๋์จ์ด ์ฌ์ฉ๊ณผ ๊ด๋ จํด ํญ์ ๋ฐฑ๊ทธ๋ผ์ด๋ ์ํ์ ์ฑ๋ณด๋ค ์ฐ์ ์ ๋ฉ๋๋ค. ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์คํ๋๋ ์ฑ์ ์ด๋ฌํ ๋ถ๊ท ๋ฑ์ ๋๋นํ์ฌ ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์คํ๋ ๋์์ ์ค๋นํด์ผํฉ๋๋ค. ํนํ ๋ฐฑ๊ทธ๋ผ์ด๋๋ก ์ด๋ํ๋ ์ฑ์ ๋ค์ ๊ฐ์ด๋๋ฅผ ์ค์ํด์ผ ํฉ๋๋ค.
- ์ฝ๋์์ OpenGL ES๋ฅผ ํธ์ถํ์ง ๋ง์ญ์์ค. ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์คํ๋๋ ๋์ EAGLContext๊ฐ์ฒด๋ฅผ ๋ง๋ค๊ฑฐ๋ OpenGL ES ๋๋ก์ ๋ช ๋ น์ ์คํํ๋ฉด ์ฑ์ ์ฆ์ ์ข ๋ฃ๋ฉ๋๋ค. ๋ฐฑ๊ทธ๋ผ์ด๋์์ OpenGL ES๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ๋ํด์๋ OpenGL Programming Guide๋ฅผ ์ฐธ๊ณ ํ์ธ์.
- ์ฑ์ด ์ ์ง ๋๊ธฐ ์ ์ Bonjour ๊ด๋ จ ์๋น์ค๋ฅผ ์ทจ์ํ์ญ์์ค. ์ฑ์ด ๋ฐฑ๊ทธ๋ผ์ด๋๋ก ์ด๋ํด ์ ์ง๋๊ธฐ ์ ์ Bonjour๋ฅผ ์ทจ์ํ๊ณ ๋คํธ์ํฌ ์๋น์ค์ ๊ด๋ จ๋ ์์ ๋๊ธฐ ์์ผ์ ๋ซ์์ผ ํฉ๋๋ค. ๋ง์ฝ Bounjour ์๋น์ค๋ฅผ ์ง์ ์ทจ์ํ์ง ์์ผ๋ฉด ์์คํ ์ด ์๋น์ค๋ฅผ ์ข ๋ฃ์ํค๊ฒ๋ฉ๋๋ค.
- ๋คํธ์ํฌ ๊ธฐ๋ฐ ์์ผ์ ์ฐ๊ฒฐ ์ค๋ฅ๋ฅผ ์ฒ๋ฆฌ ํ ์ ์๋๋ก ์ค๋นํ์ญ์์ค. ์์คํ ์ ์ฌ๋ฌ๊ฐ์ง ์ด๋ฅ๋ก ์ฑ์ด ์ ์ง๋ ๋์ ์์ผ ์ฐ๊ฒฐ์ ํด์ ํ ์ ์์ต๋๋ค. ์ ํธ ์์ค์ด๋ ๋คํธ์ํฌ ์ ํ ์ค๋ฅ์ ๋๋น๋์ด์์ด์ผ ์์์น ๋ชปํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ง ์์ต๋๋ค.
- ๋ฐฑ๊ทธ๋ผ์ด๋๋ก ์ด๋ํ๊ธฐ ์ ์ ์ฑ ์ํ๋ฅผ ์ ์ฅํ์ญ์์ค. ์ ์ง๋ ์ฑ์ ๋ฉ๋ชจ๋ฆฌ์์ ์ ๊ฑฐ๋๊ธฐ ์ ์ ์ฑ์ ์๋ฆผ์ด ์ ๊ณต๋์ง ์์ด ๋๋ฌธ์ ์ํ๋ณด์กด ๋ฉ์ปค๋์ฆ์ ํ์ฉํด ์ฑ์ UI ์ํ๋ฅผ ๋์คํฌ์ ์ ์ฅํด์ผํฉ๋๋ค. ์ด ๊ธฐ๋ฅ์ ๋ํ ์์ธํ ๋ด์ฉ์ Preserving Your Appโs Visual Appearance Across Launches์ ์ฐธ๊ณ ํ์ธ์.
- ๋ฐฑ๊ทธ๋ผ์ด๋๋ก ์ด๋ํ๊ธฐ ์ ์ ๋ถํ์ํ ๊ฐ์ฒด์ ๋ํ ๊ฐํ ์ฐธ์กฐ๋ฅผ ํด์ ํ์ธ์. ์ฑ์์ ์ฉ๋์ด ํฐ ๊ฐ์ฒด(์ด๋ฏธ์ง)๋ฅผ ๊ด๋ฆฌํ๋ ๊ฒฝ์ฐ, ๋ฐฑ๊ทธ๋ผ์ด๋๋ก ์ด๋ํ๊ธฐ ์ ์ ํด๋น ์บ์์ ๋ํ ๊ฐํ ์ฐธ์กฐ๋ฅผ ํด์ ํด์ผํฉ๋๋ค.
- ์ ์ง๋๊ธฐ ์ ์ ๊ณต์ ์์คํ ์์ ์ฌ์ฉ์ ์ค์งํ์ญ์์ค. ์ฃผ์๋ก, ์บ๋ฆฐ๋, ๋ฐ์ดํฐ ๋ฒ ์ด์ค์ ๊ฐ์ด ๊ณต์ ์์คํ ๋ฆฌ์์ค์ ์ํธ์์ฉํ๋ ์ฑ์ ์ ์ง๋๊ธฐ ์ ์ ํด๋น ๋ฆฌ์์ค ์ฌ์ฉ์ ์ค์งํด์ผํฉ๋๋ค.
- View ์ ๋ฐ์ดํธ๋ฅผ ํ์ง ๋ง์ญ์์ค. ์ฑ์ด ๋ฐฐ๊ฒฝ์ ์์๋๋ View๊ฐ ํ์๋์ง ์์ผ๋ฏ๋ก ์ ๋ฐ์ดํธ๋ฅผ ํ์ง์๋ ๊ฒ์ด ์ข์ต๋๋ค.
- ์ธ๋ถ ์ก์ธ์๋ฆฌ์ ๋ํ ์ฐ๊ฒฐ ์๋ฆผ ๋ฐ ์ฐ๊ฒฐ ํด์ ์๋ฆผ์ ์๋ตํ์ธ์.
- ๋ฐฑ๊ทธ๋ผ์ด๋๋ก ์ด๋ํ ๋ ํ์ฑํ๋ ๊ฒฝ๊ณ ์ฐฝ์ ์ ๋ฆฌํ์ธ์. ์ฑ์ ๋ฐฑ๊ทธ๋ผ์ด๋๋ก ์ ํํ ๋ ์์คํ
์ด ์๋์ผ๋ก
UIActionSheet๋๋UIAlertView๋ฅผ ๋ซ์ง ์์ต๋๋ค. ๋ฐฑ๊ทธ๋ผ์ด๋๋ก ์ด๋ํ๊ธฐ ์ ์ ์ ์ ํ ์ ๋ฆฌ๋ฅผ ํด์ผํฉ๋๋ค. - ๋ฐฑ๊ทธ๋ผ์ด๋๋ก ์ด๋ํ๊ธฐ ์ ์ View์์ ๋ฏผ๊ฐํ ์ ๋ณด๋ฅผ ์ ๊ฑฐํ์ญ์์ค. ์ฑ์ด ๋ฐฑ๊ทธ๋ผ์ด๋๋ก ์ ํ๋๋ฉด ์์คํ
์ ์ฑ ํ๋ฉด์ ์ค๋
์ท์ผ๋ก ์ฐ์ ๋ค์, ๋ค์ foreground๋ก ์ ํ ํ ๋ ๊ฐ๋จํ ํ์ํ๊ฒ ๋ฉ๋๋ค.
applicationDidEngetBackground:๋ฉ์๋์์ ๋์์ค๊ธฐ ์ ์ ๋น๋ฐ ๋ฒํธ๋ ๊ฐ์ธ ์ ๋ณด๋ ์จ๊ธฐ๋๋ก ํด์ผํฉ๋๋ค. - ๋ฐฑ๊ทธ๋ผ์ด๋์ ์๋ ๋์ ์ต์ํ์ ์์ ์ ์ํํ์ญ์์ค.
๋ฐฑ๊ทธ๋ผ์ด๋์์ ์ฑ์ด ์ ํ ์คํํ์ง ์๊ฒํ๋ ค๋ฉด Info.plist ํ์ผ์
UIApplicationExitsOnSuspendํค์ ๊ฐ์ true๋ก ์ถ๊ฐํ์ฌ ๋ฐฑ๊ทธ๋ผ์ด๋๋ฅผ ๋ช ์์ ์ผ๋ก ์ ํํด์ ํ ์ ์์ต๋๋ค. ์ฑ์ด ์ ํ ํด์ ๋๋ฉด ์ฑ ์๋ช ์ฃผ๊ธฐ๊ฐ not-running, inactive, active ์ํ๋ฅผ ์ํํ๋ฉฐ ๋ฐฑ๊ทธ๋ผ์ด๋๋ผ ์ ์ง ์ํ๋ก ๋ค์ด๊ฐ์ง ์์ต๋๋ค. ์ฌ์ฉ์๊ฐ ํ ๋ฒํผ์ ๋๋ฌ ์ฑ์ ์ข ๋ฃํ๋ฉดappDelegate์applicationWillTermintae:๋ฉ์๋ ํธ์ถ๋๊ณ ์ฑ์ด ์ข ๋ฃ๋๊ธฐ ์ ์ ์ฝ 5์ด๊ฐ ์ ๋ฆฌ๋๊ณ not-running ์ํ๋ก ์ด๋ํ๊ฒ๋ฉ๋๋ค.
- ๋ฐฑ๊ทธ๋ผ์ด๋ ์คํ์ ์ ํํด์ ํ๋ ๊ฒ์ ๊ถ์ฅํ์ง๋ ์์ง๋ง, ํน์ ์กฐ๊ฑด์์๋ ๊ธฐ๋ณธ ์ต์ ์ด ๋ ์ ์์ต๋๋ค. ํนํ ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์คํ๋๋ ์ฝ๋๊ฐ ๋ณต์ก์ฑ์ ๋๋จํ ์ฆ๊ฐ์ํค๋ ๊ฒฝ์ฐ ์ฑ์ ์ข ๋ฃ์ํค๋ ๊ฒ์ด ๊ฐ๋จํ ํด๊ฒฐ์ฑ ์ผ ์ ์์ต๋๋ค.
- ์ฑ์ด ๋ง์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์๋นํ๊ณ , ์ฝ๊ฒ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํด์ ํ ์ ์๋ ๊ฒฝ์ฐ ์์คํ ์ด ์ฑ์ ๋น ๋ฅด๊ฒ ์ข ๋ฃํ์ฌ ๋ค๋ฅธ ์ฑ์ ์ํ ๊ณต๊ฐ์ ํ๋ณด ํ ์ ์์ต๋๋ค.
์ฑ์ ์คํ ์ํ์ ๋ฐ๋ผ ์์คํ ์ ์ด๋์ ๋์ ๊ธฐ๋์น๋ฅผ ๊ฐ์ง๊ณ ์์ผ๋ฉฐ, ์ํ ์ ํ์ด ๋ฐ์ํ๋ฉด ์์คํ ์ด app delegate์๊ฒ ์๋ฆผ์ ์ค๋๋ค.
UIApplicationDelegateํ๋กํ ์ฝ์ ์ด์ฉํด ์ฑ์ ์ํ ๋ณํ๋ฅผ ๊ฐ์งํ๊ณ , ๊ฐ ์ํ์ ๋ง๋ ์ ์ ํ ๋์์ ํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด foreground์์ background๋ก ์ ํํ ๋ ์ ์ฅ๋์ง ์์ ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋กํ๊ณ , ์งํ์ค์ธ ์์ ์ ์ค์ง ํ ์ ์์ต๋๋ค. ์ด๋ฒ ์ธ์ ์์๋ ์ํ์ ํ์ฝ๋๋ฅผ ์ด๋ป๊ฒ ๊ตฌํํ๋ฉด ์ข์์ง์ ๋ํ ํ๊ณผ ์ง์นจ์ ์ ๊ณตํฉ๋๋ค.
์ฑ์ด ์์๋๋ฉด(launched) app delegate์
application:willFinishLaunchingWithOptions:์application:didFinishLaunchingWithOptions:๋ฉ์๋๋ฅผ ์ฌ์ฉํด ๋ค์๊ณผ ๊ฐ์ ์์ ์ ํ ์ ์์ต๋๋ค.
* ์ฑ์ด ์์๋ ์ด์ ์ ๋ํ ์ ๋ณด๋ฅผ ํ์ธํ๊ณ , ์ ์ ํ๊ฒ ๋์ํ์ญ์์ค.
* ์ฑ์ ์ค์ํ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ์ด๊ธฐํ ํ์ญ์์ค.
* ์ฑ์ผ๋ก ๋ณด์ฌ์ค Window ๋ฐ view๋ฅผ ์ค๋นํ์ญ์์ค.
- ์ฑ์ด ์์ ๋ ๋ ์์คํ
์ ์๋์ผ๋ก
main stroyboard์initial view controller๋ฅผ ๋ก๋ํฉ๋๋ค. state restoration(์ํ๋ณต์)์ ์ง์ํ๋ ์ฑ์ ๊ฒฝ์ฐwillFinishLaunchingWithOptions :application : didFinishLaunchingWithOptions :๋๊ฐ์ง ๋ฉ์๋๋ฅผ ์ด์ฉํด ์ด์ ์ํ ์ธํฐํ์ด์ค๋ก ๋ณต์ํฉ๋๋ค.- ์ ๋๊ฐ์ง ๋ฉ์๋์์ ์คํ๋๋ ์์ ์ ๊ฐ๋ฅํ ๊ฐ๋ฒผ์์ผํฉ๋๋ค.
- ์ฑ์ ์ด๊ธฐํ ์์ ์ 5์ด ์ด๋ด์ ์๋ฃ๋์ด์ผ ํ๋ฉฐ, ์ด๊ธฐํ ์์ ์ด ๋๋ฌด ์ค๋ ๊ฑธ๋ฆฌ๋ฉด ์์คํ ์ด ์๋ต์์์ผ๋ก ๊ฐ์ฃผํ๊ณ ์ฑ์ ์ข ๋ฃ์ํฌ ์ ์์ต๋๋ค.
- ์คํ ์๋๋ฅผ ๋ฆ์ถ ์ ์๋ ์์ (๋คํธ์ํฌ ์ก์ธ์ค)์ ๋ณด์กฐ thread์์ ์คํ ๋๋๋ก ์กฐ์ ํด์ผํฉ๋๋ค.
- ์ฑ์ด foreground ์ํ๋ก ๋ค์ด์ฌ๋ ์์คํ ์ด main thread๋ฅผ ์์ฑํ๊ณ ์ฑ์ main ํจ์๋ฅผ ํธ์ถํฉ๋๋ค. ๊ธฐ๋ณธ main ํจ์๋ UIKit ํ๋ ์์ํฌ๋ฅผ ์ ์ดํ๊ณ , ์ฑ์ด ๊ตฌ๋๋๋๋ฐ ํ์ํ ์ด๊ธฐํ ์์ ์ ํด์ค๋๋ค.
- ์ฑ์ด background ์ํ๋ก ์์ํ ๋๋ foreground ์ํ๋ก ์์๋ ๋์ ์คํ์ฃผ๊ธฐ์ ์ฝ๊ฐ์ ์ฐจ์ด๊ฐ ์๊ธฐ๋๋ฐ, ๊ฐ์ฅ ํฐ ์ฐจ์ด์ ์ ์์ ์ ์ฒ๋ฆฌํ ๋ค, ์ ์ง(suspend) ๋ ์ ์๋ค๋ ์ ์ ๋๋ค. ๋ฐฑ๊ทธ๋ผ์ด ์ํ๋ก ์คํ๋ ๋์๋ ์์คํ ์ UI ํ์ผ์ ๋ก๋ํ์ง๋ง, ์ฌ์ฉ์ ํ๋ฉด์ ํ์ํ์ง๋ ์์ต๋๋ค.
- ์ฑ์ด ์ด๋ ์ํ๋ก ์์๋๋์ง ํ์ธํ๋ ค๋ฉด
UIApplication๊ฐ์ฒด์applicationState์์ฑ๊ฐ์ ํ์ธํด ๋ณด๋ฉด ์ ์ ์์ต๋๋ค.
- ์ผ๋ฐ์ ์ผ๋ก ์ฑ์, ์ธ๋ก ๋ชจ๋๋ก ์คํ๋๋ฉฐ ํ์ํ ๊ฒฝ์ฐ ๊ธฐ๊ธฐ ๋ฐฉํฅ์ ๋ง๊ฒ ์ธํฐํ์ด์ค๋ฅผ ํ์ ํฉ๋๋ค. ๋ง์ฝ ๊ฐ๋ก ๋ฐฉํฅ๋ง ์ฌ์ฉํ๋ ค๋ฉด ๋ค์๊ณผ ๊ฐ์ ์์
์ ์ํํ์ฌ ์์คํ
์ ๊ฐ๋ก ๋ฐฉํฅ์ผ๋ก๋ง ์ฑ์ด ์คํ๋๋๋ก ์ค์ ํด์ผํฉ๋๋ค.
- Info.plist์
UIInterfaceOrientationํค๋ฅผ ์ถ๊ฐํ๊ณ ๊ฐ์UIInterfaceOrientationLandscapeLeftUIInterfaceOrientationLandscapeRight๋ ์ค ํ๋๋ก ์ค์ ํ์ธ์. layout์ด๋autosizing์ต์ ์ด ์ค์ ๋์ด์๋์ง ํ์ธํ์ธ์.shouldAutorotateToInterfaceOrientation:๋ฉ์๋๊ฐtrue๋ฅผ ๋ฐํํ๋๋ก ์ค๋ฒ๋ผ์ด๋ ํ์ธ์.(์ธ๋ก๋ชจ๋์ผ ๊ฒฝ์ฐfalse)
- Info.plist์
- ์ฑ์ ๊ตฌ๋์ ์๊ตฌ๋๋ ๋ฐ์ดํฐ๋ ์ค์ ๊ฐ ์ ํ ์ ์ํด ์ฒซ ์คํ ์ฃผ๊ธฐ(first launch cycle)๋ฅผ ์ด์ฉํ ์ ์์ต๋๋ค.
- ์ฑ์ ํน์ ๋ฐ์ดํฐ ํ์ผ์ Library/Application Support//directory์ ์์นํด์ผํฉ๋๋ค.
- ์ฑ ๋ฒ๋ค ๋ด์ ์๋ ํ์ผ์ code signed ๋์ด์์ด ์์ ์ ํ ์ ์๊ธฐ๋๋ฌธ์, ๋ง์ฝ ์์ ์ด ํ์ํ ๊ฒฝ์ฐ์๋ ๋ฐ๋์ ํด๋น ํ์ผ์ ์๋๋ฐ์ค์ ๋ค๋ฅธ ํด๋๋ก ๋ณต์ฌํ ๋ค์ ์์ ํด์ผํฉ๋๋ค.
์์คํ ์๋ฆผ์ด ์ ๋ฌ๋๋ฉด ์ฑ์ ์ผ์์ ์ผ๋ก ์ ์ด๊ถ์ ์๊ฒ๋๊ณ , ์ฌ์ฉ์ ํฐ์น ์ด๋ฒคํธ๋ฅผ ๋ฐ์ ๋ค์ด์ง ์์ต๋๋ค. ์ด๋ฌํ ์ํฉ์ ๋๋นํด ์ฑ์
applicationWillResignActive๋ฉ์๋์์ ์๋์ ๊ฐ์ ์์ ์ ์ํํด์ผ ํฉ๋๋ค.
* ๋ฐ์ดํฐ ๋ฐ ์ํ๋ฅผ ์ ์ฅํฉ๋๋ค.
* ํ์ด๋จธ ๋ฐ ๊ธฐํ ์ฃผ๊ธฐ์ ์์
์ ์ค์งํฉ๋๋ค.
* ๋ฉํ๋ฐ์ดํฐ ์ฟผ๋ฆฌ๋ฅผ ๋ชจ๋ ์ค์งํฉ๋๋ค.
* ์๋ก์ด ์์
์ ์์ํ์ง ์๋๋ก ํฉ๋๋ค.
* ๋์์ ์ฌ์์ ์ค์งํฉ๋๋ค.(AirPlay๋ฅผ ํตํ ์ฌ์์ ์ ์ธ)
* OpenGL ES ํ๋ ์ ์๋๋ฅผ ์ฌ์กฐ์ ํฉ๋๋ค.
- ์ฑ์ด ์ผ์ ์ ์ง ์ํ์์ ๋ฒ์ด๋ ๋ค์ ํ์ฑ ์ํ๋ก ๋๋์ ์ค๋ฉด
applicationWillResignActive:๋ฉ์๋์์ ํ๋ ์์ ๋ค์applicationDidBecomeActive:๋ฉ์๋์์ ๋๋๋ ค์ผํฉ๋๋ค. - ๋ง์ฝ ์ฑ์
NSFileProtectionComplete์ต์ ์ผ๋ก ๋ณดํธ๋ ํ์ผ์ด ์๋ค๋ฉด, ํ๋ฉด์ด ์ ๊ฒจ์๋๋์ ํด๋น ํ์ผ์ ์ ๊ทผํ์ง ๋ชปํ๋๋กapplicationWillResignActive:๋ฉ์๋์์ ํด๋น ํ์ผ์ ๋ํ ์ฐธ์กฐ๋ฅผ ๋ซ์์ค์ผํฉ๋๋ค.
Foreground๋ก ๋ค์ด๊ฐ๋ฉด ๋ฐฑ๊ทธ๋ผ์ด๋ ์ํ๋ก ์ด๋ํ๋ฉด์ ์ค์ง๋ ์์ ์ ์ฌ๊ฐํ ์ ์์ต๋๋ค.
applicationDidEnterBackground :๋ฉ์๋์์ ์ํ ๋ ์์ ์applicationWillEnterForeground๋ฉ์๋์์ ์คํ์ทจ์ํด์ผํ๋ฉฐapplicationDidBecomeActive:๋ฉ์๋๋ ์คํ๋์ ๋์ผํ ์์ ์ ๊ณ์ ์ํํ ์ ์๋๋ก ํด์ผํฉ๋๋ค.
UIApplicationWillEnterForegroundNotification์๋ฆผ์ ์ด์ฉํด ์ฑ์ด foreground๋ก ๋ค์ ๋ค์ด์ค๋ ๋๋ฅผ ์ถ์ธก ํ ์์์ต๋๋ค.
-
์ ์ง ์ํ์ ์ฑ์ด foreground ๋๋ background ์คํ ์ํ๊ฐ ๋ ๋, ๋๊ธฐ ์ค์ธ(queued) ์๋์ ์ฒ๋ฆฌํ ์ค๋น๊ฐ ๋์ด์ผํฉ๋๋ค. ์ฑ์ด ์ ์ง๋์ด ์๋ ๋์์๋ ์ฑ์ด ์ฝ๋๋ฅผ ์คํํ์ง ๋ชปํ๋ฏ๋ก, ์์คํ ์ด ๊ด๋ จ ์๋์ ๋๊ธฐ์ด์ ์ถ๊ฐํด๋๊ณ ์ฝ๋ ์คํ์ด ์์๋๋ ์๊ฐ ์ฑ์ ์๋์ ์ ๋ฌํฉ๋๋ค.
-
์ฑ์ ์ ๋ฌ๋๋ ์๋์ ๋ด์ฉ๊ณผ ํค์๋ ์๋์ ๊ฐ์ ๊ฒ์ด ์์ต๋๋ค.
- ์
์ธ์๋ฆฌ ์ฐ๊ฒฐ ๋ฑ๋ก / ์ฐ๊ฒฐ ํด์ (
EAAccessoryDidConnectNotification,EAAccessoryDidDisconnectNotification) - ๊ธฐ๊ธฐ ํ๋ฉด ๋ฐฉํฅ ์ ํ(
UIDeviceOrientationDidChangeNotification) - ๋ค๋์ ์๊ฐ ๋ณํ(
UIApplicationSignificantTimeChangeNotification) - ๋ฐฐํฐ๋ฆฌ ์ํ ๋ฐ ์๋ ๋ณํ(
UIDeviceBatteryLevelDidChangeNotification,UIDeviceVatteryStateDidChangeNotification) - ๊ทผ์ ์ํ ๋ณํ(
UIDeviceProximityStateDidChangeNofitication) - ๋ณดํธ๋ ํ์ผ์ ์ํ ๋ณํ(
UIApplicationProtectedDataWillBecomeUnavailable,UIApplicationProtectedDataDidBecomeAvailable) - ์ธ๋ถ ํ๋ฉด ์ฐ๊ฒฐ / ์ฐ๊ฒฐ ํด์ (
UIScreenDidConnectNotification,UIScreenDidDisconnectNotification) - ํ๋ฉด์ ์คํฌ๋ฆฐ ๋ชจ๋ ๋ณํ(
UIScreenModeDidChangeNotification) - Settings์์ ๋ณ๊ฒฝ ๊ฐ๋ฅํ ์ฑ ์ค์ ๊ฐ์ ๋ณํ(
NSUserDefaultsDidChangeNotification) - ์ฌ์ฉ ์ธ์ด ๋ฐ ์ง์ญ ๋ณ๊ฒฝ(
NSCurrentLocaleDidChangeNotification) - ์ฌ์ฉ์ iCloud ๊ณ์ ๋ณ๊ฒฝ(
NSUbiquityIdentityDidChangeNotification)
- ์
์ธ์๋ฆฌ ์ฐ๊ฒฐ ๋ฑ๋ก / ์ฐ๊ฒฐ ํด์ (
-
๋๊ธฐ ์ค์ธ ์๋(queued notification)์ ์ฌ์ฉ์ ํฐ์น๋ ์ ๋ ฅ ์ ์ ์ฑ์ main run loop๋ก ์ ๋ฌ๋ฉ๋๋ค.
-
์ฑ์ด ์ฌ๊ฐ ๋ ๋ ๋์ ๋๋ ์ง์ฒด๊ฐ ๋ฐ์ํ์ง ์๋๋ก ์ด๋ฌํ ์ด๋ฒคํธ๋ฅผ ๋น ๋ฅด๊ฒ ์ฒ๋ฆฌ ํ ์ ์์ด์ผํฉ๋๋ค.
- iCloud ์ํ ๋ณํ์ ๋ฐ๋ผ ์ฑ์ iCloud ๊ด๋ จ UI๋ฅผ ์ ๋ฐ์ดํธํ๊ฑฐ๋, ๊ด๋ จ๋ฌธ์์ ๋ํ ์ฐธ์กฐ ์ํ๋ฅผ ๋ณ๊ฒฝํด์ผํฉ๋๋ค.
- ์ฑ์์ iCloud ์ฌ์ฉ ์ฌ๋ถ๋ฅผ ๋ฌป๋ ๋ฉ์์ง๊ฐ ์ด๋ฏธ ํ์๋๋ ๊ฒฝ์ฐ, iCloud ์ํ๊ฐ ๋ณ๊ฒฝ๋์๋ค๊ณ ํด์ ๋ค์ ๋ฉ์์ง๋ฅผ ๋์ฐ์ง ๋ง์ญ์์ค. ๊ด๋ จ๋ ์ค์ ์ ์ฑ ํ๊ฒฐ ์ค์ ์ด๋, ์์คํ Settings์์ ์ฌ์ฉ์๊ฐ ์ง์ ํ ์ ์๋๋ก ํ์ญ์์ค.
- ์ฑ์ด ์ผ์ ์ ์ง๋ ์ํ์์ ์ฌ์ฉ์๊ฐ Locale(์ง์ญ)์ ๋ณ๊ฒฝํ๋ฉด ๋ ์ง, ์๊ฐ ๋ฐ ์ซ์์ ๊ฐ์ ์ ๋ณด๋ฅผ ๊ฐ์ ์ ๋ฐ์ดํธ ํ ์ ์์ต๋๋ค.
- Locale ๋ณ๊ฒฝ์ ๋๋ฑํ๊ธฐ ์ํ ์ฝ๋ ๊ตญ์ ํ์ ๊ด๋ จ๋ ์์ธํ ๋ด์ฉ์ Internationalization and Localization Guide๋ฅผ ์ฐธ๊ณ ํ์ธ์.
- Settings๋ฅผ ํตํด ๊ด๋ฆฌ๋๋ ์ค์ ๊ฐ์ด ์๋ค๋ฉด
NSUserDefaultsDidChangeNotification์๋์ ํ์ธํด์ผ ํฉ๋๋ค. ์ฑ์ด ์ผ์ ์ ์ง๋๊ฑฐ๋, ๋ฐฑ๊ทธ๋ผ์ด๋ ์ํ์ผ๋ ์ค์ ์ ์์ ํ ์ ์์ผ๋ฏ๋ก ํด๋น ์๋์ ์ฌ์ฉํ๋ฉด ์ค์ ๋ณ๊ฒฝ์ ๋ฐ๋ฅธ ์ ์ ํ ๋ฐ์์ ํ ์ ์์ต๋๋ค. - ๊ฒฝ์ฐ์ ๋ฐ๋ผ ํด๋น ์๋ฆผ์ ์๋ตํ๋ ๊ฒ์ ์ ์ฌ์ ์ธ ๋ณด์ ํ์ ์ ์ค์ผ ์ ์์ต๋๋ค. ์ํธ ๋๋ ๊ธฐํ ๋ณด์ ๊ด๋ จ ์ ๋ณด๊ฐ ๋ณ๊ฒฝ๋ ๊ฒฝ์ฐ ์ธํฐํ์ด์ค๋ฅผ ์ ์ ํ ์ ๋ฐ์ดํธ ํด์ผํฉ๋๋ค.
Foreground์์ ๋ฐฑ๊ทธ๋ผ์ด๋๋ก ์ด๋ํ ๋๋
applicationDidEnterBackground:๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ๋ค์๊ณผ ๊ฐ์ ์์ ์ ์ํํ ์ ์์ต๋๋ค.
* ์ฑ ์ค๋
์ท ์ค๋น
* ๋ฉ๋ชจ๋ฆฌ ํ๋ณด
applicationDidEnterBackground:๋ฉ์๋๋ ์ฝ 5์ด ๋์ ๋ชจ๋ ์์ ์ ์ํํ๊ฒ ๋๋๋ฐ, ์์ ์ํ ์ด๋ด์ ๋ฉ์๋๊ฐ return ๋์ง ์์ผ๋ฉด ์ฑ์ ์ข ๋ฃ๋๊ณ ๋ฉ๋ชจ๋ฆฌ์์ ์ ๊ฑฐ๋ฉ๋๋ค.- ์์
์ํ์ ๋ ๋ง์ ์๊ฐ์ด ํ์ํ ๊ฒฝ์ฐ
beginBackorundTaskWithExpirationHandler:๋ฉ์๋๋ฅผ ํธ์ถํ์ฌ ๋ฐฑ๊ทธ๋ผ์ด๋ ์คํ ์๊ฐ์ ์์ฒญํ ๋ค์, ๋ณด์กฐ ์ค๋ ๋์์ ์ฅ์๊ฐ ์์ ์ ์ํํฉ๋๋ค. - ๋ฐฑ๊ทธ๋ผ์ด๋ ์์
์ ์์ํ๋์ง ์ฌ๋ถ์ ๊ด๊ณ์์ด
applicationDidEnterBackground:๋ฉ์๋๋ 5์ด ์ด๋ด์ ์ข ๋ฃ๋์ด์ผ ํฉ๋๋ค.
- ์ฌ์ฉ์๊ฐ ํ ๋ฒํผ์ ๋๋ฅด๊ฑฐ๋, Sleep/Wake ๋ฒํผ์ ๋๋ ์ ๋, ์์คํ
์ ๋ค๋ฅธ ์ฑ์ ์คํ ์ํฌ๋ foreground์ ์๋ ์ฑ์ ๋นํ์ฑ ์ํ(inactive state)๊ฐ ๋์๋ค๊ฐ ๋ฐฑ๊ทธ๋ผ์ด๋ ์ํ๋ก ์ง์
ํ๊ฒ ๋ฉ๋๋ค. ์ด๋ฌํ ์ํ ๋ณํ๋
applicationWillResignActive:์applicationDidEnterBackground:๋ฉ์๋๋ฅผ ํธ์ถํ๊ฒ ๋ฉ๋๋ค. - ๋๋ถ๋ถ์ ์ฑ์
applicationDidEnterBackground:๋ฉ์๋๊ฐ ํธ์ถ ๋๊ณ , ์ ์ํ ์ผ์ ์ค์ง ์ํ๋ก ์ ํ๋ฉ๋๋ค.
- app delegate์
applicationDidEnterBackground:๋ฉ์๋๊ฐ ๋ฐํ ๋๊ณ ์ ์ ํ ์์คํ ์ ์ฑ์ ํ๋ฉด์ ์ค๋ ์ท์ ์ดฌ์ํฉ๋๋ค. - ๋ฐฑ๊ทธ๋ผ์ด๋ ์์ ์ํ์ด ์งํ๋์ด ํ๋ฉด์ ๋ณํ๊ฐ ์๊ธฐ๋ฉด, ์์คํ ์ ์ค๋ ์ท์ ๋ณํ ์ฌํญ์ ๋ฐ์ํฉ๋๋ค.
- ์ดฌ์๋ ์ค๋ ์ท์ ๋ฉํฐ ํ์คํน UI์ ์ฌ์ฉ๋ฉ๋๋ค.
- ๋ฐฑ๊ทธ๋ผ์ด๋์ ์ง์
ํ ๋ view์ ๋ณํ๋ฅผ ์ฃผ๋ ๊ฒฝ์ฐ,
snapshotViewAfterScreenUpdates:๋ฉ์๋๋ฅผ ํธ์ถํ์ฌ ๋ณ๊ฒฝ ์ฌํญ์ ๋ ๋๋ง ํ ์ ์์ต๋๋ค. snapshotViewAfterScreenUpdates:๋ฉ์๋์ ๋งค๊ฐ๋ณ์๋ฅผtrue๊ฐ์ผ๋ก ์ค์ ํ๋ฉด ๊ฐ์ ๋ก ์ค๋ ์ท์ ์ ๋ฐ์ดํธ ํฉ๋๋ค.
- ์์คํ ์ ์ต๋ํ ๋ง์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ ์งํ๋ ค๊ณ ์๋ํ๋ฉฐ, ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ถ์กฑํ ๊ฒฝ์ฐ์๋ ์ผ์ ์ค์ง๋ ์ฑ์ ์ข ๋ฃํ์ฌ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ์ํฉ๋๋ค.
- ๋ฐฑ๊ทธ๋ผ์ด๋์์ ๋์ฉ๋์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ, ์ข ๋ฃ 1์์ ๋์์ด ๋ฉ๋๋ค.
- ๋ฐฑ๊ทธ๋ผ์ด๋์ ๋ค์ด๊ฐ๋, ์ฑ์ ๋ ์ด์ ํ์์๋ ๊ฐ์ฒด์ ๋ํ ๊ฐํ ์ฐธ์กฐ๋ฅผ ํด์ ํด์ผํฉ๋๋ค.
- ๊ฐ๋ฅํ ๋นจ๋ฆฌ ๊ฐํ ์ฐธ์กฐ๋ฅผ ํด์ ํด์ผ ํ๋ ๊ฐ์ฒด์๋ ์๋์ ๊ฐ์ ์๊ฐ ์์ต๋๋ค.
- ์์ฑํ ์ด๋ฏธ์ง ๊ฐ์ฒด
- ๋์คํฌ์์ ๋ค์ ๋ก๋ํ ์ ์๋ ๋ํ ๋ฏธ๋์ด ๋๋ ๋ฐ์ดํฐ ํ์ผ
- ์ฑ์ ๋น์ฅ ํ์ํ์ง ์์ผ๋ฉฐ, ๋์ค์ ์ฝ๊ฒ ๋ค์ ๋ง๋ค ์ ์๋ ๋ชจ๋ ๊ฐ์ฒด
๊ฐ๊ฐ์ ์ฑ์ ์๋ก ๋ค๋ฅธ ๊ธฐ๋ฅ๊ณผ ํ์์ฑ์ ์ง๋์ง๋ง, ์ผ๋ถ ํน์ง์ ๋ค์ํ ์ฑ์๋ ๊ณตํต์ ์ ๋๋ค. ์ด๋ฒ ์น์ ์์๋ ํน์ ์ ํ์ ๊ธฐ๋ฅ์ ์ด๋ป๊ฒ ์ฑ์์ ๊ตฌํํ ์ ์๋์ง์ ๋ํ ๊ฐ์ด๋๋ผ์ธ์ ์ ์ํฉ๋๋ค.
์ฌ์ฉ์์ ๊ฐ์ธ ์ ๋ณด๋ฅผ ๋ณดํธํ๋ ๊ฒ์ ์ฑ์ ๋์์ธํ ๋ ๊ณ ๋ คํด์ผํ ์ฃผ์์ฌํญ ์ ๋๋ค. ๋ณดํธ๋์ด์ผ ํ ๊ฐ์ธ์ ๋ณด์๋ ์ฌ์ฉ์์ ์ ์ ๋ฐ ๊ฐ์ธ ์ ๋ณด์ ์ฌ์ฉ์์ ๋ฐ์ดํฐ๊ฐ ํฌํจ๋ฉ๋๋ค. ์์คํ ํ๋ ์์ํฌ๋ ์ฐ๋ฝ์ฒ์ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํด ๊ฐ์ธ ์ ๋ณด ์ ์ด๋ฅผ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ๊ณตํ์ง๋ง, ์ฑ์ ๋ก์ปฌ์์ ์ฌ์ฉํ๋ ๋ฐ์ดํฐ๋ฅผ ๋ณดํธํ๊ธฐ์ํด ๊ฐ๋ณ ์ ์ธ ์กฐ์น๋ฅผ ์ทจํด์ผ ํฉ๋๋ค.
๋ฐ์ดํฐ ๋ณดํธ๋ ๋ด์ฅ๋ ํ๋์จ์ด์ ์ํธํ ๋ ํ์์ผ๋ก ํ์ผ์ ์ ์ฅํ๊ณ , ํ์ํ ๋ ์ํธ๋ฅผ ํด๋ ํ๋ ๋ฐฉ์์ ์ฌ์ฉํฉ๋๋ค. ์ฌ์ฉ์๊ธ ๊ธฐ๊ธฐ๊ฐ ์ ๊ฒจ์๋ ๋์์๋ ํด๋น ํ์ผ์ ๋ง๋ ์ฑ๋ ํ์ผ์ ์ ๊ทผ ํ ์ ์์ต๋๋ค. ๋ฐ์ดํฐ ๋ณดํธ๋ ๋๋ถ๋ถ์ iOS ๊ธฐ๊ธฐ์์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
- ํ์ผ์ ๋ณดํธํ๋ ค๋ฉด ์ํ๋ ๋ณดํธ ์์ค์ ๋ํ๋ด๋ ์์ฑ์ ํ์ผ์ ์ถ๊ฐํ์ญ์์ค.
NSDataํด๋์ค ๋๋NSFileManagerํด๋์ค๋ฅผ ์ฌ์ฉํ์ฌ ๋ณดํธ ์ฌ๋ถ๋ฅผ ์ง์ ํ ์ ์์ต๋๋ค.NSData์writeToFile: options: error:๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ์๋ก ์์ฑํ๋ ํ์ผ์ ๋ณดํธ ์ค์ ์ ํ ์ ์์ต๋๋ค.NSFileManager์setAttributes: ofItemAtPath: error:๋ฉ์๋๋ฅผ ์ฌ์ฉํด ๊ธฐ์กด ํ์ผ์ ๋ณดํธ ๊ฐ์ ์ค์ ํ ์ ์์ต๋๋ค.
- ๋ชจ๋ ๊ฐ์ฒด๋
UIApplication์protectedDataAvailable์์ฑ ๊ฐ์ ๊ฒ์ฌํ์ฌ ํ์ฌ ํ์ผ์ ์ ๊ทผ์ด ๊ฐ๋ฅํ์ง ์ฌ๋ถ๋ฅผ ํ์ธ ํ ์ ์์ต๋๋ค. - ์๋กญ๊ฒ ์์ฑํ๋ ํ์ผ์ ๊ฒฝ์ฐ, ๋ฐ์ดํฐ๋ฅผ ์์ฑํ๊ธฐ ์ ์ ๋ณดํธํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
์ฑ์์ ์ฌ์ฉ์๋ฅผ ์๋ณํ๋ ์์ ์ ์ํ ํ ๋๋ ํญ์ ํฌ๋ช ํ๊ฒ ์์ ํด์ผํฉ๋๋ค. ์ฌ์ฉ์๋ฅผ ์๋ณํ๋๋ฐ ์ฌ์ฉ๋๋ ๋ช๊ฐ์ง ๋ฐฉ๋ฒ์๋ ๋ค์๊ณผ ๊ฐ์ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค.
- ์ฌ์ฉ์ ์ ๋ณด๋ก ๋ก๊ทธ์ธํ๋ ํ๋ฉด์ ๊ตฌํํด ์๋ฒ์ ํน์ ๊ณ์ ์ ์ฐ๊ฒฐํฉ๋๋ค.
UIDevice์identifierForVendor์์ฑ์ ์ด์ฉํด ์๋ก๋ค๋ฅธ ์ฅ์น ์ฌ์ฉ์๋ฅผ ๊ตฌ๋ถํฉ๋๋ค.- ๊ด๊ณ ๋ชฉ์ ์ผ๋ก ์ฌ์ฉ์๋ฅผ ์๋ณํ๊ธฐ ์ํด์๋
ASIdentifierManagerํด๋์์advertisingIdentifier๊ฐ์ ์ด์ฉํด ์ฌ์ฉ์ ID๋ฅผ ํ๋ณด ํ ์ ์์ต๋๋ค.
์ฌ์ฉ์๋ ์ฑ์ ์ฌ์ฉ๋๋ ๋ฏธ๋์ด์ ๋ฑ๊ธ์ ์ง์ ํ์ฌ ์ ํ ์ค์ ํ ์ ์์ต๋๋ค. ๋ง์ฝ ์ฑ์ด ๋ฏธ๋์ด๋ฅผ ํฌํจํ๊ฑฐ๋ ์์ ํ๋ ๊ฒฝ์ฐ, ์ ํ ์ค์ ์ ํ์ธํ๊ณ ๊ทธ ๋ณ๊ฒฝ์ฌํญ์ ๋ง๋ ์๋ต์ ํด์ผํฉ๋๋ค.
- ์ ํ ์ค์ ๊ฐ์ ๊ฐ์ ธ์ค๋ ค๋ฉด
standardUserDefaults๊ฐ์ฒด์objectForKey๋ฉ์๋๋ฅผ ์ฌ์ฉํด ๊ฐ ๊ฐ์ ํ์ธ ํ ์ ์์ต๋๋ค.com.apple.content-rating.ExplicitBooksAllowedcom.apple.content-rating.ExplicitMusicPodcastsAllowedcom.apple.content-rating.AppRatingcom.apple.content-rating.MovieRatingcom.apple.content-rating.TVShowRating
objectForKey๊ฐ ์ ํน์ ํค์ ๋ํดnil์ ๋ฐํํ๋ฉด ํด๋น ์ ๋ณด๋ฅผ ์ฌ์ฉํ ์ ์์์ ์๋ฏธํฉ๋๋ค. ์ด๋ฐ ๊ฒฝ์ฐ์๋ ์ฑ ์์ฒด ์ ์ฑ ์ ์ฌ์ฉํ์ฌ ์ ์ ํ ๋ฑ๊ธ์ ๊ฒฐ์ ํ ์ ์์ต๋๋ค.
์ต์ ๋ฒ์ ์ iOS์ ์ด์ ๋ฒ์ ์ ํจ๊ป ์ง์ํ๋ ์ฑ์ ๊ฒฝ์ฐ, ์ด์ ๋ฒ์ ์ iOS์์ ์ต์ API๋ฅผ ์ฌ์ฉํ์ง ๋ชปํ๋๋ก ๋ฐํ์ ๊ฒ์ฌ๋ฅผ ์ค์ํด์ผํฉ๋๋ค. ๋ฐํ์ ๊ฒ์ฌ๋ ํ์ฌ OS์์ ์ฌ์ฉํ ์ ์๋ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ ค๊ณ ํ ๋ ๋ฐ์ํ๋ ์ฑ ์ถฉ๋(crash)๋ฅผ ๋ฐฉ์งํด์ค๋๋ค.
- ํด๋น class๊ฐ ์กด์ฌํ๋์ง ๊ฒ์ฌํ๊ธฐ ์ํด Class ๊ฐ์ฒด๊ฐ nil์ธ์ง ์๋์ง ํ์ธํ๋ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค.
- ํด๋น ๋ฉ์๋๋ฅผ ์ฌ์ฉํ ์ ์๋์ง ํ์ธํ๊ธฐ ์ํด
instancesRespondToSelector:๋๋respondsToSelector:๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. - ์ฌ๋ฌ๊ฐ์ง ๋์์ ์ง์ํ๋ ์ฝ๋๋ฅผ ์์ฑํ๋ ๋ฐฉ๋ฒ์ ๋ํด์๋ SDK Compatibility Guide๋ฅผ ์ฐธ๊ณ ํ์ธ์.
๋ฐฑ๊ทธ๋ผ์ด๋๋ก ์ ํ๋ ์ฑ์ ํ์ฌ foreground์์ ๊ตฌ๋๋๋ ์ฑ์ ๋ฉ๋ชจ๋ฆฌ ํ๋ณด๋ฅผ ์ํด ์ธ์ ๋ ์ง ์์คํ ์ ์ํด ์ข ๋ฃ ๋ ์ ์์ต๋๋ค. ํ์ง๋ง ์ฌ์ฉ์๋ ์ฑ์ ์ ํํ๊ฑฐ๋ ํ ๋ ์ฑ์ด ์ผ์ ์ข ๋ฃ๋์๋ค๊ณ ์๊ฐํ๊ณ , ์์ ํ ์ข ๋ฃ๋์๋ค๊ณ ์๊ฐํ์ง ์๊ธฐ ๋๋ฌธ์ ๋ง์ง๋ง ์ฌ์ฉ์์ ์ผ๋ก ๋๋์์ค๋ ๊ฒ์ด ์ข์ต๋๋ค. ์ด๋ฌํ ๋์์ ์ฌ์ฉ์์๊ฒ ๋ ๋์ UX๋ฅผ ์ ๊ณตํ ์ ์์ต๋๋ค. ์ด๋ฒ ์ธ์ ์์๋ iOS์ infrastrucure๋ฅผ ํ์ฉํด ์ํ ๋ณด์กด/๋ณต์(state preservation, restroration)์ ๊ตฌํ ํ๋ ๋ฐฉ๋ฒ์ ์์๋ด ๋๋ค.
UIKit์ ์ํ ๋ณด์กด ์์คํฌ์View Controller์View์ ์ํ๋ฅผ ๋ณด์กด, ๋ณต์ํ๊ธฐ ์ํ ๊ฐ๋จํ๊ณ ์ ์ฐํ infrastructure์ ์ ๊ณตํฉ๋๋ค.- Infrastructure๋ ์ ์ ํ ์์ ์ ๋ณด์กด ๋ฐ ๋ณต๊ตฌ ํ๋ก์ธ์ค๋ฅผ ์ถ์งํฉ๋๋ค.
- ์ฑ์ ์ํ ๋ณด์กด์ ์ํด ๊ณ ๋ คํด์ผํ๋ ์์น๋ ๋ค์ ์ธ๊ฐ์ง๊ฐ ์์ต๋๋ค.
- App delegate ๊ฐ์ฒด (์ฑ์ ์ต์์ ๋ ๋ฒจ ์ํ ๊ด๋ฆฌ)
- View Controller ๊ฐ์ฒด (์ฑ์ ์ ๋ฐ์ ์ธ UI ๊ด๋ฆฌ)
- Custom Views (๋ณด์กดํด์ผํ custom data๊ฐ ์๋ ๊ฒฝ์ฐ)
- ์ฑ์ ์ํ ๋ณด์กด/๋ณต์์ ์๋๊ธฐ๋ฅ์ด ์๋๋ฏ๋ก, ์ฑ์์ ์ฌ์ฉํ๋๋ก ์ ํํด์ผํฉ๋๋ค.
- App delegate์์ ๋ค์ ๋ฉ์๋๋ฅผ ๊ตฌํํ์ฌ
true๊ฐ์ด ๋ฐํ๋๋๋ก ํฉ๋๋ค.application: shouldSaveApplicationState:application: shouldRestoreApplicationState:
์ฑ ์ํ ๋ณด์กด / ๋ณต์ ๊ธฐ๋ฅ์ ์ด์ฉํ๊ธฐ ์ํด์๋ ์ฑ์์ ๋ณด์กด๋์ด์ผํ ๊ฐ์ฒด๋ฅผ ์๋ณํด์ค์ผ
UIKit์์ ์ ์ ํ ์์ ์ ๊ฐ์ฒด๋ฅผ ๋ณด์กด / ๋ณต์ํ๋ ์์ ์ ์ํ ํ ์ ์์ต๋๋ค.UIKit์ ๋ณด์กด / ๋ณต์ ํ๋ก์ธ์ค์ ๋ง์ ๋ถ๋ถ์ ์ฒ๋ฆฌํ๋ฏ๋ก, ์ด๋ป๊ฒ ์์ ์ ํ๋์ง ์์๋๋ฉด ์ ๋ฐ์ ์ธ ์ฝ๋ ์์ฑ๊ณผ ํ๋ฆ์ดํด์ ์ฉ์ดํฉ๋๋ค.
- ์ํ ๋ณด์กด / ๋ณต์์ ๊ณ ๋ คํ ๋, ๋๊ฐ์ง ํ๋ก์ธ์ค๋ฅผ ๋ถ๋ฆฌํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
- ๋ณด์กด: ์ฑ์ด foreground์ background๋ฅผ ์ค๊ณ ๊ฐ๋
UIKit์ ์ฑ์ ์ํ๋ฅผ ์ ์ ํ ๋ณด์กดํฉ๋๋ค. ์ํ ๋ณด์กด์ ํ์ํ ๊ด๋ จ ๋ฐ์ดํฐ๋ฅผ ์ํธํ๋ ๋์คํฌ ์์ ํ์ผ์ ์ฐ๊ณ , ๋ค์๋ฒ์ ์ฑ์ด launch๋ ๋UIKit์ด ํด๋น ํ์ผ์ ์ฐพ์ ์ฑ ์ํ ๋ณต์ ์๋ํฉ๋๋ค. ๋ฌผ๋ก , ์ด๋ ํ์ผ์ ์ํธํ ๋์ด์๊ธฐ ๋๋ฌธ์ ๊ธฐ๊ธฐ๊ฐ ์ ๊ธํด์ ๋์ด์๋ ๊ฒฝ์ฐ์๋ง ๋ฐ์ํฉ๋๋ค. - ๋ณต์: ์ํ๋ฅผ ๋ณต์ํ๋ ๋์
UIKit์ ๋ณด์กด ๋ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ์ฌ UI๋ฅผ ์ฌ๊ตฌ์ฑ ํ์ง๋ง, ์ค์ ๊ฐ์ฒด ์์ฑ์ ์ฝ๋์ ์ํด ์ฒ๋ฆฌ๋ฉ๋๋ค. Storyboard์ ์ ๊ทผํด ๊ฐ์ฒด๋ฅผ ๋ก๋ํ๋ ๊ฒ์ ๊ฐ๋ฅํ์ง๋ง, ์ค์ ๋ก ์ด๋ ๊ฐ์ฒด๊ฐ ํ์ํ์ง, ์ด๋ ๊ฐ์ฒด๊ฐ ์์ฑ๋์๋์ง๋ ์ฝ๋๋ฅผ ํตํด์ ์ ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ค. ๊ฐ์ฒด๊ฐ ์์ฑ๋๋ฉดUIKit์ด ๋ณด์กดํด ๋์ ์๋ฃ๋ฅผ ์ด์ฉํด ๊ฐ์ฒด๋ฅผ ์ด๊ธฐํ ํฉ๋๋ค.
- ๋ณด์กด: ์ฑ์ด foreground์ background๋ฅผ ์ค๊ณ ๊ฐ๋
- ๊ฐ๊ฐ์ ์ํ์์ ์ฑ์ ๋ค์๊ณผ ๊ฐ์ ์ญํ ์ ํ๊ฒ๋ฉ๋๋ค.
- ๋ณด์กด
UIKit์ ์ํ ๋ณด์กด์ ํด์ผํ๋ค๊ณ ์๋ฆฝ๋๋ค.UIKit์ ์ด๋คViewController์View๊ฐ ๋ณด์กด ๋ ์ง ์๋ฆฝ๋๋ค.- ๋ณด์กด๋๋ ๊ฐ์ฒด์ ๋ํ ๋ฐ์ดํฐ๋ฅผ ์ธ์ฝ๋ฉํด์ผํฉ๋๋ค.
- ๋ณต์
UIKit์ ์ํ ๋ณต์์ ํด์ผํ๋ค๊ณ ์๋ฆฝ๋๋ค.UIKit์์ ์์ฒญํ ๊ฐ์ฒด๋ฅผ ์ ๊ณต(์์ฑ) ํด์ผ ํฉ๋๋ค.- ๋ณต์ํ ๊ฐ์ฒด์ ์ํ๋ฅผ ๋์ฝ๋ฉํ๊ณ , ์ด๋ฅผ ์ด์ฉํด ๊ฐ์ฒด๋ฅผ ์ด์ ์ํ๋ก ๋๋๋ฆฝ๋๋ค.
- ๊ฐ์ฅ ์ค์ํ ๋ถ๋ถ์
UIKit์๊ฒ ๋ณด์กด / ๋ณต์ํ ๊ฐ์ฒด๋ฅผ ์๋ ค์ฃผ๋ ๊ฒ์ผ๋ก, ๊ด๋ จ ์ฝ๋๋ฅผ ๋์์ธ ํ ๋ ๋๋ถ๋ถ์ ์๊ฐ์ ์๋นํด์ผํฉ๋๋ค.
- ๋ณด์กด
- ๋ช๋ช
ViewContrller๋ ์ฑ์main storyboard์์ ์๋์ผ๋ก ๋ก๋๋์ง๋งpush๋๊ฑฐ๋present๋๋ViewController๋ค์ ์ ๊ทผ์ด ๋ถ๊ฐ๋ฅ ํ๊ธฐ ๋๋ฌธ์restoreation idientifier๋ฅผ ์ง์ ํด์ค์ผํฉ๋๋ค.
- ๋ณด์กดํ๋ ค๋
view controller์ ๋ํด ์ถํ ์ด๋ค ๋ฐฉ์์ผ๋ก ๋ณต์๋ ์ง ๊ฒฐ์ ํด์ผํฉ๋๋ค.UIKit๋ ๋๊ฐ์ง ๋ฐฉ์์ ์ ๊ณตํฉ๋๋ค. App delegate๋ฅผ ์ด์ฉํด ์ฌ๊ตฌ์ฑํ๊ฑฐ๋ view controller์restoration class๋ฅผ ๊ตฌํํ๋ ๋ฐฉ์์ด ์์ต๋๋ค. ๊ฐ ๋ฐฉ์์ ๋ํ ์ฌ์ฉํ์ ์๋์ ๊ฐ์ต๋๋ค.- ๋ง์ฝ main storyboard๋ฅผ ํตํด view controller๊ฐ ํญ์ ๋ก๋๋๋ค๋ฉด,
restore class๋ฅผ ๊ตฌํํ์ง ๋ง์ญ์์ค. ๋์ app delegate๋ฅผ ์ด์ฉํด ๊ฐ์ฒด๋ฅผ ๋ณต์ํ์ญ์์ค. - ๋ง์ฝ main storyboard๋ฅผ ํตํด view controller๊ฐ ๋ก๋๋์ง ์๋๋ค๋ฉด,
restore class๋ฅผ ๊ตฌํํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
- ๋ง์ฝ main storyboard๋ฅผ ํตํด view controller๊ฐ ํญ์ ๋ก๋๋๋ค๋ฉด,
์ด๋ค view controller์ restore identifier๊ฐ
nil์ด๋ฉด ํด๋น view controller์ ์ด์ child view controllers์ ๋ณด์กด ๋ฐ์ดํฐ์์ ์ ์ธ๋ฉ๋๋ค. ๋ง์ผ child view controller๋ฅผ ์๋์ผ๋ก ๋ณด์กดํ๋ ค๋ฉด childe view controller์ ๊ฐ๋ณ์ ์ผ๋ก rester identifier๋ฅผ ์ง์ ํด์ฃผ๋ฉด๋ฉ๋๋ค.
์ฑ์ ์ํ ๋ณด์กด / ๋ณต์์ ์ง์ํ๋ ค๋ฉด app delegate์ view controller๊ฐ ์ํ ์ ๋ณด๋ฅผ ์ธ์ฝ๋ฉ/ ๋์ฝ๋ฉ ํ ์ ์๋๋ก ์์ ํด์ผํฉ๋๋ค. ์ํ ๋ณด์กด / ๋ณต์ ๊ธฐ๋ฅ ์ถ๊ฐ๋ฅผ ์ํ ์ฝ๋ ์์ฑ์, ์๋ ์ฒดํฌ๋ฆฌ์คํธ๋ฅผ ํ์ธํ์ญ์์ค.
- (ํ์)
application:shouldSaveApplicationState:,application:shouldRestoreApplicationState:๋ฅผ ๊ตฌํํ์ญ์์ค. - (ํ์) ๋ณด์กดํ๋ ค๋ ๊ฐ๊ฐ์ view controller์
restorationIdentifier์ ๋น๊ฐ์ด ์๋ String๊ฐ ์ ๋ ฅํ์ญ์์ค. - (ํ์)
application:willFinishLaunchingWithOptions:์์ ๋ณต์ํ ์คํฌ๋กค ์์น์ ๊ด๋ จ UI ์ค์ ์ ์ํด window๋ฅผ ์ดํผ์ญ์์ค. - ํ์ํ๋ค๋ฉด view controller์
restoration class๋ฅผ ๊ตฌํํ์ญ์์ค. - ๋ณด์กด / ๋ณต์ ํ๋ ค๋ view controller ํน์ view์
encodeRestorableStateWithCoder:์decodeRestorableStateWithCoder:๋ฉ์๋๋ฅผ ์ถ๊ฐํ์ญ์์ค. - ํ
์ด๋ธ ๋ทฐ๋ ์ฝ๋ ์
๋ทฐ์์ data soucre์ญํ ์ ํ๋ ๊ฐ์ฒด๋
UIDataSourceModelAssociation protocol์ ๊ตฌํํด์ผํฉ๋๋ค. ํ์์ฌํญ์ ์๋์ง๋ง ์ด ํ๋กํ ์ฝ์ ํด๋น ๋ทฐ์์ ์ ํ๋๊ฑฐ๋ ๋ณด์ด๋ ์์ญ์ ๋ณต์์ ๋์์ค๋๋ค.
์ฑ ์ํ ๋ณด์กด / ๋ณต์์ ์๋ ๊ธฐ๋ฅ์ด ์๋๋ฏ๋ก app delegate์์ ์๋ ๋ ๋ฉ์๋๋ฅผ ๊ตฌํํด ๊ธฐ๋ฅ ์ง์์ ๋ช ์ํด์ผํฉ๋๋ค.
application:shouldSaveApplicationState:application:shouldRestoreApplicationState:
View controller์ ์ํ ๋ณด์กด์ ์ํด์๋ ๋ค์ ์์ ์ ํด์ผํฉ๋๋ค.
- (ํ์)
restore identifierํ ๋น - (ํ์) ์ฑ ์คํ ์์ (launch)์์ ์๋ก์ด view controller ๋ฅผ ์์ฑํ ์ฝ๋ ์์ฑ
- (์ต์
) ์ฑ์ ๋ค์ ์คํํ์๋ ์ฌ์์ฑ ๋์ง ์๋ ์ํ ์ ๋ณด๋ฅผ ์ํด
encodeRestorableStateWithCoder:์decodeRestorableStateWithCoder:๋ฉ์๋ ๊ตฌํ
ํน์ view์ ๋ณด์กดํ ๋งํ ๊ฐ์น๊ฐ ์๋ ์ ๋ณด๊ฐ ์๋ค๋ฉด, view๊ฐ ํฌํจ๋ view controller์ ๋๋จธ์ง ๋ถ๋ถ๊ณผ ํจ๊ป ๋ณด์กด ๋ ์ ์์ต๋๋ค. view์ ์ํ๋ฅผ ์ ์ฅํ๋ ๊ฒฝ์ฐ๋ view ์์ ์ด ์ํ view controller์ ๋ ๋ฆฝ์ ์ผ๋ก ์ฌ์ฉ์๊ฐ ๋ณ๊ฒฝํ ์ ์๋ ๊ฒฝ์ฐ์ ๋๋ค. ์๋ฅผ๋ค์ด ์คํฌ๋กค๋ทฐ๋ ์คํฌ๋กค์ ํ์ฌ ์์น๊ฐ(position)์ ์ ์ฅํ๊ฒ๋๋๋ฐ ์ด๋ view controller๋ ๊ด์ฌ์ด ์๋ ๊ฐ์ ๋๋ค. ๋ทฐ์ ์ํ๊ฐ์ ์ ์ฅํ๊ธฐ ์ํด์๋ ๋ค์๊ณผ ๊ฐ์ ์์ ์ ํด์ผํฉ๋๋ค.
- view์
restoretionIdentifier๊ฐ์ ํ ๋นํฉ๋๋ค. - view๊ฐ ์ํด์๋ view controller๋ ์ ํจํ
restorationIdentifier๊ฐ์ ์ง๋ ์ผํฉ๋๋ค. - tableView์ collectionView์ ๊ฒฝ์ฐ
UIDataSourceModelAssociation protocol์ ์ค์ํ์ญ์์ค.
view controller์ view์ ๋ณด์กด ๋๋ ๋ฐ์ดํฐ๊ฐ ์๋๋ผ๋, ๋ค์ ๋ ๋ฉ์๋๋ฅผ ์ด์ฉํด ์ฑ์ ํ์ํ ๊ธฐํ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅ ํ ์ ์์ต๋๋ค.
application:willEncodeRestorableStateWithCoder:application:didDecodeRestorableStateWithCoder:
์ ๋ฉ์๋๋ ๋ณด์กด ํ๋ก์ธ์ค์ ๋งจ ์ฒ์์ ํธ์ถ ๋๋ฏ๋ก UI์ ํ์ฌ ๋ฒ์ ๋ฑ๊ณผ ๊ฐ์ high-level์ ์ฑ ์ํ๋ฅผ ์ ์ฅ ํ ์ ์์ต๋๋ค.
์ฑ ์ํ ๋ณด์กด / ๋ณต์์ ๊ตฌํํ๋ ๊ฒฝ์ฐ ๋ค์ ์ง์นจ์ ๊ณ ๋ คํ์ญ์์ค.
- ๋ฒ์ ์ ๋ณด๋ฅผ ์ฑ ์ํ์ ํจ๊ป ์ธ์ฝ๋ฉ ํฉ๋๋ค. ๋ณด์กด์ ํ ๋์๋ ์ฑ์ ํ์ฌ UI ๋ฒ์ ์ ์๋ณํ ์ ์๋ ๋ฒ์ ๋ฌธ์์ด ๋๋ ์ซ์๋ฅผ ์ธ์ฝ๋ฉ ํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ๋ฒ์ ์ ๋ณด๋ app delegate์
application:willEncodeRestorableStateWithCoder:๋ฉ์๋์์ ์ธ์ฝ๋ฉ ํ ์ ์์ผ๋ฉฐ,application:shouldRestoreApplicationState:๋ฉ์๋๊ฐ ํธ์ถ ๋ ๋ ์ธ์ฝ๋ฉ ๋์๋ ์ ๋ณด๋ฅผ ํ์ธํ ์ ์์ต๋๋ค. - ์ฑ ์ํ ์ ๋ณด์ ๋ฐ์ดํฐ ๋ชจ๋ธ ๊ฐ์ฒด๋ฅผ ํฌํจํ์ง ๋ง์ญ์์ค. ์ฑ์ iCloud ๋๋ ๋์คํฌ์ ๋ก์ปฌ ํ์ผ์ ๋ฐ์ดํฐ๋ฅผ ๋ณ๋๋ก ์ ์ฅํด์ผํฉ๋๋ค. ์ํ ๋ณต์ ๋ฉ์ปค๋์ฆ์ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ ์ ์ฅ์, ๋ณต์ ์์ ์ค์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ฉด ๋ณด์กด ๋ ๋ฐ์ดํฐ๊ฐ ์ญ์ ๋ ์ ์์ต๋๋ค.
- ์ฑ ์ํ ๋ณด์กด์ ๊ธฐ์กด์ ๋์์ธ๋ ๋ฐฉ์์ผ๋ก view controller๋ฅผ ์ฌ์ฉํ ๊ฒ์ ๊ธฐ๋ํฉ๋๋ค. ์ฑ์ view controller ๊ณ์ธต ๊ตฌ์กฐ๋ ๊ธฐ์กด์ ์ค๊ณ๋ ๋ฐฉ์์ ์ ์งํด์ผํฉ๋๋ค. view controller๊ฐ์ ๊ณ์ธต/ํฌํจ ๊ด๊ณ์ ์๊ณผ์์ด view๋ฅผ ๋ณด์ฌ์ฃผ๋ ๊ฒฝ์ฐ ๋ณด์กด ์์คํ ์ด ๋ณด์กดํ view controller๋ฅผ ์ ๋๋ก ์ฐพ์๋ด์ง ๋ชปํ ์๋ ์์ต๋๋ค.
- ๋ชจ๋ view controller๋ฅผ ๋ณด์กดํ๋ ๊ฒ์ ์๋์ ๋ง์ง ์์ ์์์ต๋๋ค. ์ด๋ค ๊ฒฝ์ฐ์ view controller๋ ๋ณด์กดํ๋ ๊ฒ์ด ์ ์ ํ์ง ์์ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ์ฌ์ฉ์์ ๋ฏผ๊ฐํ ์ ๋ณด๊ฐ ์๋ ํ๋ฉด์ ๋ณด์กด / ๋ณต์ํ์ง ์์ต๋๋ค.
- ๋ณต์ ํ๋ก์ธ์ค ์ค์ view controller ํด๋์ค๋ฅผ ๋ณ๊ฒฝํ์ง ๋ง์ญ์์ค. ๋ณต์ ํ๋ ๋์ ์ฑ์ ํด๋์ค๊ฐ ๋ณด์กดํ๋ ๊ฐ์ฒด์ ํด๋์ค์ ์ผ์น ํ์ง ์๊ฑฐ๋ ํ์ ํด๋์ค๊ฐ ์๋๋ฉด ๋ณต์ ์์ ์ ํ์ง ์์ต๋๋ค.
- ์ฌ์ฉ์๊ฐ ๊ฐ์ ๋ก ์ฑ์ ์ข ๋ฃํ๋ฉด ์์คํ ์์ ์ฑ์ ๋ณด์กด ์ํ๋ฅผ ์๋์ผ๋ก ์ญ์ ํฉ๋๋ค. ์ฑ์ด ์ข ๋ฃ๋ ๋ ๋ณต์ ์ํ๋ฅผ ์ญ์ ํ๋ ๊ฒ์ ์ผ์ข ์ ์์ ์ฅ์น์ ๋๋ค. ๋ณด์กด / ๋ณต์ ๊ธฐ๋ฅ์ ํ ์คํธ ํ๋ ค๋ฉด ๋ฉํฐํ์คํน ์ํ๋ฅผ ์ฌ์ฉํ์ง ๋ง๊ณ Xcode๋ฅผ ์ด์ฉํด ์์ ๋ช ๋ น์ด๋ ์ ์ค์ฒ๋ก exit๋ฅผ ํธ์ถํ๋๋ก ํ์ญ์์ค.
VoIP(Voice over Internet Protocol) ์ฑ์ ํตํด ์ฌ์ฉ์๋ ๊ธฐ๊ธฐ์ ์ ๋ฃฐ๋ฌ ์๋น์ค ๋์ ์ธํฐ๋ท ์ฐ๊ฒฐ์ ์ด์ฉํด ์ ํ๋ฅผ ๊ฑธ ์ ์์ต๋๋ค. iOS 8 ์ด์์์๋ APN(Apple Push Notification Serviece) ๋ฐ PushKit ํ๋ ์ ์ํฌ์ API๋ฅผ ์ฌ์ฉํ์ฌ VoIP ์ฑ์ ๋ง๋ค ์ ์์ต๋๋ค. ํธ์ฌ๊ธฐ๋ฅ์ ๊ธฐ์ฉํ๋ฉด VoIP ์ฌ์ฉ์ ์ํ ์ง์์ ์ธ ๋คํธ์ํฌ ์ฐ๊ฒฐ์ด๋ ์์ผ ๊ตฌ์ฑ์ ํ์ง ์์๋ ๋ฉ๋๋ค. VoIP ํธ์๊ฐ ๋์ฐฉํ๋ฉด ์ฑ์ด ํธ์๋ฅผ ์ฒ๋ฆฌํ ์๊ฐ์ด ์ฃผ์ด์ง๋๋ค(์ฑ์ด ์ข ๋ฃ๋ ์ํ์๋).
- VoIP ๊ตฌํ์ ์ํด ๋ค์๊ณผ ๊ฐ์ ์๊ตฌ์ฌํญ๋ค์ด ์์ต๋๋ค.
- ์ฑ์ VoIP ๋ฐฑ๊ทธ๋ผ์ด๋ ๋ชจ๋๋ฅผ ์ฌ์ฉํด์ผํฉ๋๋ค. Xcode project Capabilities ํญ์์ ๋ฐฑ๊ทธ๋ผ์ด๋ ๋ชจ๋๋ฅผ ํ์ฑํ ํฉ๋๋ค. ๋ณดํต VoIP ์ฑ์ ์ค๋์ค ๋ด์ฉ์ ํฌํจํ๊ธฐ ๋๋ฌธ์ Audio ๋ฐ AirPlay ๋ฐฑ๊ทธ๋ผ์ด๋ ๋ชจ๋๋ ์ฌ์ฉํ๋๊ฒ์ด ์ข์ต๋๋ค.
- PushKit API๋ฅผ ์ฌ์ฉํ์ฌ VoIP ํธ์ ์๋ฆผ์ ์์ ํ๊ณ , ์์ ์๋์ ์ฒ๋ฆฌํ๋๋ก ํ์ญ์์ค.
- ์ค๋์ค ์ธ์ ์ ๊ตฌ์ฑํ๊ณ ํ์ฑํ ์ํค์ญ์์ค.
- iPhone์์ ๋ ๋์ UX๋ฅผ ๋ณด์ฅํ๋ ค๋ฉด
Core Telephonyํ๋ ์ ์ํฌ๋ฅผ ์ด์ฉํ์ญ์์ค.
- VoIP ๋ฐฑ๊ทธ๋ผ์ด๋ ๋ชจ๋๋ฅผ ํ์ฑํ ํ๋ฉด ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์ค๋์ค๋ฅผ ์ฌ์ํ ์๋ ์๊ณ , ์์คํ ๋ถํ ์งํ ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์ฌ์์ ๋์ด VoIP ์๋น์ค๋ฅผ ํญ์ ์ฌ์ฉ ํ ์ ์์ต๋๋ค.
VoIP ์ฑ์ ๋คํฌ์ํฌ ํ๊ฒฝ์ ํฌ๊ฒ ์์กดํ๊ธฐ ๋๋ฌธ์,
System Configuration framework์reachability interface๋ฅผ ํ์ฉํด ๋คํฌ์ํฌ ๊ฐ๋ฅ์ฑ์ ํ์ธํ๊ณ ๊ฒฐ๊ณผ์ ๋ง๊ฒ ๋์์ ์กฐ์ ํด์ผํฉ๋๋ค.reachability interface๋ฅผ ์ฌ์ฉํ๋ฉด ๋คํธ์ํฌ ์ํ๊ฐ ๋ณ๊ฒฝ ๋ ๋๋ง๋ค ์ฑ์ ์๋ฆผ์ ๋ณด๋ผ ์ ์์ต๋๋ค. ๋ณ๊ฒฝ ์ฌํญ์ ๊ฐ์งํ์ฌ ์ฌ์ฉ์์๊ฒ VoIP ์ฐ๊ฒฐ ์ํ์ ๋ํด ์๋ ค์ฃผ๋๋ก ํด์ผํฉ๋๋ค.
- ๋คํธ์ํฌ ๊ฐ์ฉ์ฑ์ ํ์ ํด ์ฑ์ ๋์์ ์กฐ์ ํ๋ฉด, ๊ธฐ๊ธฐ์ ๋ฐฐํฐ๋ฆฌ ์๋ช ์ ํฅ์ ์ํฌ ์ ์์ผ๋ฉฐ ์ฑ์ด ๋ ์์ฃผ ์ ์๊ธฐ ์ํ๋ก ์์ ์ ์์ต๋๋ค.
reachability interface์ ๋ํ ์์ธํ ๋ด์ฉ์ System Configuration Framework Reference๋ฅผ ์ฐธ๊ณ ํ์ธ์.
๊ธฐ๊ธฐ๋ด ์ฑ๊ฐ ํต์ ์ ๊ฐ์ ์ ์ธ ๋ฐฉ์์ ํตํด์๋ง ๊ฐ๋ฅํฉ๋๋ค. AirDrop์ ์ฌ์ฉํ์ฌ ๋ค๋ฅธ ์ฑ๊ณผ ํ์ผ ๋ฐ ๋ฐ์ดํฐ๋ฅผ ๊ณต์ ํ ์ ์์ต๋๋ค. ๋ํ ์ฑ URL์ ์ฌ์ฉํ์ฌ ์ฑ์ ์ ๋ณด๋ฅผ ๋ณด๋ผ ์ ์๋๋ก custom URL Schemes์ ์ ์ํ ์ ์์ต๋๋ค.
- ์ฐธ๊ณ :
UIDocumentInteractionController๊ฐ์ฒด ๋๋document picker๋ฅผ ์ฌ์ฉํ์ฌ ์ฑ๊ฐ ํ์ผ ๊ตํ๋ ๊ฐ๋ฅํฉ๋๋ค.UIDocumentInteractionController์ ๋ํ ์ ๋ณด๋ Document Ineraction Programming Topics for iOS๋ฅผ,document picker์ ๊ดํ ์ ๋ณด๋ Document Picker Programming Guide๋ฅผ ์ฐธ๊ณ ํ์ธ์.
AirDrop์ ํตํด ๊ทผ์ฒ์ ์๋ ๊ธฐ๊ธฐ์ ์ฌ์ง, ๋ฌธ์, URL ๊ทธ๋ฆฌ๊ณ ๊ฐ์ข ๋ฐ์ดํฐ๋ค์ ๊ณต์ ํ ์ ์์ต๋๋ค. AirDrop์ peer-to-peer ๋คํธ์ํน์ ํตํด ์ฃผ๋ณ ๊ธฐ๊ธฐ๋ฅผ ์ฐพ๊ณ ์ฐ๊ฒฐํฉ๋๋ค.
AirDrop์ ์ด์ฉํด ํ์ผ๊ณผ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๋ ค๋ฉด
UIActivityViewController๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ์ญ์์ค.UIActivityViewController๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ๋ฉด ํ์ฌ ๋ณด์ฌ์ง๋ UI ํ๋ฉด์ activity sheet๋ฅผ ๋ณด์ฌ์ค๋๋ค. ํด๋น ๊ฐ์ฒด๋ฅผ ์์ฑํ ๋ ์ ์กํ๋ ค๋ ๋ฐ์ดํฐ๋ฅผ ์ง์ ํ์ญ์์ค.UIActivityViewController๋ ํน์ ๋ฐ์ดํฐ๋ฅผ ์ง์ ๊ฐ๋ฅํ activities๋ง ํ์ํด์ค๋๋ค. AirDrop์ ๊ฒฝ์ฐ ์ด๋ฏธ์ง, ๋ฌธ๊ตฌ, URL ๊ทธ๋ฆฌ๊ณ ๋ช๋ช ๋ค๋ฅธ ํ์ ์ ๋ฐ์ดํฐ ์ ์ก์ด ๊ฐ๋ฅํฉ๋๋ค.UIActivityItemSourceํ๋กํ ์ฝ๋ฅผ ์ฑํํ custom ๊ฐ์ฒด ์ ์ก๋ ๊ฐ๋ฅํฉ๋๋ค.
- ๋ ๋ง์ ์ ๋ณด๋ฅผ ๋ณด๋ ค๋ฉด UIActivityViewController Class Reference์ UIActivity Class Reference๋ฅผ ์ฐธ๊ณ ํ์ธ์.
AriDrop์ ํตํด ์์ ํ ํ์ผ์ ๋ฐ์ผ๋ ค๋ฉด ์๋์ ๊ฐ์ ์์ ์ ํ์ญ์์ค.
-
Xcode์์ ์ฑ์์ ์ด ์ ์๋ ๋ฌธ์ ํ์ ์ ๋ช ์ํ์ญ์์ค.
-
app delegate์
application:openURL:sourceApplication:annotation:๋ฉ์๋๋ฅผ ๊ตฌํํ์ฌ ๋ค๋ฅธ ์ฑ์ ํตํด ๋ฐ์ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ผ์ญ์์ค. -
Xcode project Info ํญ์ ์ฑ์์ ์ง์๊ฐ๋ฅํ ๋ฌธ์ ํ์ ์ ์ง์ ํ ์ ์๋ ๋ฌธ์ ์ ํ ์น์ ์ด ์์ต๋๋ค. ๋ฌธ์ ์ ํ์ ์ด๋ฆ๊ณผ ๋ฐ์ดํฐ ์ ํ์ ๋ํ๋ด๋ ํ๋ ์ด์์ UTI๋ฅผ ์ง์ ํด์ผํฉ๋๋ค. ์๋ฅผ ๋ค์ด png ํ์ผ์ ๋ํ ์ง์์ ์ ์ธํ๋ ค๋ฉด public.png๋ฅผ UTI ๋ฌธ์์ด๋ก ํฌํจํฉ๋. iOS๋ ์ง์ ๋ UTI๋ฅผ ์ฌ์ฉํ์ฌ ์ฑ์ด ์ฃผ์ด์ง ๋ฌธ์๋ฅผ ์ด ์ ์๋์ง ํ์ธํฉ๋๋ค.
-
๋ฌธ์๋ฅผ ์ฑ ์ปจํ ์ด๋์ ์ ์ก ๋ฐ๊ฒ ๋๋ฉด (ํ์ํ ๊ฒฝ์ฐ)์์คํ ์ด ์ฑ์ launch ํ๊ณ app delegate์
application:openURL:sourceApplication:annotation:๋ฉ์๋๋ฅผ ํธ์ถํ๊ฒ ๋ฉ๋๋ค. ์ด๋ ์ฑ์ด foreground ์ํ๋ผ๋ฉด ์ด ๋ฉ์๋๋ฅผ ์ฌ์ฉํด ์ ์ ์๊ฒ ํ์ผ์ ๋ณด์ฌ์ฃผ๊ณ , background ์ํ๋ผ๋ฉด ๋์ค์ ์ด ์ ์๋ ํ์ผ์ด ์์์ ๋ ธํธํด๋ฌ์ผํฉ๋๋ค. -
AirDrop์ ํตํด ์ ์ก ๋ ํ์ผ์ ์ํธํ ๋๊ธฐ ๋๋ฌธ์ ์ฅ์น๊ฐ ์ ๊ธ ํด์ ๋์ด์์ง ์์ผ๋ฉด ํ์ผ์ ์ด ์ ์์ต๋๋ค.
-
AirDrop์ ์ด์ฉํด ์ ์ก๋ฐ์ ํ์ผ์ ์ฑ์์ ์ฝ๊ณ , ์ญ์ ํ๋ ๊ฒ์ ๊ฐ๋ฅํ์ง๋ง ํธ์ง์ ๋ถ๊ฐ๋ฅ ํฉ๋๋ค.
URL scheme์ ์ฌ์ฉํ๋ฉด ์ ์ํด๋ ํ๋กํ ์ฝ์ ํตํด ๋ค๋ฅธ ์ฑ๊ณผ ํต์ ํ ์ ์์ต๋๋ค. Scheme์ ๊ตฌ์ถํด๋ ์ฑ๊ณผ ํต์ ํ๋ ค๋ฉด ์ ์ ํ ํ์์ URL๋ฅผ ๊ตฌ์ฑํ๊ณ ์์คํ ์ ์ด์ด๋ฌ๋ผ๊ณ ์์ฒญํด์ผํฉ๋๋ค. ํน์ sheme์ ์ฌ์ฉํ๋ ค๋ฉด ํด๋น scheme์ ๋ํ ์ง์์ฌ๋ถ๋ฅผ ์ ์ธํ๊ณ , ํด๋น sheme์ ํตํด ๋ค์ด์ค๋ URLs์ ์ฒ๋ฆฌํด์ผํฉ๋๋ค.
- Apple์ http, mailto, tel ๊ทธ๋ฆฌ๊ณ sms URL scheme์ ๋ํ ๋ด์ฅ ์ง์์ ์ ๊ณตํฉ๋๋ค. ๋ํ Maps, YouTube ๊ทธ๋ฆฌ๊ณ iPod ์ฑ์ ๋์์ผ๋ก ํ๋ http๊ธฐ๋ฐ URL๋ ์ง์ํฉ๋๋ค.
- ๊ธฐ๋ณธ scheme์ ๋ํ ํธ๋ค๋ฌ๋ ๊ณ ์ ๋์ด์์ผ๋ฉฐ ๋ณ๊ฒฝ ํ ์ ์์ต๋๋ค. (Apple์์ ์ง์ํ๋ ๊ฒ๊ณผ ๋์ผํ scheme์ ์ฌ์ฉํ๋ฉด ์์คํ ์์๋ ๊ธฐ๋ณธ ์ฑ์ ์คํํฉ๋๋ค.)
- Apple์์ ์ง์ํ๋ ๊ธฐ๋ณธ scheme์ ํ์ธํ๋ ค๋ฉด Apple URL Scheme Reference๋ฅผ ์ฐธ๊ณ ํ์ธ์.
์ฑ์ ๊ตฌํํด ๋์ custom URL scheme์ ์ด์ฉํด ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด๋ ค๋ฉด ์ ์ ํ URL์ ๋จผ์ ์์ฑํ๊ณ
openURL:๋ฉ์๋๋ฅผ ํธ์ถ ํ๋ฉด ๋ฉ๋๋ค.
์ฑ์์ ํน๋ณํ ํํ์ URL์ ์์ ํ๋ ค๋ฉด, ํด๋น URL scheme๋ฅผ ์์คํ ์ ๋ฑ๋กํด์ผํฉ๋๋ค. ์ฑ์ ์ข ์ข custom URL scheme๋ฅผ ์ด์ฉํด ๋ค๋ฅธ ์ฑ์์ ์๋น์ค๋ฅผ ์ด์ฉ ํ ์ ์๋๋ก ํฉ๋๋ค. ์๋ฅผ ๋ค์ด ์ง๋ ์ฑ์ ํน์ ์์น๋ฅผ ์ง๋์ ํ์ํ๊ธฐ ์ํ URL์ ์ง์ํฉ๋๋ค.
-
Registering Custom URL Schems: ์ฑ์ custom URL์ ๋ฑ๋กํ๋ ค๋ฉด Info.plist ํ์ผ์
CFBundleURLTypesํค๋ฅผ ํฌํจํ์ญ์์ค.CFBundleURLTypesํค์๋ dictionary๊ฐ array๋ก ๋ค์ด๊ฐ ์์ต๋๋ค. dictionary๋CFBundleURLName,CFBunldeURLSchemesํค๋ก ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค. -
Handling URL Requests: custom URL scheme๋ฅผ ๊ฐ๋ ์ฑ์ ์ ๋ฌ๋๋ URLs์ ์ ์ฒ๋ฆฌ ํ ์ ์์ด์ผ ํฉ๋๋ค. ๋ชจ๋ URLs์ app delegate๋ฅผ ํตํด ์ ๋ฌ ๋ฉ๋๋ค. ์ ๋ฌ๋ URLs์ ํธ๋คํ๊ธฐ ์ํด ์๋ ๋ฉ์๋๋ค์ ๊ตฌํํด์ผํฉ๋๋ค.
application:willFinishLaunchingWithOptions:,application:didFinishLaunchingWithOptions:: ์ ๋ฌ ๋ฐ์ URL์ ๋ํ ์ ๋ณด๋ฅผ ํ์ ํ๊ณ , URL์ ์คํํ ์ง ๊ฒฐ์ ํฉ๋๋ค. ๋ ์ค ํ๋์ ์ฑ์ดfalse๋ฅผ ๋ฐํํ๋ฉด ํธ๋ค๋ง ์ฝ๋๋ ํธ์ถ๋์ง ์์ต๋๋ค.application:openURL:sourceApplication:annotation:: ์ ๋ฌ๋ฐ์ ํ์ผ์ ์ด๊ธฐ ์ํ ๋ฉ์๋์ ๋๋ค.
Custom URL schemes์ ์ง์ํ๋ ์ฑ์ ๊ฐ scheme์ custom launch image๋ฅผ ์ ๊ณต ํ ์ ์์ต๋๋ค. URL์ ์ฒ๋ฆฌํ๊ธฐ ์ํด ์ฑ์ ์คํํ๊ณ ๊ด๋ จ ์ค๋ ์ท์ ์ฌ์ฉ ํ ์ ์๋ ๊ฒฝ์ฐ ์ ๊ณตํ launch image๊ฐ ํ์๋ฉ๋๋ค. launch image๋ฅผ ์ง์ ํ๋ ค๋ฉด ๋ค์ ๊ท์น์ ์ฌ์ฉํ๋ ์ด๋ฆ์ png ์ด๋ฏธ์ง๋ฅผ ์ ๊ณตํ์ญ์์ค.
\<basename>-\<url_scheme>\<other_modifiers>.png
- basename: Info.plist ํ์ผ์ ์๋ UILaunchImageFileํค๋ก ์ง์ ๋ ๊ธฐ๋ณธ ์ด๋ฏธ์ง ์ด๋ฆ์ ๋ํ๋ ๋๋ค.
- url_scheme: URL sheme์ ์ด๋ฆ์ ๋๋ค.
- other_modifiers: ์ด๋ฏธ์ง์ ๋ง๋ถ์ผ์ ์๋ ์์์ด๋ Information Property Key Reference๋ฅผ ์ฐธ๊ณ ํ์ญ์์ค.
์ฑ ์ค๊ณ(design)๊ฐ ์ ๋ฐ์ ์ธ ์ฑ๋ฅ์ ๋ฏธ์น๋ ์ํฅ์ ๋ํด ๊ฐ๋ฐ ๊ฐ ๋จ๊ณ ๋ง๋ค ๊ณ ๋ คํด์ผํฉ๋๋ค. ์ ๋ ฅ ์ฌ์ฉ๋๊ณผ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ iOS ์ฑ์ ๋งค์ฐ ์ค์ํ ๊ณ ๋ ค ์ฌํญ์ด๋ฉฐ, ์ด ์ธ์๋ ๊ณ ๋ คํ ์ฌํญ์ด ๋ง์ด ์์ต๋๋ค. ์ด๋ฒ ์ธ์ ์์๋ ๊ฐ๋ฐ ํ๋ก์ธ์ค ์ ๋ฐ์์ ์ฑ ์ฑ๋ฅ์ ์ํด ๊ณ ๋ คํด์ผํ ์์์ ๋ํด ์ค๋ช ํฉ๋๋ค.
๋ชจ๋ฐ์ผ ๊ธฐ๊ธฐ์์ ์ ๋ ฅ ์๋ชจ๋ ํญ์ ์ด์์ ๋๋ค. iOS์ ์ ์ ๊ด๋ฆฌ ์์คํ ์ ํ์ฌ ์ฌ์ฉ๋์ง ์๋ ํ๋์จ์ด ๊ธฐ๋ฅ์ ์ข ๋ฃํ์ฌ ์ ๋ ฅ์ ์ ์ฝํฉ๋๋ค. ์๋์ ๊ธฐ๋ฅ ์ฌ์ฉ์ ์ต์ ํ ํ์ฌ ๋ฐฐํฐ๋ฆฌ ์๋ช ์ ํฅ์ ์ํฌ ์ ์์ต๋๋ค.
CPU, Wi-Fi, ๋ธ๋ฃจํฌ์ค, ์
๋ฃฐ๋ฌ ๋ฐ์ดํฐ(4G, 3G), ๋ผ๋์ค, ์์น ์์คํ
, ๊ฐ์๋๊ณ, ๋์คํฌ
- ์ฑ ์ต์ ํ์ ๋ชฉํ๋ ์ต๋ํ ํจ์จ์ ์ผ๋ก ๊ฐ๋ฅํ ๋ง์ ์์
์ ์ํํ๋ ๊ฒ์
๋๋ค. Instruments๋ฅผ ์ฌ์ฉํ์ฌ ์ฑ์ ์๊ณ ๋ฆฌ์ฆ์ ํญ์ ์ต์ ํ ํด์ผํฉ๋๋ค. ๊ทธ๋ฌ๋ ๊ฐ์ฅ ์ต์ ํ ๋ ์๊ณ ๋ฆฌ์ฆ ์กฐ์ฐจ๋ ๊ธฐ๊ธฐ ๋ฐฐํฐ๋ฆฌ์ ๋ถ์ ์ ์ธ ์ํฅ์ ๋ฏธ์น ์ ์์ผ๋ฏ๋ก ์ฝ๋๋ฅผ ์์ฑํ ๋ ๋ค์ ์ง์นจ์ ๊ณ ๋ คํ์ญ์์ค.
- Polling์ด ํ์ํ ์์ ์ ํ์ง ๋ง์ญ์์ค. Polling ์์ ์ CPU๊ฐ ์ ์๊ธฐ ๋ชจ๋๊ฐ ๋๋ ๊ฒ์ ๋ฐฉ์ง ํฉ๋๋ค. Polling ๋์ NSRunLoop ๋๋ NSTimer ํด๋์ค๋ฅผ ์ฌ์ฉํ์ฌ ํ์์ ๋ฐ๋ผ ์์ ์ ์์ฝํ์ญ์์ค.
- ๊ฐ๋ฅํ๋ฉด
UIApplication์shared๊ฐ์ฒด์idleTimerDisabled์์ฑ์false๋ก ์ค์ ํ์ญ์์ค. IdleTimer๋ ์ผ์ ์๊ฐ ๋์ ์ฌ์ฉ๋์ง ์๋ ๊ธฐ๊ธฐ์ ํ๋ฉด์ ๋๋ ๊ธฐ๋ฅ์ ํ๋๋ฐ, ์ฑ ํ๋ฉด์ ๊ณ์ ์ผ๋ ํ์๊ฐ ์๋ ๊ฒฝ์ฐ ์์คํ ์ด ์ข ๋ฃ์ํฌ ์ ์๋๋ก ํ์ญ์์ค. - ๊ฐ๋ฅํ ์์ ์ ๋ณํฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ์ค๋ ์๊ฐ ๋์ ์์ chunk๋ก ์์ ์ ์ํํ๋ ๊ฒ ๋ณด๋ค ํ๋ฒ์ ์์ ์ ์ํํ๋ ๊ฒ์ด ๋ ์ ์ ์ ๋ ฅ์ ์๋นํ๊ธฐ ๋๋ฌธ์ ๋๋ค.
- ๋์คํฌ์ ๋๋ฌด์์ฃผ accessํ์ง ๋ง์ญ์์ค. ์๋ฅผ ๋ค์ด ์ฑ์ด ์ํ ์ ๋ณด๋ฅผ ๋์คํฌ์ ์ ์ฅํ๋ ๊ฒฝ์ฐ, ์ํ์ ๋ณ๊ฒฝ์ด ์๊ธธ๋๋ง ์ ๋ณด๋ฅผ ์ ์ฅํ๊ณ ๊ฐ๋ฅํ๋ฉด ๋ณ๊ฒฝ ์ฌํญ์ ํตํฉํ์ฌ ๋๋ฌด ๋น๋ฒํ๊ฒ ๋ณ๊ฒฝ ์ฌํญ์ ๊ธฐ๋กํ์ง ์๋๋ก ํฉ๋๋ค.
- ํ์์ด์์ผ๋ก ๋น ๋ฅด๊ฒ ํ๋ฉด์ ๊ทธ๋ฆฌ์ง ๋ง์ญ์์ค. ๊ทธ๋ฆฌ๊ธฐ(draw) ์์ ์ ์ ๋ ฅ์ด ๋ง์ด ์๋ชจ๋๋ ์์ ์ ๋๋ค.
UIAccelerometerํด๋์ค๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ์๋๊ณ ์ด๋ฒคํธ๋ฅผ ์์ ํ๋ ๊ฒฝ์ฐ, ํ์ํ์ง ์์๋๋ ์ด๋ฒคํธ ์ ๋ฌ์ ๋นํ์ฑํ ํ์ญ์์ค. ์์ธํ ๋ด์ฉ์ Event Handling Guide for UIKit Apps๋ฅผ ์ฐธ๊ณ ํ์ญ์์ค.- ๋คํธ์ํฌ๋ก ์ ์กํ๋ ๋ฐ์ดํฐ๊ฐ ๋ง์ ์๋ก ๋ง์ ์ ๋ ฅ์ ์๋ชจํ๊ฒ ๋๋ฉฐ, ๋คํธ์ํธ๋ฅผ ์ฌ์ฉํ๋ ์์
์ ์ ๋ ฅ ์๋ชจ์ ๊ฐ์ฅ ์ํฅ์ ๋ง์ด ๊ธฐ์น๋ ์์
์
๋๋ค. ๋ค์ ์ง์นจ์ ๋ฐ๋ฅด๋ฉด ๋คํธ์ํฌ์ ์๋ชจ๋๋ ์๊ฐ์ ์ต์ํ ํ ์ ์์ต๋๋ค.
- ํ์ํ ๊ฒฝ์ฐ์๋ง ๋คํธ์ํฌ ์๋ฒ์ ์ฐ๊ฒฐํ๊ณ ํด๋น ์๋ฒ๋ฅผ pollingํ์ง ๋ง์ญ์์ค.
- ๋คํธ์ํธ์ ์ฐ๊ฒฐํด ์์ ์ ํ ๋๋ ์์ถ๋ ๋ฐ์ดํฐ ํ์์ ์ฌ์ฉํ์ฌ ์ต์๋์ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ์ญ์์ค.
NSURLSessionํด๋์ค๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ๋ฌ๊ฐ์ ํ์ผ์ ์ ๋ก๋ํ๊ฑฐ๋ ๋ค์ด๋ก๋ ํ ๋, ๋ค์ ์์ ์ ํ๊ธฐ ์ํด ์ด์ ์์ ์ด ์๋ฃ๋๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ์ง ๋ง๊ณ queue์ ์ถ๊ฐํ์ญ์์ค. ์์คํ ์ด ์๋์ ์ผ๋ก ๊ฐ์ฅ ํจ์จ์ ์ผ๋ก ์์ ์ ์คํํฉ๋๋ค.- ๊ฐ๋ฅํ๋ค๋ฉด Wi-Fi๋ฅผ ์ฌ์ฉํด ๋คํธ์ํฌ์ ์ฐ๊ฒฐํ์ญ์์ค. Wi-Fi๋ ์ ๋ฃฐ๋ฌ๋ณด๋ค ์ ๋ ฅ ์๋ชจ๊ฐ ์ ์ต๋๋ค.
Core Locationํด๋์ค๋ฅผ ์ด์ฉํด ์์น ๋ฐ์ดํฐ๋ฅผ ์์งํ๋ ๊ฒฝ์ฐ, ์ต๋ํ ๋นจ๋ฆฌ ์์น ์ ๋ฐ์ดํธ๋ฅผ ๋นํ์ฑํ ํ๊ณ distance filter์ accuracy level์ ์ ์ ํ ๊ฐ์ ์ค์ ํ์ญ์์ค. ๊ด๋ จ๋ ์์ธํ ๋ด์ฉ์ Location and Maps Programming Guide๋ฅผ ์ฐธ๊ณ ํ์ญ์์ค.
- Instruments๋ ์ ๋ ฅ ๊ด๋ จ ์ ๋ณด ์์ง์ ์ํ ์ฌ๋ฌ๊ฐ์ง ๊ณ์ธก๊ธฐ๊ฐ ํฌํจ๋์ด ์์ต๋๋ค. ์ด ๊ณ์ธก๊ธฐ๋ฅผ ์ฌ์ฉํ์ฌ ์ ๋ ฅ ์๋น์ ๋ํ ์ฌ๋ฌ๊ฐ์ง ์ ๋ณด์ ์ฌ๋ฌ ํ๋์จ์ด(Wi-Fi, Blutooth, GPS, ๋์คํ๋ ์ด, CPU ๋ฑ)์ ๋ํ ์ธก์ ๊ฐ์ ์์ง ํ ์ ์์ต๋๋ค.
์ฑ์ ๊ฐ๋ฅํ ์ ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ์์คํ ์ด ๋ง์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ๋ณดํ ์ ์๋๋ก ํด์ผํฉ๋๋ค. ์์คํ ์ ์ฌ์ฉ๊ฐ๋ฅํ ์ฌ์ ๋ฉ๋ชจ๋ฆฌ์ ์ฑ์ ์ฑ๋ฅ์๋ ์ง์ ์ ์ธ ์๊ด ๊ด๊ณ๊ฐ ์์ต๋๋ค. ์ฌ์ฉ ๊ฐ๋ฅํ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์ ์ผ๋ฉด ์ดํ ๋ฉ๋ชจ๋ฆฌ ์์ฒญ์ ๋ฐ๋ฅธ ์์ ์ ์ํํ ๋ ๋ฌธ์ ์ ์ผ์ผํฌ ๊ฐ๋ฅ์ฑ์ด ๋์ต๋๋ค.
์์คํ ์์ ์ฑ์ ๋ฉ๋ชจ๋ฆฌ ๋ถ์กฑ ๊ฒฝ๊ณ ๋ฅผ ๋ณด๋ด๋ฉด ์ฆ์ ์๋ตํ์ญ์์ค. ๋ฉ๋ชจ๋ฆฌ ๋ถ์กฑ ๊ฒฝ๊ณ ๋ ํ์์๋ ๊ฐ์ฒด์ ๋ํ ์ฐธ์กฐ๋ฅผ ์ ๊ฑฐํ ์ ์๋ ๊ธฐํ์ ๋๋ค. ์ด ๊ฒฝ๊ณ ์ ๋ํด ์๋ตํ๋ค ์คํจํ๋ ๊ฒฝ์ฐ ์ฑ์ด ์ข ๋ฃ ๋ ์ ์๊ธฐ ๋๋ฌธ์ ์ฃผ์ํด์ผํฉ๋๋ค. ์์คํ ์ ์๋ API๋ฅผ ์ฌ์ฉํด ๋ฉ๋ชจ๋ฆฌ ๊ฒฝ๊ณ ๋ฅผ ์ฑ์ ์ ๋ฌํฉ๋๋ค.
-
applicationDidReceiveMemoryWarning:: app delegate ๋ฉ์๋ -
didReceiveMemoryWarning: UIViewController ๋ฉ์๋ -
UIApplicationDidReceiveMemoryWarningNotification: ๋ ธํฐํผ์ผ์ด์ -
์ด๋ฌํ ๊ฒฝ๊ณ ๋ฅผ ๋ฐ์ผ๋ฉด ๋ถํ์ํ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฆ์ ํด์ ํด์ผํฉ๋๋ค. ์ฌ์ฉํ์ง ์๋ ๊ฑฐ๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ๊ฐ ์๋ ๊ฒฝ์ฐ, ํด๋น ๊ตฌ์กฐ๋ฅผ ๋์คํฌ์ ์ ์ฅํ๊ณ ๋ฉ๋ชจ๋ฆฌ์์ ์ฌ๋ณธ์ ์ ๊ฑฐํ์ญ์์ค.
-
์ฐธ๊ณ : iOS ์๋ฎฌ๋ ์ดํฐ์
Simulate Memory Warning๋ช ๋ น์ ์ฌ์ฉํ์ฌ ๋ฉ๋ชจ๋ฆฌ ๋ถ์กฑ ์ํ์ ์ฑ ๋์์ ํ ์คํธ ํ ์ ์์ต๋๋ค.
์ด๊ธฐ์ ๋ฎ์ ์ค์น ๊ณต๊ฐ์ผ๋ก ์์ํด ์ถํ์ ์ฑ์ ํ์ฅ ํ ์์์ต๋๋ค. ์ด๊ธฐ ์ค์น ๊ณต๊ฐ์ ์ค์ด๋ ๋ฐฉ์์๋ ๋ค์๊ณผ ๊ฐ์ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค.
- ๋ฉ๋ชจ๋ฆฌ ๋ฆญ(leak) ์ ๊ฑฐ Instruments๋ฅผ ์ฌ์ฉํ์ฌ ์ค์ ๋๋ฐ์ด์ค์ ์๋ฎฌ๋ ์ดํฐ์์ ๋ฉ๋ชจ๋ฆฌ ๋ฆญ์ ์ถ์ ํ์ญ์์ค.
- ๋ฆฌ์์ค ํ์ผ ์ค์ด๊ธฐ ๋ฆฌ์์ค ํ์ผ์ ๊ฐ๋ฅํ ์๊ฒ ๋ง๋ค๊ธฐ ์ํด ๋ชจ๋ ์ด๋ฏธ์ง ํ์ผ์ ์์ถํ์ญ์์ค. (iOS ์ฑ ๊ธฐ๋ณธ ์ด๋ฏธ์ง ํฌ๋งท์ธ PNG ์ด๋ฏธ์ง๋ฅผ ์์ถํ๋ ค๋ฉด pngcrush ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ญ์์ค.)
- ์์ฑ ๋ชฉ๋ก ํ์ผ ์ค์ด๊ธฐ NSPropertyListSerialization` ํด๋์ค๋ฅผ ์ฌ์ฉํ์ฌ ์์ฑ ๋ชฉ๋ก์ ์ด์ง๋ฒ์ผ๋ก ์์ฑํ ์ ์์ต๋๋ค.
- ๋๊ท๋ชจ ๋ฐ์ดํฐ ๊ด๋ฆฌ ๋๊ท๋ชจ ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ๋ ๊ฒฝ์ฐ
Core Dataํน์SQLite๋ฅผ ์ฌ์ฉํ์ญ์์ค. ์ด๋ ์ ์ฒด ์ธํธ๋ฅผ ํ๋ฒ์ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅํ์ง ์๊ณ ๋์ฉ๋ ๋ฐ์ดํฐ๋ฅผ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌ ํ ์ ์๋ ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค. - ๋ฆฌ์์ค ๋ก๋ ์์ ์ค์ ๋ก ํ์ํ ๋๊น์ง ๋ฆฌ์์ค ํ์ผ์ ๋ก๋ํ์ง ๋ง์ญ์์ค. ๋ฆฌ์์ค ํ์ผ์ ๋ฏธ๋ฆฌ ๊ฐ์ ธ์ค๋ ๊ฒ์ ์๊ฐ์ ์ ์ฝ ์ํค๋ ๋ฐฉ๋ฒ์ฒ๋ผ ๋ณด์ผ ์ ์์ง๋ง, ๊ฒฐ๊ตญ์ ์ฑ์ ์๋๋ฅผ ์ ํ์ํค๊ฒ ๋ฉ๋๋ค.
๋ค์์ ํ๋ช ํ๊ฒ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋นํ ์ ์๋ ํ์ ๋๋ค.
- ๋ฆฌ์์ค์ ํฌ๊ธฐ ์ ํ์ ๋์ญ์์ค. ๊ณ ํด์๋ ์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉํ๋ ๋์ iOS ๊ธฐ๊ธฐ์ ์ ํฉํ ํฌ๊ธฐ์ ์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉํ์ญ์์ค. ๋์ฉ๋ ๋ฆฌ์์ค ํ์ผ์ ์ฌ์ฉํด์ผํ๋ ๊ฒฝ์ฐ์๋ ํ์ผ์ ์ผ๋ถ๋ถ๋ง ๋ก๋ํ๋ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ์ธ์.(
mmap,munmap) - ๋ฌด์ ํ ๋ฌธ์ ๋ฅผ ๋ค๋ฃจ์ง ์๋๋ก ํ์ญ์์ค. ์ ํ์ด ์๋ ๋ฌธ์ ๋ ๋ง์ ์์ ๋ฐ์ดํฐ ๊ณ์ฐ์ด ํ์ํ ์๋ ์์ต๋๋ค. ์ฑ์์ ์ฌ์ฉ ๊ฐ๋ฅํ ๋ฉ๋ชจ๋ฆฌ๋ณด๋ค ๋ฌธ์ ํด๊ฒฐ์ ๋ ๋ง์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ํ์ ํ ๊ฒฝ์ฐ ๊ณ์ฐ์ ์๋ฃํ์ง ๋ชปํ ์ ์์ต๋๋ค.
iOS์ ๋คํธ์ํน ์คํ์๋ iOS ๊ธฐ๊ธฐ์ ๋ฌด์ ํต์ ์ ์ํ ๋ช๊ฐ์ง ์ธํฐํ์ด์ค๊ฐ ํฌํจ๋์ด์์ต๋๋ค. ์ฃผ์ ์ธํฐํ์ด์ค๋
CFNetworkํ๋ ์ ์ํฌ์ด๋ฉฐ,Core Entityํ๋ ์ ์ํฌ์BSD์์ผ์ ๊ธฐ๋ฐ์ผ๋ก ๋์ด์์ต๋๋ค. ๋คํธ์ํฌ ํต์ ์ ์ํดCFNetworkํ๋ ์ ์ํฌ๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์ ๋ณด๋ CFNetwork Programming Guide์ CFNetwork Framework Reference๋ฅผ ์ฐธ๊ณ ํ์ญ์์ค.
๋คํธ์ํฌ๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ์ก์์ ํ๋ ์์ ์ ๊ธฐ๊ธฐ์์ ๊ฐ์ฅ ์ ๋ ฅ์ ๋ง์ด ์๋ชจํ๋ ์์ ์ค ํ๋์ ๋๋ค. ๋ฐ์ดํฐ ์ก์์ ์ ์์๋๋ ์๊ฐ์ ์ต์ํํ์ฌ ๋ฐฐํฐ๋ฆฌ ์๋ช ์ ํฅ์์ํค๊ธฐ ์ํด ์๋ ํ์ ๊ณ ๋ คํ์ญ์์ค.
- ๋ฐ์ดํฐ ํ์์ ๊ฐ๋ฅํ ์ปดํฉํธํ๊ฒ ์ ์ํ์ญ์์ค.
- ์๋ค์ค๋ฌ์ด ํ๋กํ ์ฝ ์ฌ์ฉ์ ํผํ์ญ์์ค.
- ์ ๋ฃฐ๋ฌ ๋ฐ Wi-Fi๋ ํ๋์ด ์์๋ ์๋์ ์ผ๋ก ๊บผ์ง๋๋ก ์ค๊ณ๋์ด์์ง๋ง, ์ฑ์ด ์ฃผ๊ธฐ์ ์ผ๋ก ์์ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๋ ๊ฒฝ์ฐ์๋ Wi-Fi๊ฐ ํ๋ํ์ง ์์๋๋ ๊ณ์ ์ผ์ ธ ์ ๋ ฅ์ ์๋นํ ์ ์์ต๋๋ค. ์๋์ ๋ฐ์ดํฐ๋ฅผ ์์ฃผ ์ก์ ํ๊ธฐ ๋ณด๋ค ๋๋์ ๋ฐ์ดํฐ๋ฅผ ๊ธด ๊ฐ๊ฒฉ์ผ๋ก ์ ์กํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
- ๋คํธ์ํฌ ๋์ ์ ํ ๋ ํจํท์ ์ธ์ ๋ ์ง ์์ค ๋ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ๋คํธ์ํน ์ฝ๋๋ฅผ ์์ฑํ ๋ ์ฅ์ ์ฒ๋ฆฌ์ ๊ด๋ จํด์๋ ๊ฐ๋ ฅํ๊ฒ ๋์ํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
์ฑ์ด Wi-Fi๋ฅผ ์ฌ์ฉํ์ฌ ๋คํธ์ํฌ์ ์ก์ธ์ค ํ๋ ๊ฒฝ์ฐ ์ฑ์ Info.plist ํ์ผ์
UIRequiresPersistentWiFiํค๋ฅผ ํฌํจ์์ผ ์์คํ ์ ์๋ ค์ค์ผํฉ๋๋ค. ์ด ํค๊ฐ ํฌํจ๋์ด ์์ผ๋ฉด ์ฑ์ด ์คํ๋๋ ๋์ Wi-Fi ํ๋์จ์ด๋ฅผ ์ข ๋ฃํ์ง ๋ง์์ผ ํ๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
๊ธฐ๊ธฐ๊ฐ ๋นํ๊ธฐ ๋ชจ๋์ ์๋ ๋์ ์ฑ์ด ์์๋๋ฉด, ์์คํ ์์ ์ฌ์ฉ์์๊ฒ ๋นํ๋ชจ๋์์ ์๋ฆฌ๊ธฐ ์ํด alert๋ฅผ ํ์ํ ์ ์์ต๋๋ค. ์์คํ ์ ๋ค์ ์กฐ๊ฑด์ด ๋ชจ๋ ์ถฉ์กฑ๋๋ฉด alert๋ฅผ ํ์ํฉ๋๋ค.
* Info.plist ํ์ผ์ `UIRequiresPersistentWiFi` ํค๊ฐ ํฌํจ๋์ด์๊ณ , ํด๋น ํค์ ๊ฐ์ด `true`์ผ๋
* ๊ธฐ๊ธฐ๊ฐ ๋นํ๊ธฐ ๋ชจ๋์ ์๋ ๋์ ์ฑ์ด ์คํ๋จ
* ๋นํ๊ธฐ ๋ชจ๋๋ก ์ ํ ํ ํ, ์ฅ์น์ Wi-Fi๊ฐ ์๋์ผ๋ก ํ์ฑํ ๋จ
ํ์ผ ๊ด๋ฆฌ๋ฅผ ์ํด ๋์คํฌ์ ์ฐ๋ ๋ฐ์ดํฐ ์์ ์ต์ํ ํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ํ์ผ ๊ด๋ จ ์์ ์ ์ต์ํํ๋ ๋ฐ ๋์์ด ๋๋ ๋ช๊ฐ์ง ํ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ํ์ผ ์ ์ฒด๋ฅผ ์ ์ฅํ๋ ๊ฒ์ด ์๋๋ผ, ๋ณ๊ฒฝ๋ ํ์ผ์ ์ผ๋ถ๋ถ๋ง ์ ์ฅํ ์ ์๋๋ก ํ์ญ์์ค.
- ๋ฐ์ดํฐ๊ฐ randomly ์ ๊ทผ๊ฐ๋ฅํ๊ณ , ์์ด ์ด ๋ช MB์ด์์ธ ๊ฒฝ์ฐ
Core Dataํน์SQLite์ ๊ฐ์ ์๊ตฌ ์ ์ฅ์์ ์ ์ฅํ์ญ์์ค. - ์บ์ํ์ผ์ ๋์คํฌ์ ์ฐ์ง ์๋๋ก ํ์ญ์์ค. ์ ์ผํ ์์ธ ์ํฉ์ ์ฑ์ ์ข ๋ฃํ์๋์ ๋์ผํ ์ํ๋ก ๋๋๋ฆด ์ ์๋๋ก ์ํ ์ ๋ณด๋ฅผ ์ ์ฅํด์ผ ํ ๋ ์ ๋๋ค.
๋ฐฑ์ ์ ์ฌ์ฉ์๊ฐ iTunes์ ๊ธฐ๊ธฐ๋ฅผ ๋๊ธฐํ ํ ๋๋ iCloud๋ฅผ ํตํด ๋ฌด์ ์ผ๋ก ์คํ๋๊ณ , ๋ฐฑ์ ์ด ์งํ๋๋ ๋์ ๊ธฐ๊ธฐ์์ ์ฌ์ฉ์์ ์ปดํจํฐ ๋๋ iCloud ๊ณ์ ์ผ๋ก ํ์ผ์ด ์ ์ก๋ฉ๋๋ค. ์ฑ ์๋๋ฐ์ ํ์ผ ์์น์ ๋ฐ๋ผ ํด๋น ํ์ผ์ ๋ฐฑ์ /๋ณต์ํ ์ง ์ฌ๋ถ๊ฐ ๊ฒฐ์ ๋๋๋ฐ, ์ฑ์์ ์ฃผ๊ธฐ์ ์ผ๋ก ๋ง์ ์์ ๋ฐ์ดํฐ๋ฅผ ๋ง๋ค๊ณ ๋ณ๊ฒฝํ๋ ๊ฒฝ์ฐ์๋ ๋ฐฑ์ ์๋๊ฐ ๋๋ ค์ง ์ ์์ต๋๋ค. ํ์ผ ๊ด๋ฆฌ ์ฝ๋๋ฅผ ์์ฑํ ๋๋ ์ด ์ฌ์ค์ ๊ผญ ์ผ๋ํด ๋์ด์ผํฉ๋๋ค.
๋ฐฑ์ /๋ณต์ ์์ ์ ์ํด ์ฑ์์ ์ค๋นํด์ผ ํ๋ ๊ฒ์ ์์ต๋๋ค. iClound๋ iTunes์ ์ฐ๊ฒฐ๋๋ฉด ์ฑ ๋ฐ์ดํฐ ํ์ผ์ ๋ณ๊ฒฝ๋ ๋ถ๋ถ์ ๋ฐฑ์ ํฉ๋๋ค. ํ์ง๋ง ์๋ ๋๋ ํ ๋ฆฌ์ ๋ด์ฉ์ ๋ฐฑ์ ํ์ง ์์ต๋๋ค.
\<Application_Home>/AppName.app
\<Application_Data>/Library/Caches
\<Application_Data>/tmp
๋๊ธฐํ ํ๋ก์ธ์ค์ ๊ฑธ๋ฆฌ๋ ์๊ฐ๊ณผ ์ฑ์ด ์ฐจ์งํ๋ ์ฉ๋์ ์ค์ด๊ธฐ ์ํด ๋ค์ ๊ฐ์ด๋ ๋ผ์ธ์ ๋ฐ๋ผ ์ฑ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
- ์ค์ํ ๋ฐ์ดํฐ๋ <Application_Data>/Documents ์ ์ ์ฅํด์ผํฉ๋๋ค. ์ค์๋ฐ์ดํฐ๋ ์ฌ์ฉ์ ๋ฌธ์ ๋ฐ ๊ธฐํ ์ฌ์ฉ์๊ฐ ์์ฑํ ์ฝํ ์ธ ์ ๊ฐ์ด ์ฑ์์ ๋ค์ ์์ฑ ํ ์ ์๋ ๋ฐ์ดํฐ์ ๋๋ค.
- Support file์๋ ์ฑ์์ ๋ค์ด๋ก๋ํ๊ฑฐ๋ ์ฌ์์ฑ๊ฐ๋ฅํ ํ์ผ์ด ํฌํจ๋ฉ๋๋ค.
- ์บ์๋ ๋ฐ์ดํฐ๋ <Application_Data>/Library/Caches ๋๋ ํ ๋ฆฌ์ ์ ์ฅ๋์ด์ผ ํฉ๋๋ค. ์บ์ ๋๋ ํ ๋ฆฌ์ ์ ์ฅํด์ผํ๋ ํ์ผ์ ์๋ก๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์บ์ ํ์ผ, ์ก์ง, ์ ๋ฌธ, ์ง๋ ์ฑ ๋ฑ์์ ๋ค์ด๋ก๋ ๋ฐ์ ํ์ผ์ ๋๋ค.
- ์์ ๋ฐ์ดํฐ๋ <Application_Data>/tmp ๋๋ ํ ๋ฆฌ์ ์ ์ฅํด์ผํฉ๋๋ค. ์์ ๋ฐ์ดํฐ๋ ์ค๋ ์๊ฐ ๋์ ์ ์งํ ํ์๊ฐ ์๋ ๋ฐ์ดํฐ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค. ๊ธฐ๊ธฐ์์ ์ฌ์ฉ๋ ํ์๋ ๊ณต๊ฐ์ ์ฐจ์งํ์ง ์๋๋ก ํ์ผ์ ์ญ์ ํด์ผํฉ๋๋ค.
- ์์ฉ ํ๋ก๊ทธ๋จ์์ ๋๋ ํ ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ ์์ธํ ๋ฐฉ๋ฒ์ File Systeom Programming Guide๋ฅผ ์ฐธ๊ณ ํ์ธ์.
์ฌ์ฉ์๊ฐ ์ฑ ์ ๋ฐ์ดํธ๋ฅผ ๋ค์ด๋ก๋ํ๋ฉด iTunes๋ ์๋ก์ด ์ฑ ๋๋ ํ ๋ฆฌ์ ์ ๋ฐ์ดํธ๋ฅผ ์ค์นํฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ ์ด์ ์ฑ์ ์ญ์ ํ๊ธฐ ์ ์ ์ฌ์ฉ์ ๋ฐ์ดํฐ ํ์ผ์ ์ ์ฑ์ ๋๋ ํ ๋ฆฌ๋ก ์ด๋์ํต๋๋ค. ์๋ ๋๋ ํ ๋ฆฌ์ ํ์ผ์ ์ ๋ฐ์ดํธ ํ๋ก์ธ์ค์์ ๋ณด์กด๋ฉ๋๋ค.
\<Application_Data>/Documents
\<Application_Data>/Library
์ ๋ฐ์ดํธ ํ์, ๋ค๋ฅธ ๋๋ ํ ๋ฆฌ์ ํ์ผ๋ ์ฎ๊ฒจ์ง ์ ์์ง๋ง ํ์ผ์ด ์กด์ฌํ๋ค๊ณ ๋ฏฟ์ด์๋ ์๋ฉ๋๋ค.
์ฑ์ main thread์์ ์ํ๋๋ ์์ ์ ์ ํ์ ์ ํํด์ผํฉ๋๋ค. main thread๋ ์ฑ์ ํฐ์น ์ด๋ฒคํธ ๋ฐ ๊ธฐํ ์ฌ์ฉ์ ์ ๋ ฅ์ ์ฒ๋ฆฌํ๋ ๊ณณ์ ๋๋ค. ์ฑ์ด ํญ์ ์ฌ์ฉ์์๊ฒ ์๋ตํ ์ ์๋๋ก ํ๋ ค๋ฉด ๋คํธ์ํฌ์ ์ก์ธ์คํ๋ ์์ ์ด๋ ์ฅ์๊ฐ์ด ๊ฑธ๋ฆฌ๋ ์์ ์ main thread์์ ์คํ ํด์๋ ์๋ฉ๋๋ค. ๋์ ๋ฐฑ๊ทธ๋ผ์ด๋ ์ค๋ ๋์์ ์ฎ๊ฒจ์ ์์ ํด์ผํฉ๋๋ค. ์ด๋ฅผ ์ํํ๋ ๊ฐ์ฅ ์ข์ ๋ฐฉ๋ฒ์ GCD(Grand Center Dispatch) ๋๋ NSOperation ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ์ฌ ์์ ์ ๋น๋๊ธฐ(async)๋ก ์ํํ๋ ๊ฒ์ ๋๋ค.
- ์์
์ ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์คํ์ํค๋ฉด main thread๊ฐ ์์ ๋กญ๊ฒ ์ฌ์ฉ์ ์
๋ ฅ์ ์ฒ๋ฆฌํ ์ ์๊ฒ๋๋ฉฐ, ์ด๋ ์ฑ์ด ์์/์ข
๋ฃ๋ ๋ ํนํ ์ค์ํฉ๋๋ค.
- ์ฑ์ด ์คํ(launch)๋ ๋ main thread๊ฐ ์ฐจ๋จ ๋ ๊ฒฝ์ฐ ์์คํ ์ ์คํ์ด ์๋ฃ๋๊ธฐ ์ ์ ์ฑ์ ์ข ๋ฃ(kill)์ํฌ ์ ์์ต๋๋ค.
- ์ฑ์ด ์ข ๋ฃ๋ ๋ main thread๊ฐ ์ฐจ๋จ๋์ด์์ผ๋ฉด ์ฌ์ฉ์์ ์ค์ํ ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋กํ๊ธฐ ์ ์ ์์คํ ์ด ์ฑ์ ์ข ๋ฃ(kill)ํ ์ ์์ต๋๋ค.
- GCD, operation object, thread์ ๊ดํ ์์ธํ ์ ๋ณด๋ Concurrency Programming Guide๋ฅผ ์ฐธ๊ณ ํ์ธ์.
- ์๋ฌธ์์ ์ค๋ณต๋๋ ๋ด์ฉ์ด๋ ์์ ์ฝ๋๋ ์๋ตํ์ต๋๋ค. ์ ํํ ๋ด์ฉ์ ์๋ฌธ์ ํ์ธํด์ฃผ์ธ์.
- ๋ฒ์ญ: ์ ๋ฏธ์





