ASH84

Software Engineer/Developer, co-founder of Payhere. Ex-Banksalad. Intereseted in iteroperability, bootstrap company, writting.

[Cocoa Design Pattern] 24.Bundle

created:2011-07-14
updated:2015-07-03
edit
![](http://ash84.net/wp-content/uploads/1/cfile1.uf.111CE2494E1D5B1024A668.jpg) **λ²ˆλ“€μ΄λž€?** – μ‹€ν–‰μ½”λ“œμ™€ 이미지, μ‚¬μš΄λ“œ, λ¬Έμžμ—΄, NIB 파일과 같은 λ¦¬μ†ŒμŠ€μ˜ λͺ¨μŒ – 각 λ¦¬μ†ŒμŠ€μ˜ λ‹€λ₯Έ 버전을 λ™μ‹œμ— μ €μž₯, μ‚¬μš©μžμ˜ μ–Έμ–΄λ‚˜ 지역 섀정에 따라 Β Β λ‹€λ₯Έ λ²„μ „μ˜ λ¦¬μ†ŒμŠ€λ₯Ό μ‚¬μš© κ°€λŠ₯ν•˜κ²Œ 함. – μžλ°”μ˜ JAR(Java ARchive), C# ν”„λ‘œκ·Έλž˜λ°μ˜ λ¦¬μ†ŒμŠ€ **νŒ¨ν„΄μ΄ λ§Œλ“€μ–΄μ§„ 동기 ** – ν•„μš”ν•œ λ¦¬μ†ŒμŠ€κ°€ λ‚΄λΆ€ μ €μž₯ 곡간에 μ—¬λŸ¬λ²„μ „κ³Ό μ—¬λŸ¬ 파일둜 κ΅¬μ„±λ˜μ–΄μžˆλŠ” κ²½μš°μ—λ„, Β Β  ν•œ 곳에 λͺ¨μ„ 수 μžˆλ„λ‘ ν•œλ‹€.Β  – μ‹€ν–‰μ½”λ“œμ™€ λ¦¬μ†ŒμŠ€λ₯Ό λ™μ μœΌλ‘œ λ‘œλ“œ ν•  수 μžˆλ„λ‘ μœ μ—°ν•œ ν”ŒλŸ¬κ·ΈμΈ 기법을 κ΅¬ν˜„ν•œλ‹€.Β  **νŒ¨ν„΄μœΌλ‘œ 문제 ν•΄κ²°** – λ²ˆλ“€ = 디렉토리 : μ½”λ“œ, λ¦¬μ†ŒμŠ€λ“±μ„ νŒŒμΌμ‹œμŠ€ν…œ 디렉토리λ₯Ό ν†΅ν•΄μ„œ λ§Œλ“ κ²ƒΒ  – κ³„μΈ΅κ΅¬μ‘°λ‘œ κ΅¬μ„±λ˜μ–΄ μžˆλ‹€.Β  **[ꡬ성](http://developer.apple.com/library/ios/#documentation/CoreFoundation/Conceptual/CFBundles/BundleTypes/BundleTypes.html#//apple_ref/doc/uid/10000123i-CH101-SW1 "[http://developer.apple.com/library/ios/#documentation/CoreFoundation/Conceptual/CFBundles/BundleTypes/BundleTypes.html#//apple_ref/doc/uid/10000123i-CH101-SW1]둜 μ΄λ™ν•©λ‹ˆλ‹€.")** * Contents – λͺ¨λ“  λ²ˆλ“€ λ¦¬μ†ŒμŠ€ λ‹΄κ³  μžˆλ‹€.Β  Β Β  Β  * Info.plist : λ²ˆλ“€μ— λŒ€ν•œ 정보,Β Unique ν•˜κ²Œ 식별 κ°€λŠ₯ν•œ λ²ˆλ“€ μ‹λ³„μž λ¬Έμžμ—΄μ„ μ €μž₯ν•˜κ³  있음.Β  Β  * Mac OS : μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ‹€ν–‰ 파일  Β  * Resources : nib 파일, κ·Έλž˜ν”½, λ¬Έμžμ—΄, λ¦¬μ†ŒμŠ€ 파일, 지역별버전(.lproj) 폴더  – μ‚¬μš©μžμ—κ²Œ ν•˜λ‚˜μ˜ 파일처럼 보이게 ν•˜λŠ” 효과 있음. (νŒ¨ν‚€μ§€) – κ·ΈλŸ¬λ‚˜ μ–Έμ œλ“ μ§€ νŒŒμΈλ”λ₯Ό ν†΅ν•΄μ„œ λ‚΄λΆ€ νŒŒμΌμ„ 볼수 μžˆλ‹€.Β  *** λ²ˆλ“€μ˜ μž₯점  **– λ²ˆλ“€μ€ νŒ¨ν‚€μ§€μ΄μž, ν‘œμ€€ 파일 λ·°μ–΄λ‘œ 볼수 있기 λ•Œλ¬Έμ— νŽΈμ§‘μ΄ κ°€λŠ₯ν•˜λ‹€.Β  – 이동 볡사, μ‚­μ œκ°€ κ°€λŠ₯ – μˆœμ§„ν•œ μ‚¬μš©μžλŠ” λ‚΄λΆ€ νŒŒμΌμ„ λ³Ό 일이 μ—†μ–΄μ„œ λ³€κ²½μ˜ κ°€λŠ₯성이 쀄어든닀.Β  – λ‹€κ΅­μ–΄ , 지역화 지원. μ›μΉ˜μ•ŠλŠ” 지역화 λ¦¬μ†ŒμŠ€ μ‰½κ²Œ 제거  – μ—¬λŸ¬λ²„μ „ μ €μž₯ 및 μ‹€ν–‰μ½”λ“œμ˜ μ—¬λŸ¬λ²„μ „μ„ 포함 ν•  수 있음.Β  – νŠΉμ •κΈ°λŠ₯에 의쑴적이 μ•„λ‹ˆλΌ, μ„œλ²„ λ˜λŠ” λ‹€μ–‘ν•œ νŒŒμΌμ‹œμŠ€ν…œμ— μ €μž₯ν•  수 μžˆλ‹€.Β  ***배포  ** – CD : λ²ˆλ“€μ„ CD둜 볡사  – λ„€νŠΈμ›Œν¬ : 문제 μ•ΌκΈ°μ˜ κ°€λŠ₯μ„± 있음, λ²ˆλ“€μ˜ μΌλΆ€λ§Œ λ‹€μš΄λ‘œλ“œ 받을 κ°€λŠ₯μ„± – DMG : λ””μŠ€ν¬μ΄λ―Έμ§€λ‘œ 생성, 이동식 λ””μŠ€ν¬λ‘œ 마운트 됨  * 항상 λ²ˆλ“€μ„ μ‚¬μš©ν•΄μ•Όν•˜λŠ” 것은 μ•„λ‹ˆλ‹€. (λ…λ¦½ν˜• μ»€λ§¨λ“œλΌμΈ ν”„λ‘œκ·Έλž¨ 개발 κ°€λŠ₯) – λ²ˆλ“€ μ œμž‘μ‹œ, μžλ™μœΌλ‘œ XCodeκ°€ 이미지, μ‚¬μš΄λ“œ νŒŒμΌλ“±κ³Ό 같은 ν‘œμ€€ λ¦¬μ†ŒμŠ€λ₯Ό μžμ‹ μ΄ μ†ν•˜λŠ” 곳에 μœ„μΉ˜μ‹œν‚¨λ‹€.Β  Β  **μ½”μ½”μ•„ μ‚¬μš© 예제 ** – λ²ˆλ“€μ„ NSBundle 클래슀둜 μΊ‘μŠν™”Β  – ν•˜λ‚˜μ˜ μ–΄ν”Œμ€ 적어도 ν•˜λ‚˜μ˜ λ²ˆλ“€μ„ 가지며, 메인 λ²ˆλ“€μ€ [NSBundle mainBundle]을 ν†΅ν•΄μ„œ μ ‘κ·Ό κ°€λŠ₯함.Β  – NSApplication – mainBundle – load nib file.Β  – λ™μ μœΌλ‘œ μ‹€ν–‰μ½”λ“œμ™€ λ¦¬μ†ŒμŠ€λ₯Ό 뢈러올 수 μžˆλ‹€. (375p) – ν˜„μž¬ 언어와 지역 섀정에 μ ν•©ν•œ λ²„μ „μ˜ 경둜 λ°˜ν™˜ – μ§€μ •λœ 지역화에 ν•΄λ‹Ήν•˜λŠ” λ¦¬μ†ŒμŠ€ 버전에 λŒ€ν•œ 경둜 λ°˜ν™˜ ν•˜λŠ” λ“±μ˜ λ¦¬μ†ŒμŠ€ μ ‘κ·Ό κ΄€λ ¨ λ©”μ†Œλ“œλ₯Ό μ œκ³΅ν•¨.Β  – NSBundle은 Foundation ν”„λ ˆμž„μ›Œν¬μ— μ†Œμ†λ˜μ–΄ μžˆμ§€λ§Œ, ApplicationKit ν”„λ ˆμž„μ›Œν¬μ—μ„œ μΉ΄ν…Œκ³ λ¦¬λ₯Ό ν†΅ν•΄μ„œΒ  Β  NSBundle을 μ—¬λŸ¬ 방면으둜 ν™•μž₯ν•œλ‹€.Β  * 메인 λ²ˆλ“€ λΏλ§Œμ•„λ‹ˆλΌ μ‹€ν–‰μ½”λ“œλ₯Ό λ‹΄κ³  μžˆλŠ” λ²ˆλ“€μ— μ ‘κ·Όν•˜λŠ” 것도 κ°€λŠ₯함. (I don’t know) **λ™μ μœΌλ‘œ μ‹€ν–‰μ½”λ“œ λ‘œλ“œν•˜κΈ°** – λ²ˆλ“€μ€ μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜ κ΅¬λ™μ‹œ μžλ™ λ‘œλ“œλœλ‹€.Β  – λ²ˆλ“€μ„ λ™μ μœΌλ‘œ λΆˆλŸ¬λ“€μ΄λ €λ©΄Β  +(NSBundle*)bundleWithPath:(NSString*)fullPath : NSBundle μΈμŠ€ν„΄μŠ€ 생성 **377p 예제 : myPlugin.bundle 을 λ‘œλ“œ** – λ²ˆλ“€ μΈμŠ€ν„΄μŠ€ λ§Œλ“€κ³  μΊ‘μŠν™” 해도 μžλ™ λ‘œλ“œλ˜μ§€ μ•ŠλŠ”λ‹€. ν•΄λ‹Ή μ½”λ“œλ₯Ό μ‚¬μš©ν• ν•„μš”κ°€ μžˆμ„μ‹œκΉŒμ§€ κΈ°λ‹€λ¦°λ‹€.Β  – κ°•μ œλ‘œ μ‹€ν–‰μ½”λ“œλ₯Ό μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜μ— λ§ν¬ν•˜κ²Œ ν•˜λ €λ©΄, NSBundle의 load λ©”μ†Œλ“œ λ˜λŠ” principalClass λ©”μ†Œλ“œ μ‚¬μš©Β (I don’t know)Β 
**νŒ¨ν„΄ μ‚¬μš© κ²°κ³Ό **Β  – Β μ‹€ν–‰μ½”λ“œμ™€ κ΄€λ ¨ λ¦¬μ†ŒμŠ€λ₯Ό ν•œκ³³μ— 두어, μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜ κ΅¬λ™μ‹œ, λ¦¬μ†ŒμŠ€ 경둜λ₯Ό ν•˜λ“œμ½”λ”© ν•˜μ§€ μ•Šμ•„λ„ λœλ‹€.Β  – Β λ¦¬μ†ŒμŠ€μ™€ μ½”λ“œλ₯Ό μ €μž₯μ‹œ, 디렉토리 계측 μ‚¬μš©μ˜ μž₯단점 Β Β Β  : μ‚¬μš©μžκ°€ ν•΄λ‹Ή μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ λ²ˆλ“€μ˜ λ‚΄μš©λ¬Όμ„ 보고 νŽΈμ§‘ ν• μˆ˜ μžˆλ‹€λŠ” 점 Β Β Β  : κ·ΈλŸ¬λ‚˜, λ‹€λ₯Έ μ‚¬μš©μžκ°€ μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜μ„ μ–Έμ œλ“ μ§€ 확인, μˆ˜μ •,μ‚­μ œκ°€ κ°€λŠ₯ν•˜λ‹€λŠ” 것. Β 

#bundle  #cocoa design pattern  #dev  #IOS  #iPhone dev  #λ””μžμΈνŒ¨ν„΄  #λ²ˆλ“€  #아이폰 개발