iOS/Swift

[Swift] Foundation Framework에 λŒ€ν•΄μ„œ

κ²½ν‘Έ 2022. 2. 5. 21:01
λ°˜μ‘ν˜•

μ•ˆλ…•ν•˜μ„Έμš”~

 

μ˜€λŠ˜μ€ Foundation Framework에 λŒ€ν•΄μ„œ 정리해보렀고 ν•©λ‹ˆλ‹€.

 

Foundation Framework

- Foundation ν”„λ ˆμž„μ›Œν¬λŠ” Apple의 iOS, macOS, tvOS, watchOS λ“±μ˜ μš΄μ˜μ²΄μ œμ—μ„œ μ‚¬μš©λ˜λŠ” κΈ°λ³Έ ν”„λ ˆμž„μ›Œν¬μž…λ‹ˆλ‹€. Foundation ν”„λ ˆμž„μ›Œν¬λŠ” Objective-C 및 Swift μ–Έμ–΄λ₯Ό μ‚¬μš©ν•˜μ—¬ μž‘μ„±λ˜μ–΄ 있으며, μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ 기본적인 데이터 νƒ€μž…, μ»¬λ ‰μ…˜, 파일 μž…μΆœλ ₯, λ„€νŠΈμ›Œν¬ 톡신 λ“±μ˜ κΈ°λŠ₯을 μ œκ³΅ν•©λ‹ˆλ‹€.

 

- Foundation ν”„λ ˆμž„μ›Œν¬λŠ” λ‹€λ₯Έ ν”„λ ˆμž„μ›Œν¬μ™€ ν•¨κ»˜ μ‚¬μš©λ  수 있으며, Cocoa Touch ν”„λ ˆμž„μ›Œν¬μ™€ ν•¨κ»˜ iOS μ• ν”Œλ¦¬μΌ€μ΄μ…˜ κ°œλ°œμ— ν•„μˆ˜μ μœΌλ‘œ μ‚¬μš©λ©λ‹ˆλ‹€. Foundation ν”„λ ˆμž„μ›Œν¬λŠ” λͺ¨λ“  iOS μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œ ν•„μˆ˜μ μœΌλ‘œ μ‚¬μš©λ©λ‹ˆλ‹€.

 

Foundation Framework의 μ£Όμš” κΈ°λŠ₯

1. 데이터 νƒ€μž…

Foundation ν”„λ ˆμž„μ›Œν¬μ—μ„œλŠ” Swiftμ—μ„œ 기본적으둜 μ œκ³΅ν•˜μ§€ μ•ŠλŠ” 데이터 νƒ€μž…λ“€μ„ μ œκ³΅ν•©λ‹ˆλ‹€. μ΄μ—λŠ” λ¬Έμžμ—΄(String), λ°°μ—΄(Array), 사전(Dictionary) 등이 μžˆμŠ΅λ‹ˆλ‹€. 이듀 데이터 νƒ€μž…μ€ Objective-C 기반의 Cocoa ν”„λ ˆμž„μ›Œν¬μ—μ„œ μ‚¬μš©λ˜λŠ” 데이터 νƒ€μž…λ“€κ³Ό μœ μ‚¬ν•˜λ©°, Swiftμ—μ„œλ„ 높은 ν˜Έν™˜μ„±κ³Ό μƒν˜Έ μš΄μš©μ„±(interoperability)을 보μž₯ν•©λ‹ˆλ‹€.

 

Foundation ν”„λ ˆμž„μ›Œν¬μ—μ„œ μ œκ³΅ν•˜λŠ” 데이터 νƒ€μž…λ“€μ€ 각각 λ‹€μ–‘ν•œ λ©”μ„œλ“œμ™€ 속성을 가지고 있으며, 이λ₯Ό 톡해 λ°μ΄ν„°μ˜ μ²˜λ¦¬μ™€ μ‘°μž‘μ„ μš©μ΄ν•˜κ²Œ ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, λ¬Έμžμ—΄(String) νƒ€μž…μ—μ„œλŠ” λ¬Έμžμ—΄μ„ μ‘°μž‘ν•˜κΈ° μœ„ν•œ λ‹€μ–‘ν•œ λ©”μ„œλ“œλ“€μ΄ μ œκ³΅λ©λ‹ˆλ‹€. 이λ₯Ό 톡해 λ¬Έμžμ—΄μ˜ 길이, μ„œλΈŒμŠ€νŠΈλ§, λŒ€μ†Œλ¬Έμž λ³€ν™˜, νŠΉμ • λ¬Έμžμ—΄ 검색 등을 μ‰½κ²Œ μ²˜λ¦¬ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

