iOS 개발자가 알아야 할 프레임워크와 개념 목록
1. UIKit
설명: 사용자 인터페이스를 구축하고 관리하는 데 필수적인 프레임워크입니다.
주요 구성 요소:
- UIView: 모든 UI 요소의 기본 클래스입니다.
- UIViewController: UIKit 앱을 위한 view 계층 구조를 관리합니다.
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let label = UILabel()
label.text = "Hello, UIKit!"
label.frame = CGRect(x: 20, y: 50, width: 200, height: 50)
view.addSubview(label)
}
}
2. SwiftUI
설명: 사용자 인터페이스를 선언적으로 구축하기 위한 현대적인 프레임워크입니다.
주요 구성 요소:
- View: 모든 뷰의 기본 프로토콜입니다.
- State: 뷰 내에서 상태를 관리하기 위한 속성 래퍼입니다.
import SwiftUI
struct ContentView: View {
@State private var message = "Hello, SwiftUI!"
var body: some View {
Text(message)
.padding()
}
}
3. Foundation
설명: 필수 데이터 유형, 컬렉션 및 유틸리티를 제공합니다.
주요 구성 요소:
- String: 텍스트를 표현합니다.
- Array: 요소들의 순서가 정해진 컬렉션입니다.
- Dictionary: 키-값 쌍의 컬렉션입니다.
import Foundation
let string: String = "Hello, Foundation!"
let array: [String] = ["Hello", "Foundation"]
let dictionary: [String: String] = ["greeting": "Hello, Foundation!"]
4. Core Data
설명: 데이터베이스를 사용하여 앱의 모델 레이어를 관리하는 프레임워크입니다.
핵심 구성 요소:
- NSManagedObject: Core Data 객체의 기본 클래스.
- NSManagedObjectContext: 관리 대상 개체 모음을 관리합니다.
import CoreData
// Entity "Person"의 속성 "name"을 가진 Core Data 설정을 가정합니다.
let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext
let newPerson = Person(context: context)
newPerson.name = "John Doe"
do {
try context.save()
} catch {
print("저장 실패")
}
5. Combine
설명: 비동기 이벤트 처리 및 함수형 반응 프로그래밍을 다루는 프레임워크.
주요 구성 요소:
- 발행자(Publisher): 시간에 따라 값의 시퀀스를 방출합니다.
- 구독자(Subscriber): 발행자로부터 값을 수신합니다.
import Combine
let publisher = Just("Hello, Combine!")
let subscriber = publisher.sink { value in
print(value)
}
6. URLSession
설명: 네트워크 요청을 만들기 위한 프레임워크입니다.
주요 구성 요소:
- URLSession: 네트워크 데이터 작업을 조정하는 주요 클래스입니다.
- URLRequest: URL에서 데이터를로드하는 요청입니다.
import Foundation
let url = URL(string: "https://API URL")!
let task = URLSession.shared.dataTask(with: url) { data, response, error in
if let data = data, let string = String(data: data, encoding: .utf8) {
print(string)
}
}
task.resume()
7. Core Animation
설명: 뷰 및 레이어에 대한 고급 애니메이션 기능을 제공합니다.
주요 구성 요소:
- CABasicAnimation: 기본 단일 키 프레임 애니메이션을 제공하는 객체.
import UIKit
let animation = CABasicAnimation(keyPath: "position")
animation.fromValue = CGPoint(x: 0, y: 0)
animation.toValue = CGPoint(x: 200, y: 200)
animation.duration = 1.0
let view = UIView()
view.layer.add(animation, forKey: "position")
8. Core Graphics
설명: 2D 그리기를 위한 프레임워크입니다.
주요 구성 요소:
- CGContext: 2D 그래픽을 렌더링하는 그리기 대상입니다.
import UIKit
class MyView: UIView {
override func draw(_ rect: CGRect) {
guard let context = UIGraphicsGetCurrentContext() else { return }
context.setFillColor(UIColor.red.cgColor)
context.fill(rect)
}
}
9. Core Location
Description: 기기의 지리적 위치를 결정하는 서비스를 제공합니다.
주요 구성 요소:
- CLLocationManager: 위치를 추적하는 서비스를 제공합니다.
import CoreLocation
class LocationManager: NSObject, CLLocationManagerDelegate {
let manager = CLLocationManager()
override init() {
super.init()
manager.delegate = self
manager.requestWhenInUseAuthorization()
manager.startUpdatingLocation()
}
func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
guard let location = locations.first else { return }
print(location.coordinate)
}
}
10. MapKit
설명: 지도를 임베드하고 주석을 추가하는 인터페이스를 제공합니다.
주요 구성 요소:
- MKMapView: 앱에 지도 인터페이스를 포함합니다.
- MKAnnotation: 지도 상의 데이터 포인트를 나타냅니다.
import SwiftUI
import MapKit
struct MapView: UIViewRepresentable {
func makeUIView(context: Context) -> MKMapView {
MKMapView(frame: .zero)
}
func updateUIView(_ view: MKMapView, context: Context) {
let coordinate = CLLocationCoordinate2D(latitude: 37.7749, longitude: -122.4194)
let span = MKCoordinateSpan(latitudeDelta: 0.05, longitudeDelta: 0.05)
let region = MKCoordinateRegion(center: coordinate, span: span)
view.setRegion(region, animated: true)
}
}
struct ContentView: View {
var body: some View {
MapView()
}
}
11. AVFoundation
설명: 오디오 비주얼 미디어 작업을 위한 프레임워크입니다.
주요 구성 요소:
- AVPlayer: 오디오 비주얼 미디어 재생을 관리하는 플레이어입니다.
- AVPlayerItem: AVPlayer에서 재생할 개별 항목을 나타냅니다.
import AVFoundation
let player = AVPlayer(url: URL(string: "https://www.example.com/video.mp4")!)
let playerLayer = AVPlayerLayer(player: player)
playerLayer.frame = CGRect(x: 0, y: 0, width: 300, height: 300)
player.play()
12. CloudKit
설명: iCloud에 데이터를 저장하고 관리하는 프레임워크입니다.
주요 구성 요소:
- CKRecord: 데이터베이스에 있는 단일 레코드를 나타냅니다.
- CKDatabase: 레코드를 포함하는 데이터베이스를 나타냅니다.
import CloudKit
let record = CKRecord(recordType: "Note")
record["content"] = "Hello, CloudKit!" as CKRecordValue
let privateDatabase = CKContainer.default().privateCloudDatabase
privateDatabase.save(record) { (record, error) in
if let error = error {
print("Error saving record: \(error)")
} else {
print("Record saved successfully!")
}
}