일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- map
- 리펙터링
- Human interface guide
- 리펙토링
- Refactoring
- Observable
- rxswift
- ios
- uiscrollview
- RxCocoa
- uitableview
- SWIFT
- Clean Code
- 스위프트
- UITextView
- UICollectionView
- MVVM
- clean architecture
- swift documentation
- 클린 코드
- 리팩토링
- ribs
- collectionview
- Protocol
- swiftUI
- HIG
- Xcode
- tableView
- 애니메이션
- combine
- Today
- Total
목록최적화 (4)
김종권의 iOS 앱 개발 알아가기
@inlinable 키워드 함수를 호출할 때, 호출하는 오버헤드를 줄이기 위해서 호출하는것이 아닌 이 키워드가 사용된 곳에 함수의 구현부를 그대로 복사해와서 오버헤드를 줄이는 기법 ex) 애플의 AttributedString 구현부에서 @inlinable 사용 예시 @available(macOS 10.10, iOS 8.0, watchOS 2.0, tvOS 9.0, *) extension UnsafeMutableBufferPointer : ContiguousBytes where Element == UInt8 { @inlinable public func withUnsafeBytes(_ body: (UnsafeRawBufferPointer) throws -> R) rethrows -> R { return tr..
목차) SwiftUI의 기본 - 목차 링크 EmptyView 이름 그대로 아무것도 가지고 있지 않은 뷰 EmptyView()에 frame, foregroundColor 옵션을 주어도 아무런 표시가 남지 않음 struct ContentView: View { var body: some View { VStack { Text("Text1") EmptyView() .frame(height: 20) .foregroundColor(.blue) Text("Text2") Spacer() .frame(height: 20) Text("Text3") } } } EmptyView의 사용처 아무런 뷰를 사용하고 싶지 않을때 선언 Toggle에 label이라는 파라미터에 EmptyView()를 넣어서 label을 사용하지 않는다는..
final class vs class final class A { ... } class B { ... } class A와 class B의 차이점 A는 서브클래싱이 불가능 A는 성능적으로 더욱 높은 장점 -> 성능이 좋은 이유? 성능이 좋은 이유 - static dispatch 사용 (아래에서 이어서 개념 설명) Static Dispatch (Direct Call) 변수를 타입에 맞춰서 메소드와 프로퍼티를 참조 참조될 요소를 컴파일 타임에 결정 상속 가능성이 없다는 keyword를 코드에 표출하면 컴파일러는 Static Dispatch를 사용 Dynamic Dispatch (Indirect Call) override, subclass와 같은 변수의 실제 타입의 맞춰서 메소드와 프로퍼티를 호출 대표적으로 객..
Rugby란? Rugby 프레임워크 - 캐싱 툴 Pods Targets에 존재하는 불필요한 Indexing 최적화 (캐싱) Cocoapods에 rebuild 시간을 줄여주는 효과 Rugby 원리 모든 pods에 관한 dependeny들을 캐싱하고, 그 dependency가 있는 Pods 프로젝트로 부터 targets들을 삭제 pods이 변경될때만 rebuild되게끔 설정 불필요한 source를 삭제하여 project 사이즈 감소 직접 Rugby 실행 결과 프로젝트 사이즈 93% 감소 인덱싱 파일 개수 99% 감소 Targets 개수 93% 감소 Rugby 사용 사전 준비 mint 패키지 관리 도구 설치 및 Mintfile 생성 Mintfile에 Rugby 설치를 위해 아래 코드 기입 wotjd/rugby..