2. 파일 처리

Foundation ν”„λ ˆμž„μ›Œν¬μ—μ„œλŠ” νŒŒμΌμ„ 읽고 μ“°λŠ” κΈ°λŠ₯을 μ œκ³΅ν•©λ‹ˆλ‹€. 파일 μ²˜λ¦¬μ—λŠ” 파일 μ‹œμŠ€ν…œμ—μ„œ νŒŒμΌμ„ μ°Ύκ³  μ—΄κ³ , 읽고 μ“°λŠ” κΈ°λŠ₯이 ν¬ν•¨λ©λ‹ˆλ‹€. 파일 처리λ₯Ό μœ„ν•΄μ„œλŠ” 파일 경둜λ₯Ό μ§€μ •ν•˜κ³ , ν•΄λ‹Ή κ²½λ‘œμ— λŒ€ν•œ μ ‘κ·Ό κΆŒν•œμ„ 확인해야 ν•©λ‹ˆλ‹€. Foundation ν”„λ ˆμž„μ›Œν¬μ—μ„œλŠ” μ΄λŸ¬ν•œ κΈ°λŠ₯듀을 μ‰½κ²Œ μ²˜λ¦¬ν•  수 μžˆλŠ” λ©”μ„œλ“œλ“€μ„ μ œκ³΅ν•©λ‹ˆλ‹€.

3. λ„€νŠΈμ›Œν‚Ή

Foundation ν”„λ ˆμž„μ›Œν¬μ—μ„œλŠ” λ„€νŠΈμ›Œν¬ 톡신을 μœ„ν•œ ν΄λž˜μŠ€μ™€ ν•¨μˆ˜λ“€μ΄ ν¬ν•¨λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€. 이λ₯Ό 톡해 HTTP, FTP, SMTP λ“±μ˜ ν”„λ‘œν† μ½œμ„ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. Foundation ν”„λ ˆμž„μ›Œν¬μ—μ„œλŠ” URLSession 클래슀λ₯Ό μ‚¬μš©ν•˜μ—¬ λ„€νŠΈμ›Œν¬ 톡신을 μ²˜λ¦¬ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 이λ₯Ό 톡해 μ„œλ²„λ‘œλΆ€ν„° 데이터λ₯Ό λ°›μ•„μ˜€κ±°λ‚˜, μ„œλ²„μ— 데이터λ₯Ό 전솑할 수 μžˆμŠ΅λ‹ˆλ‹€.

4. λ‚ μ§œμ™€ μ‹œκ°„

Foundation ν”„λ ˆμž„μ›Œν¬μ—μ„œλŠ” λ‚ μ§œμ™€ μ‹œκ°„μ„ μ²˜λ¦¬ν•˜κΈ° μœ„ν•œ ν΄λž˜μŠ€μ™€ ν•¨μˆ˜λ“€μ΄ ν¬ν•¨λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€. 이λ₯Ό 톡해 λ‚ μ§œμ™€ μ‹œκ°„μ„ νŒŒμ‹± ν•˜κ³ , μ„œμ‹μ„ μ μš©ν•˜μ—¬ λ¬Έμžμ—΄λ‘œ λ³€ν™˜ν•˜κ±°λ‚˜, μ‹œκ°„ 간격을 κ³„μ‚°ν•˜λŠ” λ“±μ˜ κΈ°λŠ₯을 μ œκ³΅ν•©λ‹ˆλ‹€. 이λ₯Ό 톡해 μ‹œκ°„κ³Ό λ‚ μ§œλ₯Ό μ‰½κ²Œ λ‹€λ£° 수 μžˆμŠ΅λ‹ˆλ‹€.

5. μ •λ ¬κ³Ό 검색

Foundation ν”„λ ˆμž„μ›Œν¬μ—μ„œλŠ” 데이터 νƒ€μž…μ˜ μ •λ ¬κ³Ό 검색을 μœ„ν•œ κΈ°λŠ₯을 μ œκ³΅ν•©λ‹ˆλ‹€. 이λ₯Ό 톡해 λ°°μ—΄(Array)μ΄λ‚˜ 사전(Dictionary) λ“±μ˜ 데이터 νƒ€μž…μ„ μ •λ ¬ν•˜κ±°λ‚˜, νŠΉμ • 값이 ν¬ν•¨λ˜μ–΄ μžˆλŠ”μ§€ 검색할 수 μžˆμŠ΅λ‹ˆλ‹€.

6. μ•”ν˜Έν™”

