본문 바로가기

SwiftUI5

제네릭(Generic), where 키워드 제네릭(Generic)이란? 제네릭은 Swift에서 매우 강력한 기능 중 하나이다. 제네릭을 사용하면 함수, 메서드, 클래스, 구조체 등의 타입에 대해 일반화된 템플릿을 작성할 수 있다. 이는 코드 재사용성을 높이고, 타입 안정성을 보장하며, 유연성을 높이는 데 도움이 된다. Int, Double, String 등과 같은 타입들은 모두 값을 가지는 타입이지만, 그 값의 타입과 크기가 모두 다르다. 따라서, 이러한 타입을 처리하는 함수 또는 메서드를 작성할 때, 매번 새로운 함수를 작성하는 것은 비효율적이다. 이때 제네릭을 사용하면, 타입에 상관없이 동작하는 하나의 일반적인 함수를 작성할 수 있다. 아래는 제네릭을 사용하는 예시이다. func findMax(array: [T]) -> T? { guard !.. 2023. 5. 3.
프로퍼티 래퍼(Property Wrapper) Swift에서 프로퍼티 래퍼(Property Wrapper)는 속성을 래핑하여 이를 관리하거나 추가 기능을 제공하는 데 사용된다. 주로 코드의 가독성과 재사용성을 향상시키는 데에 유용하며, 중복된 코드를 줄이고 프로퍼티에 대한 일관된 인터페이스를 제공하는 데 도움이 된다. 그 중 몇 가지를 정리해보려고 한다. 1. @State SwiftUI에서 사용되며, 상태 값의 변화를 감지하고 이에 따라 뷰를 다시 그리는 데 사용된다. struct ContentView: View { @State var count = 0 var body: some View { VStack { Text("Count: \(count)") Button("Increase Count") { count += 1 } } } } count라는 상태.. 2023. 5. 3.
타입 메서드 (Type method) 타입 메서드는 클래스, 구조체, 열거형에 속하는 함수로, 해당 타입 자체에 연관된 동작을 수행한다. 인스턴스 메서드와는 달리 타입메서드는 특정 인스턴스에 종속되지 않으며, 인스턴스를 생성하지 않고도 호출할 수 있다. 타입메서드는 주로 다음과 같은 상황에서 사용된다. 인스턴스를 생성하지 않고도 수행할 수 있는 작업을 처리할 때 클래스에 대한 유틸리티 기능을 제공할 때 인스턴스 생성을 대체하거나 관리하는 팩토리 메서드를 구현할 때 1. 인스턴스를 생성하지 않고도 수행할 수 있는 작업을 처리할 때: 타입 메서드는 타입에 속하기 때문에 인스턴스 생성 없이 호출할 수 있다. 따라서 인스턴스 변수나 메서드에 의존하지 않는 작업을 수행할 때 유용하다. struct EmailValidator { static func .. 2023. 5. 1.
SwiftUI에서 UIImagePickerController 사용 카메라로 찍거나, 앨범에서 고른 사진을 변수에 저장하는 기능을 구현하려고 한다. UIKit을 같이 사용해서 구현했다. import SwiftUI import UIKit struct ContentView: View { /// 이미지 피커를 보여줄지 여부를 결정하는 State @State private var showingImagePicker = false /// 선택한 이미지를 저장하는 State @State private var inputImage: UIImage? var body: some View { VStack { if let inputImage = inputImage { // 선택한 이미지가 있으면 화면에 표시 Image(uiImage: inputImage) .resizable() .scaledT.. 2023. 5. 1.