일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Human interface guide
- Xcode
- clean architecture
- Protocol
- Observable
- map
- 리팩토링
- MVVM
- swiftUI
- 리펙터링
- Refactoring
- 리펙토링
- rxswift
- ribs
- tableView
- RxCocoa
- combine
- 애니메이션
- uitableview
- UICollectionView
- uiscrollview
- HIG
- SWIFT
- Clean Code
- UITextView
- collectionview
- 스위프트
- ios
- 클린 코드
- swift documentation
- Today
- Total
목록ios (1095)
김종권의 iOS 앱 개발 알아가기
* foundation의 AttributedString.swift Github 주소 참고 AttributedString.swift 구현부 * NSAttributedString 개념은 이전 포스팅 글 참고 AttributedString은 Sendable을 따르고 있으므로 동시성 처리에 안전 내부적으로 _guts를 가지고 있는데 guts는 core라는 의미 // AttributedString.swift @dynamicMemberLookup @available(macOS 12, iOS 15, tvOS 15, watchOS 8, *) public struct AttributedString : Sendable { internal var _guts: Guts internal init(_ guts: Guts) { _..

사전지식) move-only types move-only types에 관한 개념은 이전 포스팅 글인 "consume" 연산자 참고 move-only types는 소유권을 이전하여, copy by value, copy by reference가 아닌 방법으로 성능을 최적화하는것 __consuming 키워드 애플이 구현한 core 레포 중 Sequence를 보면 중간에 __consuming 키워드가 등장하는데, 이는 이 함수의 성능을 최적화하기위해 존재 __consuming은 단어 그대로 해당 키워드가 붙으면 이 함수를 호출하는 인스턴스를 소비한다는 의미이며, 위처럼 _copyToContiguousArray()를 호출하면 해당 인스턴스의 소유권은 반환되는 새로운 인스턴스에 이전된다는 의미 (성능 최적화를 위해..
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 인수 업데이트 처리 //..

NSAttributedString과 NSMutableAttriubtedString 차이점 AttributedString 이란? AttributedString은 내부적으로 guts라는 인스턴스가 String 타입을 받아서 String에 속성을 부여하여 사용할 수 있도록 구현해 놓은 것 즉, String을 wrapping하여 단순 text에 색깔, 폰트와 같은 속성을 입힐 수 있도록 한 것 (구체적인 구현부는 swift-foundation 코드 참고) 초기화하고 값을 바꿀수 있다면 NSMutableAttributedString, 초기화 이후 값을 변경할 수 없다면 NSAttributedString 사용 NSAttributedString 예제) let attributes: [NSAttributedString...
1. @resultBuilder 이해하기 - 만들어진 이유 2. @resultBuilder 이해하기 - 응용하여 깔끔한 코드 만들기 3. @resultBuilder 이해하기 - 선언형 UI 만들기 (Declarative UI, SwiftUI 같은 선언형 뷰 구현 방법) @resultBuiler 개념 복습 이름이 result builder인 이유? 결과를 만들어주는 역할을 담당 결과를 만들어준다는 의미는 lazy var로 선언것처럼 코드 블록 내에서 여러 개의 값을 취합하여 return 키워드 없이 하나의 결과로 반환하는 것을 도와주는 기능 목적: 빌딩을 간소화하는 것 선언형 UI란? *선언적: 어떻게에 관한 내용을 감추고 무엇을 하는것에 초첨을 두는 것 높은 가독성 뷰를 구현할 때 빠른 속도 SwiftU..
1. @resultBuilder 이해하기 - 만들어진 이유 2. @resultBuilder 이해하기 - 응용하여 깔끔한 코드 만들기 3. @resultBuilder 이해하기 - 선언형 UI 만들기 (Declarative UI) @resultBuiler 개념 복습 이름이 result builder인 이유? 결과를 만들어주는 역할을 담당 결과를 만들어준다는 의미는 lazy var로 선언것처럼 코드 블록 내에서 여러 개의 값을 취합하여 return 키워드 없이 하나의 결과로 반환하는 것을 도와주는 기능 목적: 빌딩을 간소화하는 것 SwiftUI에서 @resultBuilder 사용 result buildr의 기능: 여러 개의 값을 취합하여 return 키워드 없이 하나의 결과로 반환해주는 것 따로 functio..
1. @resultBuilder 이해하기 - 만들어진 이유 2. @resultBuilder 이해하기 - 응용하여 깔끔한 코드 만들기 3. @resultBuilder 이해하기 - 선언형 UI 만들기 (Declarative UI) @resultBuilder 개념 Swift 5.4에 도입 이름이 result builder인 이유? ResultBuilder는 코드 블록 내에서 여러 개의 값을 취합하여 return 키워드 없이 하나의 결과로 반환하는 것을 도와주는 기능이기 때문 return 부분의 옵션을 설정하여 return 키워드를 없이 사용할수 있거나, 콤마를 사용하지 않고 배열을 만들 수 있는 등의 기능 사용 가능 목적: 빌딩을 간소화하는 것 ex) 여러 표현식을 단일 값으로 결합하여 결과를 빌드하는 경우 ..

화면전환 기초 present: 현재 화면과 다른 새로운 과업을 수행할 때 push: 현재 화면과 연관된 과업을 수행할 때 화면전환이 되는 케이스와 안되는 케이스 같은 화면에서 present 여러번은 불가능 crash 발생은 하지 않음 crash가 발생하는 케이스는 자기 자신 화면을 띄우는 경우나 같은 화면을 띄우는 경우에 발생 @objc private func tap() { // A화면에서 B화면을 present > A화면에서 C화면을 present (x) present(vc1, animated: true) DispatchQueue.main.asyncAfter(deadline: .now() + 3, execute: { self.present(self.vc2, animated: true) }) } (같은 ..