Foundation ν”„λ ˆμž„μ›Œν¬μ—μ„œλŠ” 데이터λ₯Ό μ•”ν˜Έν™”ν•˜κ³  λ³΅ν˜Έν™”ν•˜λŠ” κΈ°λŠ₯을 μ œκ³΅ν•©λ‹ˆλ‹€. 이λ₯Ό 톡해 λ³΄μ•ˆμ„±μ΄ 높은 데이터 처리λ₯Ό ν•  수 μžˆμŠ΅λ‹ˆλ‹€. Foundation ν”„λ ˆμž„μ›Œν¬μ—μ„œλŠ” λ‹€μ–‘ν•œ μ•”ν˜Έν™” μ•Œκ³ λ¦¬μ¦˜μ„ μ§€μ›ν•˜λ©°, 이λ₯Ό μ‚¬μš©ν•˜μ—¬ 데이터λ₯Ό μ•ˆμ „ν•˜κ²Œ λ³΄ν˜Έν•  수 μžˆμŠ΅λ‹ˆλ‹€.

7. μœ λ‹ˆμ½”λ“œ

Foundation ν”„λ ˆμž„μ›Œν¬μ—μ„œλŠ” μœ λ‹ˆμ½”λ“œ(Unicode) λ¬Έμžμ—΄μ„ μ²˜λ¦¬ν•˜κΈ° μœ„ν•œ κΈ°λŠ₯을 μ œκ³΅ν•©λ‹ˆλ‹€. 이λ₯Ό 톡해 λ¬Έμžμ—΄μ˜ 인코딩과 λ””μ½”λ”©, λ¬Έμžμ—΄μ—μ„œ 문자λ₯Ό μΆ”μΆœν•˜κ±°λ‚˜, λ¬Έμžμ—΄μ˜ 길이λ₯Ό κ³„μ‚°ν•˜λŠ” λ“±μ˜ κΈ°λŠ₯을 μ œκ³΅ν•©λ‹ˆλ‹€.

8. λ©”λͺ¨λ¦¬ 관리

λ©”λͺ¨λ¦¬ 관리λ₯Ό μœ„ν•œ ν΄λž˜μŠ€μ™€ ν•¨μˆ˜λ“€μ΄ ν¬ν•¨λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€. 이λ₯Ό 톡해 ARCλ₯Ό μ‚¬μš©ν•˜κ±°λ‚˜, μˆ˜λ™μœΌλ‘œ λ©”λͺ¨λ¦¬λ₯Ό 관리할 수 μžˆμŠ΅λ‹ˆλ‹€.

9. 이외에도

Foundation ν”„λ ˆμž„μ›Œν¬μ—μ„œλŠ” μœ„μ—μ„œ μ–ΈκΈ‰ν•œ κΈ°λŠ₯ 이외에도 λ‹€μ–‘ν•œ κΈ°λŠ₯을 μ œκ³΅ν•©λ‹ˆλ‹€. μ΄μ—λŠ” λ‚œμˆ˜ 생성(Random Number Generation), μ•± ν™˜κ²½ 정보(App Environment Information), λ‘œκΉ…(Logging), λ‘œμΌ€μΌ(Locale) 등이 ν¬ν•¨λ©λ‹ˆλ‹€.

 

UIKitκ³Ό Foundation

UIKit ν”„λ ˆμž„μ›Œν¬λŠ” Foundation ν”„λ ˆμž„μ›Œν¬μ˜ μƒμœ„ λ ˆλ²¨μ— μœ„μΉ˜ν•˜λ©°, Foundation ν”„λ ˆμž„μ›Œν¬μ— ν¬ν•¨λœ λ§Žμ€ κΈ°λŠ₯듀을 이미 λ‚΄λΆ€μ μœΌλ‘œ μ‚¬μš©ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. λ”°λΌμ„œ UIKit을 import ν•˜λ©΄ Foundation ν”„λ ˆμž„μ›Œν¬λ„ μžλ™μœΌλ‘œ import λ©λ‹ˆλ‹€.

즉, UIKitμ—μ„œ μ œκ³΅ν•˜λŠ” λ‹€μ–‘ν•œ ν΄λž˜μŠ€μ™€ λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•˜κΈ° μœ„ν•΄μ„œλŠ” Foundation을 λ³„λ„λ‘œ import ν•  ν•„μš”κ°€ μ—†μŠ΅λ‹ˆλ‹€.

 

μ°Έκ³  : μ• ν”Œ 개발자 λ¬Έμ„œ

 

Apple Developer Documentation

 

developer.apple.com

 

λ°˜μ‘ν˜•