[1] MVC (Model-View-Controller) * 장점 1) 역할분담을 고려한 구조를 빠르게 구현 할 수 있음 * 단점 1) MVC는 MVC (Massive View Controller) ?!!? Model에 넣기도 애매하고 View에도 넣기 애매한 코드들은 모두 Controller에 들어가게 되어서 Controller가 비대해진다 그래서 MVC를 Massive View Controller라고 풍자하기도 한다...! ex) 날짜 데이터를 각 국가별 양식으로 포맷하는 코드. 비즈니스 로직이나 데이터라고 보기도 어렵고 UI라고 보기도 어렵다 결국 이와같은 Formatting 담당코드들은 Controller에 들어가게 된다 2) 애플의 MVC 패턴에서는 View와 Controller가 너무 친함 애..
이렇게 준비를 한다..! 1. 뷰컨에 TableView를 올려주고 2. Tableview에 TableViewCell을 올려주고 3. TableViewCell의 identifier를 NameCell 로 설정해준다 그리고 RxTableViewController에 RxSwift와 RxCocoa를 import 하고 bind할 준비를 해준다 >> 총 4가지 방법으로 tableView를 그릴 수 있다 https://github.com/RxSwiftCommunity/RxDataSources 를 보면 다음과 같이 나와있다 Bind the data to the tableView/collectionView using one of: rx.items(dataSource:protocol)rx.items(cellIdentifie..
[1] Delegate Proxy 개념Rxswift의 DelegateProxy.swift와 DelegateProxyType.swift 이 두 파일은 delegate를 사용하는 프레임워크랑 Rxswift의 다리역할을 해주는 파일이다 (즉 delegate를 사용하는 친구들을 Rx에서도 편하게 활용할 수 있도록 연결해준다) DelegateProxy Object는 fake delegate object를 만드는데, 이 fake delegate object은 수신된 모든 데이터를 전용 observables로 프록시한다(표현한다?!) ==> 설명은 너무 어렵다 모호하다.. 예제로 이해하자 delegate를 가지고 있는 객체 중, MKMapView 를 살펴본다 open class MKMapView : UIView, N..
@markdown 티스토리에 마크다운을 적용해보았으나 예쁘지 않다 😧 코드 색깔이 살지 않는다 😔 예쁘게 보려면 깃헙으로~!~!~!~!~!~!~! [요기요기](https://github.com/eunjin3786/iOSStudy/blob/master/프로토콜.md ) 눌러보아요 # Protocol ## 1. 프로토콜 이란 프로토콜은 특정 역할을 하기 위한 메서드, 프로퍼티, 기타 요구사항 등의 청사진. 구조체, 클래스, 열거형 은 프로토콜을 채택해서 프로토콜의 요구사항을 실제로 구현한다 프로토콜의 요구사항을 모두 구현한 타입을 '해당 프로토콜을 conform(준수)한다' 라고 표현한다 ```swiftprotocol 프르토콜이름 { 프로토콜 정의 }``` ### 1.1 프로퍼티 요구사항 var키워드를 사용..
첫번째 CaseIterable 프로토콜 >> CaseIterable 프로코콜을 conform 하기 전 ( 따르기전 ) 모든 메뉴를 담은 리스트를 만들고 싶다면 원소하나씩 넣어줘야한다 enum Menu:String{ case scone = "스콘" case bagel = "베이글" case ciabatta = "치아바타"} struct MenuListViewModel { let menus:[Menu] = [.scone,.bagel,.ciabatta]} >> CaseIterable 프로코콜을 conform 한다면 allCases로 enum안에 있는 모든 케이스들을 담은 배열을 얻을 수 있다 menus의 타입은 [Menu] 이다 : ) enum Menu:String, CaseIterable{ case scon..
다음과 같은 JSON에서 main 안에 있는 temp, temp_min, temp_max와 name을 가져오고 싶을 때 JSON형식과 똑같은 형식으로 이름을 지정해줘야 에러없이 디코드 된다 struct WeatherViewModel:Decodable { let name: String let main: TemperatureViewModel } struct TemperatureViewModel: Decodable{ let temp: Double let temp_min: Double let temp_max: Double } let weatherVM = try? JSONDecoder().decode(WeatherViewModel.self, from: data) 하지만 프로퍼티 이름을 다르게 해주고 싶을 때 가 ..
https://developer.apple.com/library/archive/documentation/WindowsViews/Conceptual/CollectionViewPGforIOS/UsingtheFlowLayout/UsingtheFlowLayout.html => 위의 문서를 보면 estimatedspacing이랑 실제 그려질때 actual spacing이랑 다른 것을 볼 수 있다 스택오버플로우로 찾아본 결과,,! 밑의 코드로 actual spacing을 확인해볼 수 있다 func calculateActualSpacing()->CGFloat?{ let firstIndex = IndexPath(item: 0, section: 0) let secondIndex = IndexPath(item: 1, se..
일단 나는 Binary Tree랑 Binary Search Tree 랑 늘 헷갈리니까 개념부터 명확히! ( 출처 https://stackoverflow.com/questions/6380231/difference-between-binary-tree-and-binary-search-tree ) 그니까 이진트리는 부모가 왼쪽 자식, 오른쪽 자식 ( 총 두개의 leaf ) 를 가질 수 있는 트리이다이진 탐색트리는 현재 있는 노드보다 작은 값이 왼쪽에, 큰 값이 오른쪽에 있는 이진트리이다 아래와 같은 BST를 구현해보자 // https://www.raywenderlich.com/990-swift-algorithm-club-swift-binary-search-tree-data-structure 참고 12345678..
https://www.raywenderlich.com/5357-what-s-new-in-swift-4-2( WWDC 2018 - What’s New in Swift 4.2 도 있음 근데 한글 자막이 없다... ) 아직 다 안읽어봤지만 가장 마음에 드는 부분은 index(where:) -> firstIndex(where:)index(of:) -> firstIndex(of:) 이렇게 명확하게 이름이 바뀐 것이다 array의 각 아이템에 index(of:) 함수를 쓰면 그 아이템의 인덱스가 나올꺼라고 기대하기 쉽지만 배열에 같은 아이템들이 있다면 맨 앞의 아이템의 인덱스를 반환해줘서 가끔 실수할때가 있었기 때문이다 123456let array = [1,2,3,1,1,1,1,1]array.forEach { pr..
- Total
- Today
- Yesterday
- drf custom error
- cocoapod
- flutter build mode
- Flutter Text Gradient
- Flutter Spacer
- flutter deep link
- 구글 Geocoding API
- Sketch 누끼
- 장고 URL querystring
- Django Heroku Scheduler
- ribs
- flutter dynamic link
- Watch App for iOS App vs Watch App
- Python Type Hint
- flutter 앱 출시
- Flutter getter setter
- METAL
- 플러터 싱글톤
- Flutter 로딩
- Flutter Clipboard
- DRF APIException
- 장고 Custom Management Command
- ipad multitasking
- Django Firebase Cloud Messaging
- PencilKit
- Dart Factory
- SerializerMethodField
- 플러터 얼럿
- github actions
- Django FCM
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |