컨커런시 문법 정리
·
iOS/Swift Concurrency
✊프로퍼티계산 프로퍼티에서 async는 get에서 만 사용 가능하다.☝️프로토콜비동기 속성은 get only만 가능하다.✌️함수비동기 함수는  async throw -> return Type 순이다.func asyncFun() async throws -> Int { try await Task.sleep(nanoseconds: 1000) return 1}생성자 역시 함수이기 때문에 비동기가 가능하다. 👍 왜 set에 비동기 적용이 안될까?개인적인 생각으로는 값을 세팅할 때 비동기적으로 동작하면그 값을 사용할 때 어떤 상태인지 신뢰성을 보장할 수 없어 set을 하지 못하게 막는 것 같다.😀 소감 및 마무리정리할만한 내용이 다시 생기면 추가하겠다.
@TaskLocal
·
iOS/Swift Concurrency
👋 들어가기 전정말 오랜만에 컨커린시 관련 포스팅이다.최근에 현생이 정말 정신이 없다.주말은 쉬는 날인데 현재는 평일에 없는 학습시간을 위한 날인 것 같다.정말 침대에 눕고 싶다. ㅋㅋㅋ  잡소리는 그만하고 오늘의 주제로 들어가기 전 간단한 사전 지식을 알아보자.✊@property wrapper프로퍼티 래퍼 정말 무의식적으로 많이 썼고 특히, SwiftUI를 사용할 때많이 쓴 것 같다. 한번 구조를 간단하게 정리해보자.전체적인 내용인 출처 첫번 째 링크를 참고했다.목적프로퍼티 래퍼의 목적은 반복적인 로직을 담당하는 하나의 타입처럼 선언하여프로퍼티의 타입처럼 쉽게 사용할 수 있게 만들어주는 것이다.구조property wrapper는 크게 2가지 프로퍼티를 제공한다.wrappedValue wrappedVa..
.xctemplate
·
iOS
👋 들어가기 전항상 RIBs의 개념에서 필요한 것만 갔다 썼기때문에 쓰지 않은 것에 대해서는그 때 그 때 알아봤다. 그런데 공식문서에서 눈이 가는 한가지 사진이 있다.항상 Xcode에서 제공해주는 내용만 있을 줄 알았는데 저기를 건드릴 수가 있네 ?? 더 늦으면 인생 절반 손해볼뻔 했다.. 당장 알아보자.✊무엇일까?제목을 보면 대충 유추할 수 있다.  바로 파일을 만드는 템플릿이다.☝️그래서 어디에 있는데?~/Library/Developer/Xcode 일단 여기가 시작 포인트! 이후 Templates 폴더를 만들어준다.mkdir -p ~/Library/Developer/Xcode/Templates✌️.xctemplate 디렉토리 만들기일단 RIBS를 만드는 느낌으로 가보자.RIBs.xctemplate으..
Mirror
·
Programing Langauge/swift
✊Mirror란한번도 쓰지 않았지만 항상 프로젝트를 하면 팀원이 쓰던 녀석.. 나도 한번 써보자.. 공식문서를 살펴보자.A representation of the substructure and display style of an instance of any type. 모든 타입의 인스턴스의 하위 구조 및 display stlye를 나타내는 리플렉션 API라고 한다. 모든 타입이라고하는데 진짜 그런 지 살펴보자. Mirror.DisplayStyle을 보면 swift의 거의 모든 타입을 커버하고 있다. ☝️주요 기능주요 기능은 다음과 같다.프로퍼티와 값 탐색타입 확인디버깅 및 로깅타입 정보 추출1️⃣ 프로퍼티와 값 탐색chidren을 통해 인스턴스의 모든 프로퍼티와 값을 탐색할 수 있다.struct Pers..
@inlinable
·
Programing Langauge/swift
👋 들어가기 전이번시간은 @inlinable이다. 생각보다 조금 어려운 개념이 있으니 차근차근 살펴보자.✊없다면 ?우리는 보통 메서드를 호출할 때 스택에 현재 상태를 보내고 상태를 저장하고다시 돌아오는 등 다양한 오버헤드가 존재한다.☝️@inlinable역할말 그대로 위에서 설명한 오버헤드를 줄이기위해 호출하는 쪽에메서드 내용 전체를 삽입한다.사용 영역함수메서드계산 프로퍼티subscript생성자장점오버헤드를 낮춰 컴파일러 최적화 가능모듈 경계를 넘어 사용 가능단점구현 내용이 공개됨코드 크기가 증가재귀 함수에서는 오히려 비효율적internal, public만 사용 가능✌️@usableFromInline전체적인 느낌은 위에 @inlineable과 동일하다 차이점만 간단하게 명시한다.동일한 모듈 내에 있는 ..
@frozen
·
Programing Langauge/swift
👋 들어가기 전이제는 더 이상 미룰  없다...swift에 사용되는 attribute를 슬슬 공부할 때가 온 것 같다. 여러가지 옵션과 최적화를 위해 사용하는 attribute를 frozen을 시작으로 차근 차근 알아보자.✊@frozen이 없을 때frozen을 설명하는 가장 대표적인 키워드는 enum이다. 왜냐하면 변화에 굉장히 민감히 반응한다. 다음과 같이 enum이 있을 때enum FontSize { case light, regular, medium} switch를 열어 모두 구현해도 다음과 같은 에러가 발생할 때가 있다.⚠️ Switch must be exhaustive .... 발생하는 원인은 추후 추가되거나 수정될 경우를 대비하라는 경고이다. 이 때 기본적으로 우리가 알고 있는 선택지는 `d..