🌙 IOS 스터디/Swift

    [Swift] 카메라 앱 개발

    [Swift] 카메라 앱 개발

    Audiovisual Media 비디오 오디오에 특화된 매우 큰 프레임 워크 ,공구함. 사진이나 비디오에서는 필수적으로 필요함. 목소리를 텍스트로 변환해주기도하고, 오디오를 변환해주기도 함 여러가지 기능! AVCam iOS 카메라 앱을 사용하여 사진과 동영상을 캡쳐하는 방법 . iOS 13버전이상을 사용해야함. 시뮬레이터로 불가능! Media Capture AVCaptureSession : input을 output까지 연결시켜 주는 것 AVCaptureDeviceInput : 애플에서는 카메라나 마이크를 사용자가 쓸 때, 사진첩에 사진을 저장할 때, 권한을 받아야한다고 명시적으로 되어있다. 어떻게? info.plist에 Camera, mic usage description을 추가하면 된다. 카메라나 마이..

    [Swift] 코드를 단축하는 유용한 함수 map, filter, reduce

    [Swift] 코드를 단축하는 유용한 함수 map, filter, reduce

    Map import UIKit // 요약: // Map은 A object 리스트에서 B object 리스트로 변환시 사용 // - B로 변환 실패하면 nil을 넘김 // - 변환 결과에 nil 포함 // CompactMap은 nil을 넘기지 않음 let stringValues = ["hi", "1", "3", "hello"] /// Map vs CompactMap let intValuesWithMap = stringValues.map { string in return Int(string) } intValuesWithMap // [nil, 1, 3, nil] let intValueWithCompactMap = stringValues.compactMap { string in return Int(string)..

    [Swift] 외부 라이브러리 가져다 쓰는 방법 3가지

    [Swift] 외부 라이브러리 가져다 쓰는 방법 3가지

    SPM ( Swift Package Manager ) : 가장 쉬움 Cocoa Pod Carthage

    [Swift] @escaping Closure

    [Swift] @escaping Closure

    시작하기전에 클로져 func add(_ i : Int, _ j : Int, _ handler: (Int) -> Void){ let sum = i + j handler(sum) } add(3,4 {(result : Int) -> Void in print("3 + 4 = \(result)") }) 자세한 이야기 함수의 파라미터로 클로져가 전달될 때 escaping 또는noescaping closure가 사용됩니다. 클로저가 함수로부터 Escape한다는 것은 해당 함수의 인자로 클로저가 전달되지만, 함수가 반환된 후 실행 되는 것을 의미합니다.수의 인자가 함수의 영역을 탈출하여 함수 밖에서 사용할 수 있는 개념은 기존에 우리가 알고 있던 변수의 scope 개념을 무시합니다. 왜냐하면 함수에서 선언된 로컬 변수..

    [Swift] Instance Method 와 Type Method

    [Swift] Instance Method 와 Type Method

    스위프트의 메소드 Swift에서 구조체와 열거형에서 메소드를 정의할수 있다는 사실은, C와 Objective-C와는 가장큰 차이점입니다. Objective-C에서, 클래스는 메소드를 정의할수 있는 유일한 타입입니다. Swift에서는, 클래스, 구조체, 열거형에서 선택할수 있고, 생성한 타입에 대한 메소드 정의를 유연하게 할 수 있습니다. 인스턴스 메소드 - Instance Method 인스턴스 메소드(instance methods)는 특정 클래스, 구조체, 열거형의 인스턴스에서 속해있는 함수. class Counter { var count = 0 func increment() { count += 1 } func increment(by amount: Int) { count += amount } func r..

    [Swift] GCD Dispatch Queue

    [Swift] GCD Dispatch Queue

    Main Queue : 시스템이 생성해주는거 사용 사용자 UI update 관련 인터렉션 처리 async만 사용가능. Global Queue : 시스템이 생성해주는거 사용 QoS (Quality or Service): 글로벌 큐에서 사용될 우선순위를 정해주는 인자 (우선순위가 높은순) 1. userInteractive : 바로쓰는 대화에 작업에 사용 2. userInitiated 3. default 4. utility : 수초~ 수분에 걸리는 사용 (네트워크 파일 등) 5. background : 사용자들과 당장 인터렉션이 필요가 없는 경우 (뉴스, 위치, 영상 다운 등등) Custom Queue : 사용자 직접 생성 직접 큐를 생성해서 쓰는 경우 let concurrentQueue = DispatchQ..

    [Swift] Equatable , Codable 프로토콜

    [Swift] Equatable , Codable 프로토콜

    Equatable struct Todo: Codable, Equatable { let id: Int var isDone: Bool var detail: String var isToday: Bool mutating func update(isDone: Bool, detail: String, isToday: Bool) { // [x] TODO: update 로직 추가 self.isDone = isDone self.detail = detail self.isToday = isToday } // '=='이라는 조건을 정의 해주는 것.Equatable이라는 프로토콜을 넣어주면 우리 맘대로 정의 가능. static func == (lhs: Self, rhs: Self) -> Bool { // [x] TODO: 동등 조..

    [Swift]  mutating 구조체

    [Swift] mutating 구조체

    Mutating 구조제에 선언된 프로퍼티를 변경하기 위해서는 함수앞에 mutating이라는 말을 써주어야한다. 그래야 값을 변경하는지 아닌지 알수 있음 struct Todo: Codable, Equatable { let id: Int var isDone: Bool var detail: String var isToday: Bool mutating func update(isDone: Bool, detail: String, isToday: Bool) { // [x] TODO: update 로직 추가 self.isDone = isDone self.detail = detail self.isToday = isToday } // '=='이라는 조건을 정의 해주는 것.Equatable이라는 프로토콜을 넣어주면 우리 맘..

    [Swift] Computed Property vs Method

    [Swift] Computed Property vs Method

    Property : 호출시 (저장된) 값을 하나 반환 Method : 호출시 어떤 작업을 함 또는 값을 리턴하는 작업도 가능. 자바가 익숙한 나는 값을 리턴할 때 자꾸 method를 찾게 된다. 둘의 차이점은? setter가 필요하면 Computed Property setter가 필요하지 않은데, 계산이나 여러가지 디비, 네트워크 등 복잡한 기능이 들어간다면 Method, 간단하다면 Computed Property

    [Swift] 스위프트 문서 정리 잘된 한국어 번역

    [Swift] 스위프트 문서 정리 잘된 한국어 번역

    jusung.gitbook.io/the-swift-language-guide/ The Swift Language Guide (한국어) jusung.gitbook.io 스위프트 문서 한글 번역본 melod-it.gitbook.io/sagwa/ 애플 개발자 문서 한글 번역 melod-it.gitbook.io 애플 개발자 문서 한글 번역본