🌙 IOS 스터디

    [iOS] 스레드와 DispatchQueue

    [iOS] 스레드와 DispatchQueue

    애플에서 제공하는 스레딩처리 API GCD(Grand Central Dispatch)에 대해서 알아보겠습니다. GCD는 C기반의 저수준 API입니다. DispatchQueue GCD를 사용하기 전에 먼저 알아야 할 클래스가 있습니다. DispatchQueue 클래스 인데요. 실제로 해야할 Task를 담아두면 선택된 스레드에서 실행을 해주는 역할을 합니다. DispatchQueue는 2가지로 종류로 나눌수 있습니다. Serial Dispatch Queue와 Concurrent Dispatch Queue입니다. • Serial Dispatch Queue Serial Queue는 등록된 작업을 한번에 하나씩 차례대로 처리 합니다. 처리중인 작업이 완료되면 다음 작업을 처리합니다. • Concurrent Dis..

    [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)..

    [iOS] Firebase 파이어베이스

    [iOS] Firebase 파이어베이스

    Firebase 파이어베이스 파이어 베이스 구글에서 제공함. 서버 자체를 서비스로 제공함. 서버를 구축하지 않아도 데이터를 저장할 수 있게 한다. 파이어베이스를 이용하면 앱을 뚝딱 만들수 있다. firebase.google.com/docs/database/ios/start?hl=ko iOS에서 설치 및 설정 | Firebase 실시간 데이터베이스 Firebase 실시간 데이터베이스는 클라우드 호스팅 데이터베이스입니다. 데이터는 JSON으로 저장되며 연결된 모든 클라이언트에 실시간으로 동기화됩니다. Android, iOS, 자바스크립트 SDK로 크로스 플 firebase.google.com Firebase 기능 파이어 베이스 기능: 데이터 저장, 실시간 데이터 동기화, 사용자 인증, 데이터 분석 , A/B..

    [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..

    [iOS] URLSession Alamofire

    [iOS] URLSession Alamofire

    Alamofire는 HTTP 네트워킹을 하는데 자주 사용하게 되는 코드나 함수를 더 쉽게 사용할 수 있도록 모아놓은 라이브러리 Alamore란 iOS, macOS를 위한 Swift 기반의 HTTP 네트워킹 라이브러리 Alamofire는 URLSession 기반이며 URLSession은 네트워킹 호출에서 모호한 부분이 많은데 Alamofire를 사용한다면 데이터를 접근하기 위한 노력을 줄일 수 있으며 코드를 더 깔끔하고 가독성 있게 쓰는 것이 가능해짐 URLSession iOS에서 기본적으로 제공하고 있는 HTTP통신 방법은 여러가지가 있지만 URLSession을 이용한 방법이 대표적. URLSession은 URLSessionConfiguration을 이용하여 생성을 하게 된다. URLSession 여러개..

    [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..

    [ios] 비동기 (Async) vs 동기 (Sync) 와 직렬 vs 동시처리

    [ios] 비동기 (Async) vs 동기 (Sync) 와 직렬 vs 동시처리

    다른 하나의 스레드로만 보내는 것이 직렬처리 여러 개의 스레드로 분산 처리 하는 것이 동시 개념 순서가 중요할 때, 주로 직렬 처리를 사용한다. 완전히 다른말이다. 비동기 라는 말은 작업이 보내는 쓰레드에 관련된 말이다. 메인 스레드에서 다른 스레드로 보낸 작업을 기다릴지 말지에 관한 내용이 동기 , 비동기에 관한 내용이고, 메인스레드에서 다른 스레드로 작업을 보낼 때, 스레드가 한개냐 여러개냐?를 뜻하는것이 직렬 동시처리 이다.