일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
- Subject
- concurrency
- 생명주기
- 백준
- 안드로이드
- 구조체
- ios
- 연산자
- rx
- 알고리즘
- 프래그먼트
- 차이
- observable
- 리스트뷰
- 풀이
- 클로저
- RxSwift
- 스위프트
- Swift
- 이스케이핑
- async
- Self
- 해시
- 옵셔널
- 자바
- noncopyable
- 프로그래머스
- View
- 프로퍼티
- weak
- Today
- Total
목록Swift (65)
study record
Combine을 어떻게 사용할 수 있는지 기본 예제를 정리해보면서 익혀보자! 기본 자료구조 활용 예제(with .sink) let publisher = [1, 2, 3, 4].publisher publisher .sink { (value) in print(value) } Sequence.publisher 를 활용하여 배열에서 .publisher 프로퍼티를 활용해 간단하게 배열의 publisher를 구성할 수 있다. .sink를 통해 이를 구독하여 값들을 받아 볼 수 있다. .assign class Dumper { var value = 0 { didSet { print("value was updated to \(value)") } } } let dumper = Dumper() let publisher = ..
iOS의 Combine은 Framework이다.이벤트를 처리하는 operators들을 결합함으로써 비동기 이벤트들을 커스텀하게 다룬다.iOS 13 이상에서 사용이 가능하다. OverviewCombine framework는 값을 처리하기 위한 선언형 Swift API를 제공한다. 이 값들은 많은 비동기 이벤트들을 표현할 수 있다. Combine은 시간에 따라 변화할 수 있는 값들을 내보내기 위해 publishers를 선언하고, publishers로부터 이 값들을 받기 위해 subscribers를 선언한다. - Publisher protocol은 시간에 따라 값을 연속으로 전달할 수 있는 타입을 선언한다. Publishers는 upstream publishers로부터 받은 값들에 행동하는 operators를..
우리가 쓰레드 문제를 생각하게 되면 동기화 문제, 즉 여러 쓰레드에서 같은 데이터에 동시에 접근해서 충돌, 문제가 발생하는 것이 있다. 동일한 데이터에 접근하여 여러 곳에서 값을 변화시키다 보면 동기화 문제가 발생한다. 이를 디버깅하는 것은 어렵다. 이러한 동기화 문제를 피하기 위한 방법 중 하나로 Actor라는 개념이 있다. 다른 방법에는 (let 사용, 값 타입 사용(class를 struct로 변경 등), serial dispatchQueue 사용(매번 반드시 신중히 써야 한다.)) Actor Actor는 shared mutable state에 대한 동기화 메커니즘이다. Actor는 자신만의 상태를 가지며, 이 상태에 접근하는 유일한 방법은 Actor를 거치는 것이다. lock이나 serial dis..

SwiftUI는 최소한의 코드로 Swift의 성능을 사용해 모든 Apple 플랫폼 전반에서 앱을 빌드할 수 있게 한다. SwiftUI는 다음과 같은 특징이 있다. 선언적 구문 SwiftUI는 선언적 구문을 사용하므로 사용자 인터페이스의 기능을 명시하기만 하면 된다. 예를 들어, 텍스트 필드로 구성된 항목의 목록을 작성하고 각 필드의 정렬, 색상을 설명하면 된다. 코드가 간단하고 가독성이 향상되어 시간이 절약되고 유지 관리가 용이하다. import SwiftUI struct AlbumDetail: View { var album: Album var body: some View { List(album.songs) { song in HStack { Image(album.cover) VStack(alignment..