일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- MVVM
- 스위프트
- 리펙터링
- SWIFT
- Refactoring
- Clean Code
- Protocol
- ribs
- UITextView
- swift documentation
- rxswift
- Human interface guide
- uiscrollview
- Observable
- UICollectionView
- Xcode
- 애니메이션
- tableView
- 클린 코드
- HIG
- 리펙토링
- ios
- collectionview
- RxCocoa
- uitableview
- swiftUI
- clean architecture
- combine
- Today
- Total
목록Protocol (15)
김종권의 iOS 앱 개발 알아가기
dataSource 관리 방법 dataSource를 관리하다보면 보통 UI에서 사용되는 데이터와 비즈니스로직이 들어갈 ViewModel에서 사용되는 dataSource 두 벌을 관리하는 경우가 있는데, 상태 관리를 한곳에서 사용하지 않으면 데이터 정합성 문제가 발생 protocol을 사용하여 dataSource를 관리하면 해결 viewController에서 dataSource에 접근할 때는 protocol에 의존하게끔하면 해결 MVVM 구조 먼저 준비 MVVM구조를 쉽게 구현하기 위해 예제에 사용할 라이브러리 pod 'RxSwift' pod 'RxCocoa' View ViewModel 구현체에 의존하지 않도록, ViewModelable 프로토콜을 생성하고 이것에 의존하도록 구현 UI에 관한 input을 ..
existential any 개념 protocol에서 generic을 지정해줄 때 any 키워드를 사용하여 편리하게 generic 처리를 할 수 있는 것 protocol ABC { associatedtype MyType } // 기존 - 제네릭 선언해야함 func printValue(type: T) { print(type) } // any 키워드 사용 - 제네릭을 따로 선언해주지 않아도 됨 func printValue2(type: any ABC) { print(type) } protocol 타입 다루기 DIP원칙과 테스트에 용이한 구성을 위해서 데이터 모델을 protocol로 참조되게 설정 ex) 모델이 MyItem이고, 이 모델은 MyItemable 프로토콜을 따르게 한 후 사용하는쪽에서는 MyItem..
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와 같은 변수의 실제 타입의 맞춰서 메소드와 프로퍼티를 호출 대표적으로 객..
0. 코드로 알아보는 SOLID - 클래스 다이어그램 필수 표현 1. 코드로 알아보는 SOLID - SRP(Single Responsibility Principle) 단일 책임 원칙 2. 코드로 알아보는 SOLID - OCP(Open Close Principle) 개방 폐쇄 원칙 3. 코드로 알아보는 SOLID - LSP(Liskov Substitution Principle) 리스코프 치환 원칙 4. 코드로 알아보는 SOLID - ISP(Interface Segregation Principle) 인터페이스 분리 원칙 5. 코드로 알아보는 SOLID - DIP(Dependency Inversion Principle, testable) 의존성 역전 원칙 6. 코드로 알아보는 SOLID - Coordinato..
Protocol (프로토콜) protocol이란 특정 작업이나 기능에 맞게 method, property 및 기타 요구 사항의 청사진을 정의 protocol은 해당 요구 사항의 실제 구현을 제공하기 위해 class, struct, enum에 의해 'conform'될 수 있는 것 protocol을 채택하는 것을 swift에서 'conform' 명명 protocol에서 property 정의 let은 불가, var만 가능 { get set }이나 { get } 속성 제공 protocol SomeProtocol { var mustBeSettable: Int { get set } var doesNotNeedToBeSettable: Int { get } } protocol에서 static 정의 protocol An..
Identifiable 프로토콜 iOS 13+ (swift5.1) 단순히 id 프로퍼티를 가지고 있는 형태 어떤 struct, class를 정의할 때 ID값이 필요한 경우 해당 protocol을 conform @available(macOS 10.15, iOS 13, tvOS 13, watchOS 6, *) public protocol Identifiable { /// A type representing the stable identity of the entity associated with /// an instance. associatedtype ID : Hashable /// The stable identity of the entity associated with this instance. var id..
1. Delegate Pattern : 프로토콜을 쓰는 대표적인 이유 - 각종 이벤트를 효율적으로 관리하기 위해 대리자를 지정하여 이벤트 처리를 위임하고, 이벤트 발생시 위임된 대리자가 콜백 메소드를 호출하는 설계 패턴 * protocol : 명세 - protocol입장에서 구현 하는 객체가 어떤 객체인지 상관없고, "날 구현하여 특정 일을 시행하라"라는 의미 - 클래스는 단일 상속이기때문에 protocol이 나온 것 2. 프로토콜 생성 1) 프로토콜 프로퍼티 : 연산 프로퍼티만 가능하며 get, set유무만 표현 2) 프로토콜 메소드 : 구현부만 빼고 그대로 작성 1 2 3 4 5 6 7 8 9 10 11 // 프로토콜 프로퍼티 protocol myProtocol { var a: String {get ..