Tong's Blog

[Swift] Foundation 간단 정리 본문

iOS/Swift

[Swift] Foundation 간단 정리

통스 2020. 12. 23. 10:48
반응형

안녕하세요.
오늘은 우리가 자주 보고 (import Foundation) 혹은 우리도 모르게 쓰고 있지만 (import UIKit)
실제로 어떤 역할을 하고 있는지 잘 모르고 쓰게 되는 Framework인 Foundation에 대해 간단히 정리해보려고 합니다.

개요


https://developer.apple.com/documentation/foundation

 

Apple Developer Documentation

developer.apple.com


간단히 번역하자면, Foundation Framework는 데이터 저장, text 처리, 날짜 및 시간 계산, 정렬 및 필터, 네트워킹을 포함한 앱 기능과 Frameworks의 기본이 되는 Framework라고 합니다.

사실상 우리가 Array나 데이터 타입을 지정하거나 네트워킹같이 App에서 기본적인 기능을 구현하기 위해서 필수적으로 import되어야하는 Framework라고할 수 있습니다.
하지만 실제로 우리가 처음 프로젝트를 생성하거나 Cocoa Touch class를 생성하면서 볼 수 있는 UIKit에는 이 Foundation이 기본적으로 import되어 있기 때문에 우리는 UIKit만 import해도 대부분의 기능을 사용할 수 있습니다.

그러면 Foundation에서 제공하는 기능이 무엇이 있는지 Apple 문서를 기반으로 간단히 훑어보겠습니다.

Foundation Framework 내부

import Combine
import CoreFoundation
import CoreGraphics
import Darwin
import Darwin.uuid
import Dispatch
import Foundation.FoundationErrors
import Foundation.FoundationLegacySwiftCompatibility
import Foundation.NSArray
import Foundation.NSAttributedString
import Foundation.NSAutoreleasePool
import Foundation.NSBundle
import Foundation.NSByteCountFormatter
import Foundation.NSByteOrder
import Foundation.NSCache
import Foundation.NSCalendar
import Foundation.NSCharacterSet
import Foundation.NSCoder
import Foundation.NSComparisonPredicate
import Foundation.NSCompoundPredicate
import Foundation.NSData
import Foundation.NSDate
import Foundation.NSDateComponentsFormatter
import Foundation.NSDateFormatter
import Foundation.NSDateInterval
import Foundation.NSDateIntervalFormatter
import Foundation.NSDecimal
import Foundation.NSDecimalNumber
import Foundation.NSDictionary
import Foundation.NSEnergyFormatter
import Foundation.NSEnumerator
import Foundation.NSError
import Foundation.NSException
import Foundation.NSExpression
import Foundation.NSExtensionContext
import Foundation.NSExtensionItem
import Foundation.NSExtensionRequestHandling
import Foundation.NSFileCoordinator
import Foundation.NSFileHandle
import Foundation.NSFileManager
import Foundation.NSFilePresenter
import Foundation.NSFileVersion
import Foundation.NSFileWrapper
import Foundation.NSFormatter
import Foundation.NSHTTPCookie
import Foundation.NSHTTPCookieStorage
import Foundation.NSHashTable
import Foundation.NSISO8601DateFormatter
import Foundation.NSIndexPath
import Foundation.NSIndexSet
import Foundation.NSInvocation
import Foundation.NSItemProvider
import Foundation.NSJSONSerialization
import Foundation.NSKeyValueCoding
import Foundation.NSKeyValueObserving
import Foundation.NSKeyedArchiver
import Foundation.NSLengthFormatter
import Foundation.NSLinguisticTagger
import Foundation.NSListFormatter
import Foundation.NSLocale
import Foundation.NSLock
import Foundation.NSMapTable
import Foundation.NSMassFormatter
import Foundation.NSMeasurement
import Foundation.NSMeasurementFormatter
import Foundation.NSMetadata
import Foundation.NSMetadataAttributes
import Foundation.NSMethodSignature
import Foundation.NSNetServices
import Foundation.NSNotification
import Foundation.NSNotificationQueue
import Foundation.NSNull
import Foundation.NSNumberFormatter
import Foundation.NSObjCRuntime
import Foundation.NSObject
import Foundation.NSOperation
import Foundation.NSOrderedCollectionChange
import Foundation.NSOrderedCollectionDifference
import Foundation.NSOrderedSet
import Foundation.NSOrthography
import Foundation.NSPathUtilities
import Foundation.NSPersonNameComponents
import Foundation.NSPersonNameComponentsFormatter
import Foundation.NSPointerArray
import Foundation.NSPointerFunctions
import Foundation.NSPort
import Foundation.NSPredicate
import Foundation.NSProcessInfo
import Foundation.NSProgress
import Foundation.NSPropertyList
import Foundation.NSProxy
import Foundation.NSRange
import Foundation.NSRegularExpression
import Foundation.NSRelativeDateTimeFormatter
import Foundation.NSRunLoop
import Foundation.NSScanner
import Foundation.NSSet
import Foundation.NSSortDescriptor
import Foundation.NSStream
import Foundation.NSString
import Foundation.NSTextCheckingResult
import Foundation.NSThread
import Foundation.NSTimeZone
import Foundation.NSTimer
import Foundation.NSURL
import Foundation.NSURLAuthenticationChallenge
import Foundation.NSURLCache
import Foundation.NSURLConnection
import Foundation.NSURLError
import Foundation.NSURLProtectionSpace
import Foundation.NSURLProtocol
import Foundation.NSURLRequest
import Foundation.NSURLResponse
import Foundation.NSURLSession
import Foundation.NSUUID
import Foundation.NSUbiquitousKeyValueStore
import Foundation.NSUndoManager
import Foundation.NSUnit
import Foundation.NSUserActivity
import Foundation.NSUserDefaults
import Foundation.NSValueTransformer
import Foundation.NSXMLParser
import Foundation.NSXPCConnection
import Foundation.NSZone
import Foundation
import Foundation.NSURLCredential
import Foundation.NSURLCredentialStorage
import Foundation.NSValue
import ObjectiveC

Fundamentals

  • Numbers, Data, and Basic Value : Int, Double 비롯한 기본적인 변수 사용
  • String and Text : String에 관련된 처리들
  • Collections : Array, Dictionary, Set등 list와 관련된 처리
  • Dates and Times : 날짜와 시간 처리
  • Units and Measurement
  • Data Formatting
  • Filters and Sorting : 배열의 검사 및 정렬에 관련된 처리

App Support

  • Task Management
  • Resources : 리소스와 관련된 처리
  • Notifications : Notification Center 등에 관련된 처리
  • App Extension Support 
  • Errors and Exceptions
  • Scripting Support

Files and Data Persistence

  • File System
  • Archives and Serialization
  • Preferences
  • Spotlight
  • iCloud

Networking

  • URL Loading System : URLSession등 네트워킹과 관련된 처리
  • Bonjour

Low-Level Utilities

  • XPC
  • Object Runtime
  • Processes and Threads
  • Streams, Sockets, and Ports

생각보다 수많은 기능이 포함되어 있는 Framework였습니다.

저도 보다 상세하게 설명드리고 싶지만 각 기능중에 저도 처음 접하거나 공부해본적이 없는 기능들이 많아서

나중에 따로 포스트할 수 있는 시간이 있으면 좋겠네요.

 

오늘도 부족한 글 읽어주셔서 감사합니다.

반응형
Comments