일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- clean architecture
- collectionview
- UICollectionView
- ios
- uitableview
- swiftUI
- Clean Code
- Human interface guide
- UITextView
- map
- 애니메이션
- 리팩토링
- ribs
- Xcode
- 리펙토링
- Observable
- 리펙터링
- Refactoring
- tableView
- rxswift
- combine
- RxCocoa
- 스위프트
- Protocol
- MVVM
- HIG
- 클린 코드
- SWIFT
- uiscrollview
- swift documentation
- Today
- Total
목록Swift5.9 (5)
김종권의 iOS 앱 개발 알아가기
consume 개념swift5.9+"consume" 의미 그대로 lifetime을 중지한다는 의미a라는 프로퍼티를 consume 시키면사용하지 못함 (컴파일 에러 발생)var a = [1,2,3]var b = consume aprint(a) // 'a' used after consume프로퍼티를 copy하거나 write할때 최적화하기 위해 consume이 탄생일반적으로 CoW라고 명칭데이터를 복사하는 대신에 필요한 시점에서만 복사를 하기 때문에 메모리를 효율적으로 사용주로 대용량 데이터나 공유 자원을 다룰 때 유용ex) CoW 개념var b = a를 시도할때, b는 a의 데이터를 참조하고 있다가, 만약 b의 수정사항이 될땐 (b = 1), b가 자체 복사본을 만들어서 1의 값으로 변경하는 것메모리를 효..
조건문 리펙터링 Xcode15 이상, Swift5.9부터 조건문들을 모두 하나의 표현식으로 간주할 수 있으므로 더욱 간결하게 표현이 가능 if, else 리펙터링 swift5.9 미만 버전에서는 if, else 분기문에 따라 값이 달라질 때 바로 위에 UIColor라는 타입만 명시하는 프로퍼티를 선언 let count = Int.random(in: 0...100) let color: UIColor if count % 2 == 0 { color = .blue } else { color = .red } 또는 closure를 사용하여 반환 let newColor = { if count % 2 == 0 { return UIColor.blue } else { return .red } }() 조건문을 사용할 때 c..
조건문 초기화 기존 방식 프로퍼티를 하나 선언해 놓고 조건문에 따라 값을 대입하는 방법 func normalInit(a: Int) { let string: String if a.isMultiple(of: 2) { string = "even" } else { string = "odd" } print(string) } Swift5.9+ 에서의 조건문 Swift의 발전 방향을 보면, 더욱 간결하게 표현하는게 목적 Swift5.9에서는 클로저와 조건문을 하나의 표현식으로 사용 가능하므로 타입 명시도 필요 없고, result builder 클로저로 인식하므로 return 키워드 생략도 가능 func newInit1(a: Int) { // String 타입 명시 안해도됨 // result builder 클로저이므로..
Move-only Types 개념 효율적으로 값을 인자에 넘겨서 메모리 관리 및 성능 상의 최적화를 하는 방법 (Swift5.9에서 이와 연관된 consume 연산자 탄생) 값을 복사하거나 참조를 넘기는 형태가 아닌, 값의 소유권을 이전한다고 표현 기존에는 특정 과업을 위해서 값을 업데이트 하고 사용한 후 초기화 해주는데, 이 방법은 메모리 관리상 비효율적인 방법 보통 3가지 방법이 존재 1) 배열에 직접 추가 var x = [Int]() x.append(5) x.use() x = [] 2) 함수의 인수에 값을 넘겨서 새로운 값을 업데이트하고난 후 반환된 값으로 다시 변경 x = appendFive(x) x.use() x = [] 3) 함수에 reference를 넘겨서 inout 인수 업데이트 처리 //..
(1). 스위프트의 새로운 기능 - (조건문이 표현식으로 변경, type check 속도 향상, repeat each 제네릭스) (2). 스위프트의 새로운 기능 - (Swift Macro 개념, Swift Macro 동작 원리) (3). 스위프트의 새로운 기능 - 애플이 Foundation을 공개한 이유, ~Copyable, C++ interop, Actor and concurrency, unownedSerialExcutor 스위프트의 새로운 기능 swift-evelution에서 애플한테 제안을 하는데, 이 제안을 애플에서 검토 후 받아들이는데 이번에 추가된 새로운 기능이 다수 존재 애플에서는 따로 커뮤니티를 만들어서 개발에 관한 부분을 활성화하기 위해서 Swift.org에서도 다양한 활동 수행 if/..