일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 시험에자주나오는것만
- 카카오맵클론
- 프로그래머스
- RC
- algorithm
- AutoLayout
- 앱의생명주기
- mrc
- unittest
- TDD
- Swift디자인패턴
- alamofire
- UIKit
- iOS앱 디버깅
- ARC
- RxSwift
- Di
- firestore
- SWIFT
- IOS
- HackersRank
- Safari Inspector
- Bubble Search
- hackerrank
- 반응형프레임워크
- 코딩테스트입문
- Swift코딩테스트
- ReactorKit UnitTest
- ios면접
- firebase
- Today
- Total
목록전체 글 (93)
샘성의 iOS 개발 일지
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/oEipl/btsngsupOce/JZKJkY9al06rWwwfvIbpv0/img.png)
1. 이진 탐색이란? 탐색할 자료를 두 파트로 나누어 둘 중 찾으려는 자료가 있는 파트를 탐색 하는 것. 탐색할 자료가 정렬이 된 경우에만 사용 가능하다. 2. 이진 탐색 살펴보기 이진탐색은 친구들과 많이 했던 업다운 게임의 원리와 동일하다 보면 이해하기 쉽다. 한번 어떤 원리인지 살펴보자. 1. 하단처럼 9개의 요소를 가진 정렬된 배열이 있다. 2. 해당 배열의 mid(중간 index의 값)을 추출한다. 3. 찾으려는 자료값이 mid보다 큰지 작은지 비교한다. (같을 경우 mid의 index를 return한다) 4. mid보다 큰 경우, 주황색 화살표 영역의 중간값과 다시 비교한다. 5. mid보다 작은 경우, 파란색 화살표 영역의 중간값과 다시 비교한다. 6. 2~5의 과정을 반복한다. 3. 이진 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/b1ZMrm/btsmHmtxY4d/KzHsV7WrY9EM25EH1PPP71/img.png)
1. 제어하고 싶은 앱의 요소 선정 Firebase Remote Config로 제어하고 싶은 앱의 요소를 선택한다. 필자는 'titleLabel', 'detailLabel', 'dateLabel'과 해당 'mainVC에서 해당 팝업뷰를 띄울지 여부' 총 4가지를 제어할 것이다. 2. 프로젝트에 Firebase 세팅하기 1. Firebase에서 새 프로젝트를 만든 후, 기본적인 세팅들을 다 끝낸다. 대신 유의할 점은 꼭 'Google 애널리틱스' 사용 설정이 되어야한다. 2. 하단의 2가지 pod file을 install 한다. pod 'Firebase/RemoteConfig' pod 'Firebase/Analytics' 3. install이 완료 된 프로젝트의 AppDelegate - didFinishL..
1. 테스트 내용 선정 오늘 테스트하고자 하는 것은 하단의 3가지이다. View의 Action이 Reactor에게 잘 전달 되었는지 확인 Reactor가 전달받은 Action에 대한 Mutation을 잘 작동시켰는지 State 상태 확인 Reactor의 State를 View가 잘 구독하고 있는지 확인 2. 테스트 방식 테스트 방식은 SUT 설정 테스트 시나리오 작성 및 실행 (GWT 형식) 순서로 진행될 것이다. (만약 이 내용이 이해가지 않는다면 하단의 게시글 참고 부탁드립니다.) [XCTest] Unit Test작성하기 (feat. RxSwift) 1. Unit Test란? 가장 작은 단위의 테스트로, 앱의 동작을 위해 작성한 코드(기능) 1개가 의도대로 잘 작동하는지 검증하는 것을 목적으로 둔다...
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bORe39/btsmcM6O20Q/xbITsFkHyxrW1uOEutOEGk/img.png)
1. ReactorKit이란? 단방향 데이터 흐름을 가진 반응형 앱에 적합한 프레임워크. 기본적으로 RxSwift를 활용하고 있고 개인적으로 더 아키텍처가 통일된 MVVM(?)이라는 느낌을 준다. 2. GitHub : GitHub - ReactorKit/ReactorKit: A library for reactive and unidirectional Swift applications A library for reactive and unidirectional Swift applications - GitHub - ReactorKit/ReactorKit: A library for reactive and unidirectional Swift applications github.com 3. ReactorKit의 구..
1. Unit Test란? 가장 작은 단위의 테스트로, 앱의 동작을 위해 작성한 코드(기능) 1개가 의도대로 잘 작동하는지 검증하는 것을 목적으로 둔다. 2. Unit Test의 필요성? 물론, Unit Test를 하지 않고 시뮬레이터나 실 기기로 돌리면서 디버깅 코드를 통해 테스트를 할 수도 있다. 작은 앱이라면 오히려 이러한 방법이 더 유리한 경우도 있다. (테스트 코드 작성 시간이 더 걸리는 경우) 하지만 앱의 규모가 커질수록 Unit Test의 중요성은 커진다. 앞서 말한 방식대로 규모가 있는 앱, 혹은 앞으로 확장될 앱을 테스트한다고 가정해보자. print문 등을 사용하여 콘솔창에 찍어내야할 뿐만 아니라 앱의 크기가 확장될수록 테스팅 시간도 늘고 필요하지도 않은 서버와의 통신까지 해야하는 경우..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/dRRFBR/btslaRWb2Jr/aCeQyGh4KJRcfoZTHUnRjK/img.gif)
1. 네이버 개발자 앱 등록하기 네이버 로그인 후, 하단의 링크에서 애플리케이션 등록을 진행한다. 애플리케이션 - NAVER Developers developers.naver.com 휴대폰 인증을 한 후, 회사이름은 없기에 공란으로 두었다. 원하는 '애플리케이션 이름' 을 입력 후, 사용 API의 최상단에 있는 '검색'을 선택한다. (필자는 RxSwift를 활용하여 검색 기능을 구현할 것..) 그리고 'iOS 설정'을 선택 후, 각자 본인의 프로젝트의 번들 ID를 입력한다. 그러면 상단처럼 Client ID와 Client Secret을 발급 받을 수 있다! 2. 검색 API 살펴보기 이제 검색 API를 어떻게 사용하면 되는지 살펴볼 차례다! 검색 > 블로그 - Search API 검색 > 블로그 블로그 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cA2qDX/btskOUAiSID/wYLHVl5OH3nBxM4SrClcYk/img.png)
UINavigationController : Stack 기반의 Container ViewController 제공하는 navigation 인터페이스로 1개 이상의 ViewController 를 관리할 수 있다. (가장 처음으로 들어간 VC가 rootVC가 되며 Stack에서 제거 불가) Stack 기반이므로 최상단에 있는 하나의 ViewController만이 보여지게 된다. ViewController를 push 혹은 pop 을 통해 보여질 view controller 를 결정 가능 NavigationController를 생성하면 상단에 1개의 NavigationBar도 같이 생성됨 - 여러개의 VC를 담았다고 여러개의 NaviBar가 생성되는것이 아닌 1개의 NaviBar에 Stack에 담긴 아이템을 이용..
UIWindow : UIView의 하위 클래스로, 앱의 UI를 담는 컨테이너이자 View에 이벤트를 전달하는 객체 UIWindow 자체만으로는 눈에 보이는 내용을 띄울 수는 없음 (View를 담아서 컨텐츠를 띄움) 모든 앱은 1개의 UIWindow를 갖고 있다. (iOS 13.0 이후로는 아이패드에선 1개의 앱이 여러개의 Window를 가질 수 있음) UIWindow는 액자, 그 액자에 들어가는 사진은 UIView * 13.0 이후 SceneDelegate의 scene will connectTo func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptio..