async await
·
iOS/Swift Concurrency
async 키워드비동기 함수를 선언할 때 사용한다.비동기는 멈췄다가 다시 재개 될 수 있는 함수콜뱅방식이 아닌 직접 리턴을 할 수 있다.메인 엑터가 아닐 경우 , 항상 백그라운드 스레드에서 실행된다.비동기 함수내에서 다른 비동기 함수를 호출하면 현재 컨텍스에서 실행됨 , 새로운 컨텍스 생성 x  , 취소 전파가 가능문법func 함수명 async throws(에러를 발생시키면) -> 리턴 타입 { ... }await 키워드비동기 함수를 사용할 때 붙혀준다.Task와 같은 비동기 context에서 사용할 수 있다.potential suspension point 지점이된다.suspendnon - blocking 방식suspend이란, 쓰레드 제어권을 운영체제를 넘겨 다른 일을 처리할 수 있도록 하는 행위를 말..
swift concurrency 등장배경
·
iOS/Swift Concurrency
기존의 비동기 방식 및 등장 배경기존의 코드는 탈출 클로저를 사용해서 비동기를 처리했다.조금 극단적이긴하지만 보통 다음과 같은 상횡이다. 여기에는 크게 4가지 문제점이 있다.  1. 중첩된 콜백 첫번째 문제점은 중첩된 콜백형태가 코드 가독성이 top -down approch에 위배된다.코드는 보통 위에서 아래로 읽게 되는데 콜백이 중첩되면 아래에서 위로 올라가는 구조가 발생된다. 2. 에러 핸들링에러가 발생할 때 탈출 메서드에 에러 관련 처리를 해줘야하는데 그 과정이 매우 번거롭다. async , await을 이용해서 위 코드를 리팩할 수 있다. 코드 가독성과 에러 헨들링이 비약적으로 상승되는 효과를 볼 수 있다.  3. thread explosion 기존 GCD에서 Concurrent Queue를 사용..
클로저와 self
·
Programing Langauge/swift
클로저간단하게 클로저를 먼저 정리해보자.함수는 이름이 있는 클로저클로저는 1급 객체이다.클로즈는 참조타입이므로 기본적으로 힙에 할당된다.Closure란 내부 함수와 내부 함수에 영향을 미치는 주변 환경을 모두 포함한 객체이다.클로저 캡처클로저 캡처란 매개변수나 지역변수가 아닌 외부 context를 사용하기 위해 주변 외부의 context를 참조하는 것클로저는 값을 캡처할 때, Value / Reference 타입에 관계 없이 모두 Reference 캡처를 사용한다. 즉 , 참조를 한다는 뜻캡처 리스트 값 타입은 값을 복사해서 캡처 - 외부 요인에 의한 값 변경을 방지!참조 타입은 캡처리스트 내에서 weak, unowned 참조 선언 (강한 참조 해결)클로저와 self @escaping 키워드클로저와 s..
AVFoundation (1) [AVAsset]
·
iOS/Framework
부스트 캠프의 여정이 어느새 마무리 단계인 그룹미션이 어느새 다음 주로 다가왔다.이번주부터 1주일 정도 개인 공부를 할 수 있는 시간이 있어서 나는 평소에 관심있던 스트리밍쪽 기술을 공부해보려고한다.스트리밍 쪽 공부를 하기 위해 가장 기본이 되는 기술이 AVFoundation이라고 많이 추천을 해주셨다.  이번에 한번 깊이 공부해보자. AVFoundation이란?AVFoundation이란 apple 생태계에서 미디어와 관련된 모든 측면을 다룰 수 있는 매우 유연하고 확장 가능한 프레임워크이다.Work with audiovisual assets, control device cameras, process audio, and configure system audio interactions. 역할1. 미디어 재..
swift 기본 타입
·
Programing Langauge/swift
Swift 기본 타입많이 늦은 감이 있지만...  이번 시간에 정리하고 가자. 타입비트범위특징Bool1비트true / false 참과 거짓을 나타내는 논리형 데이터Character가변적 유니코드유니코드 스칼라 값 (최대 21비트)단일 유니코드 문자String가변적 유니코드 문자열 길이에 따라 다름유니코드 문자들의 시퀀스, 길이에 따라 동적으로 크기가 변함Int88비트-128 ~ 1278비트 정수Int1616비트-32,768 ~ 32,76716비트 정수Int3232비트-2,147,483,648 ~ 2,147,483,647-21억 ~ 21억32비트 정수Int6464비트-9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807-922경 3,372조 3,685억 4,775..
[백준] 16916 부분 문자열
·
PS/프로그래머스
문제https://www.acmicpc.net/problem/16916 입력s: String = 문자열pattern: String = S의 부분 문자열인지 확인해야할 pattern1 결과ans: Int = 부분문자열이 맡다면 1 아니면 0해석문자열과 패턴이 최대 100만가까이 되는걸 보니 브루투스 포스 brute-force  방식으로는 해결이 불가능해보인다.이 문제는 문자열에서 특정 패턴을 찾아내는 전형적인 kmp 문제  1) lps 배열을 구한 후 2) kmp 를 진행한다. 코드import Foundationfunc computeLPS(_ pattern: [Character]) -> [Int] { let n = pattern.count var lps: [Int] = [Int](rep..