1) Simple Search ( 단순탐색 ) - 시간복잡도 0(n) 배열의 처음부터 하나하나씩 비교하면서 찾는 방법. n개의 원소를 가진 리스트에서 Simple Search를 사용하면 최대 n 번의 search가 필요할 수 도 있다 2) Binary Search ( 이진 탐색 ) - 시간복잡도 O(logn) Simple Search와 달리, 절반씩 제외시키면서 찾는다 n개의 원소를 가진 리스트에서 Binary Search를 사용하면 최대 log2(n) 번만에 답을 찾을 수 있다 예를 들어, 리스트에 숫자가 8개 있다면 1) Simple Search - 최악의 경우 최대 8개의 숫자 확인 2) Binary Search - 최악의 경우 최대 log2(8) = 3개의 숫자확인 하는 것이다. ex) 리스트에 ..
[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..
- Total
- Today
- Yesterday
- Django Heroku Scheduler
- Python Type Hint
- DRF APIException
- Flutter 로딩
- Django Firebase Cloud Messaging
- github actions
- flutter deep link
- METAL
- flutter dynamic link
- Flutter Spacer
- flutter 앱 출시
- Django FCM
- Flutter getter setter
- 구글 Geocoding API
- 장고 URL querystring
- SerializerMethodField
- Dart Factory
- 장고 Custom Management Command
- drf custom error
- 플러터 싱글톤
- ipad multitasking
- ribs
- flutter build mode
- Flutter Text Gradient
- cocoapod
- Flutter Clipboard
- Watch App for iOS App vs Watch App
- Sketch 누끼
- 플러터 얼럿
- PencilKit
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |