목록IOS (15)
슈프림 블로그
DispatchQueue(GCD)의 종류 1. main queue : Serial 2. global queue : Concurrent / QoS 설정 3. private queue : 디폴트 Serial (Concurrent로 변경 가능) / QoS 추론 Main Queue DispatchQueue.main - 한개만 존재 => Main Thread에서 동작 - Serial (직렬) - UI 처리를 담당 * 쓰레드 없이 날것의 코드를 실행하는 것은 Main Queue에서 sync로 실행하겠다는 것과 같은 의미이다. * 하지만 DispatchQueue.main.sync는 코드로 사용할 수 없다. (에러) 실행방법 DispatchQueue.main.sync { ... } // 사용 불가! --ERROR-- ..
동기(Sync) vs 비동기(Async) 대기열을 어떤 방식으로 처리할지 정하는 것이다. 비동기 메인스레드에서 다른 스레드에게 작업을 시작 시키고 작업이 끝날때까지 기다리지 않는다. 메인스레드가 바로 다른 작업을 시작할 수 있게 된다. DispatchQueue.global().async {...} 동기 메인스레드에서 다른 스레드에게 작업을 시키고, 끝날때까지 기다린다. 해당 작업이 끝날 때 까지 메인 스레드는 다른 작업 하지 않고 Block상태를 유지한다. 영상 싱크가 맞는다?? 영상 로딩이 될 때 까지 음성도 기다렸다가 시점이 맞아야 비로소 재생됨을 떠올리면 좋을 것이다. DispatchQueue.global().sync {...} + 다른 스레드로 작업을 보내는 개념이긴 하지만, 작업 끝날 때 까지 ..
쓰레드 Thread 동시성 프로그래밍에 대해 공부하기 전에 쓰레드(Thread)에 대해 먼저 알아야 한다. 쓰레드는 간단하게 말하면 "프로그램이 처리해야 할 작업을 하는 녀석"들을 말한다. 쓰레드가 여러개가 있으면 여러 작업을 동시에 처리할 수 있게 된다. 따라서 시간이 오래 걸리는 작업이 여러개 있을 때, 쓰레드 하나에 모든 일을 맡기는 것 보다는 여러개의 쓰레드에 분산 처리를 시키는 것이 효율적이다. 그렇다면 작업을 어떻게 다른 쓰레드로 분산시켜 동시에 실행되도록 할까? 이것이 동시성 프로그래밍의 목적이다. iOS의 동시성 프로그래밍 iOS의 경우, 프로그래머가 직접 스레드를 관리하지 않는다. 작업을 "대기행렬"에 넣어주기만 하면, 적절한 스레드로 분산을 시키는 것은 OS가 알아서 처리해준다! 이렇게..
만들고 싶은 앱이 생겨서 배경지식을 공부해보려고 한다. 기본적으로 필요한 지식은 백그라운드 음악 재생과 얼굴 인식이다. 얼굴 인식은 영상에 등장하는 사람의 눈, 코, 입의 위치를 감지할 수 있는 수준으로 개발하고자 한다. dlib이라는 C++ 머신러닝 모듈을 사용해보려고 한다. iOS Development Tutorial: How to Build a Music Player App (Audio & Background Play) www.youtube.com/watch?v=XR_rTofgcxU Getting started with dlib on iOS medium.com/@prabhu_irl/getting-started-with-dlib-on-ios-5e66d77380d Getting started with ..
↓↓↓ XCode에서 Realm 사용할 준비 하고 오기!! ↓↓↓ 2020/09/19 - [iOS_Swift] - [iOS/Swift] XCode 프로젝트에서 Realm 사용하기 1 [iOS/Swift] XCode 프로젝트에서 Realm 사용하기 1 Realm이란? Realm 발음은 주변분들 보면 [렘]이라고 발음하시는 분들도 있고 [렐름]이라고 발음하시는 분들도 있었다. 나는 [렘]으로 발음하는데, 뭐가 정확한건지는 잘 모르겠다...! 일단 Realm은 모�� tngusmiso.tistory.com 모델 만들기 먼저 데이터로 사용될 모델을 만들어주자. 나는 간단하게 프로젝트 폴더에 Model.swift라는 이름의 파일을 만들어 주었다. 이 공간에 클래스를 선언하여 모델을 만들려고 한다. RealmSwi..
Realm이란? Realm 발음은 주변분들 보면 [렘]이라고 발음하시는 분들도 있고 [렐름]이라고 발음하시는 분들도 있었다. 나는 [렘]으로 발음하는데, 뭐가 정확한건지는 잘 모르겠다...! 일단 Realm은 모바일용 데이터베이스 관리 시스템(오픈소스)이다. Realm은 관계 데이터베이스가 아니라서 테이블을 사용하지 않는다. 따라서 쿼리를 사용하지도 않는다! 그냥 객체 자체가 데이터고, 객체 형태로 바로 데이터베이스에 저장하는 방식이라고 한다. 신기해,,, 장점은 객체 자체를 저장하고 꺼내서 사용하므로, 데이터베이스에서 가져온 데이터를 가공할 필요 없이 바로 사용이 가능하다. 따라서 ORM을 통한 테이블 객체 간 변환 과정이 생략되므로 훨씬 빠르다는 것이다. 단점은 NoSQL 방식이므로 쿼리를 통해 호출..
Project Name Xcode 상에서 작업할 공간의 프로젝트 이름입니다. 영어로 작성하는 것을 권장하고 있습니다. Display Name 빌드 된 앱에서 보여질 이름입니다. 앱 이름이기 때문에, 이 부분은 한글로 작성해도 무방합니다! Development Target 해당 iOS 버전 이상인 기기만 이 앱을 설치할 수 있습니다. 예를들어 Target이 iOS 11.0 버전이라면, iOS 11.0 이상만 이 앱을 설치할 수 있는 것입니다. Minimum Version이라고 생각하면 됩니다. Development Target을 정하는 기준은? iOS Version Target을 정하기 위해 Apple Developer 사이트에서 점유율을 확인할 수 있습니다. https://developer.apple.c..