일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- UIKit
- Swift디자인패턴
- css학습
- TDD
- RC
- five lines of code
- firestore
- SWIFT
- alamofire
- 코딩테스트입문
- 클린코드
- AutoLayout
- 프로그래머스
- algorithm
- Safari Inspector
- mrc
- ARC
- 카카오맵클론
- ios면접
- firebase
- IOS
- Di
- Swift코딩테스트
- five lines of cdde
- hackerrank
- 리팩터링
- storekit2
- 앱의생명주기
- unittest
- RxSwift
- Today
- Total
목록전체 글 (97)
샘성의 iOS 개발 일지
1. Unit Test란? 가장 작은 단위의 테스트로, 앱의 동작을 위해 작성한 코드(기능) 1개가 의도대로 잘 작동하는지 검증하는 것을 목적으로 둔다. 2. Unit Test의 필요성? 물론, Unit Test를 하지 않고 시뮬레이터나 실 기기로 돌리면서 디버깅 코드를 통해 테스트를 할 수도 있다. 작은 앱이라면 오히려 이러한 방법이 더 유리한 경우도 있다. (테스트 코드 작성 시간이 더 걸리는 경우) 하지만 앱의 규모가 커질수록 Unit Test의 중요성은 커진다. 앞서 말한 방식대로 규모가 있는 앱, 혹은 앞으로 확장될 앱을 테스트한다고 가정해보자. print문 등을 사용하여 콘솔창에 찍어내야할 뿐만 아니라 앱의 크기가 확장될수록 테스팅 시간도 늘고 필요하지도 않은 서버와의 통신까지 해야하는 경우..

1. 네이버 개발자 앱 등록하기 네이버 로그인 후, 하단의 링크에서 애플리케이션 등록을 진행한다. 애플리케이션 - NAVER Developers developers.naver.com 휴대폰 인증을 한 후, 회사이름은 없기에 공란으로 두었다. 원하는 '애플리케이션 이름' 을 입력 후, 사용 API의 최상단에 있는 '검색'을 선택한다. (필자는 RxSwift를 활용하여 검색 기능을 구현할 것..) 그리고 'iOS 설정'을 선택 후, 각자 본인의 프로젝트의 번들 ID를 입력한다. 그러면 상단처럼 Client ID와 Client Secret을 발급 받을 수 있다! 2. 검색 API 살펴보기 이제 검색 API를 어떻게 사용하면 되는지 살펴볼 차례다! 검색 > 블로그 - Search API 검색 > 블로그 블로그 ..

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..

1. Layer 객체란? 렌더링에 사용되는 view의 CALayer (Core Animation Layer) View를 생성하면 해당 view에 대한 layer가 자동적으로 생성되고 View는 layer의 delegate를 자동적으로 채택하게 된다. (또 다른 CALayer 객체의 delegate를 채택 불가능) layer위에 또 다른 subLayer들을 추가할 수 있음 (view를 올리는 것보다 훨씬 가벼움) UIView의 subView들은 layer위에 올려지게 됨 nil이 될 수 없다. (view를 생성하면 자동으로 하나가 생성되기 때문) 2. CALayer란? Core Animation Layer의 약자 UIKit에 비해 저수준의 프레임워크이기에 많은 기능을 제공하지만 코드량도 그 이상으로 많고 ..

RxSwift 연습 중, 서버로부터 랜덤 이미지 URL 받아서 화면에 비동기적으로 띄우다가 해당 오류가 계속 나서 찾아봤다... (네트워킹 하면 계속 최소 3번 이상은 떠서 알아보니 시뮬레이터에서 로깅하는 것이라고 한다... 일단 없애보자!) 1. 단축키 'command + shift +
1. Strong 참조 (강한 참조) 해당 인스턴스의 소유권을 가짐 자신이 참조하는 인스턴스의 reference count를 증가시킴 값 지정 시점에 retain(RC +1)이 되고, 참조가 종료되는 시점에 release (RC -1)가 됨 앞에 weak / unowned를 적지 않는다면 default로 강한 참조를 하게 됨. 강한 참조의 규칙을 모르고 사용하게 되면 메모리 누수(Memory Leak)가 발생할 수 있음. 2. Weak 참조 (약한 참조) 해당 인스턴스의 소유권을 갖지 않음 자신이 참조하는 reference count를 증가시키지 않음 선언할 때 앞에 weak 를 붙여서 사용 옵셔널 타입으로만 선언 가능 (참조하고 있던 인스턴스가 사라지면 속성을 nil을 할당 하기 때문) 강한 참조로 인..
1. Retain Count란? 힙(Heap) 영역의 RC(Reference Count)를 세어본 후, RC가 0인 순간, 컴파일 할 때 메모리 해제시점을 결정하는 방식 데이터 영역 : 공통으로 공유하는 영역으로, 앱이 실행되는 동안은 불변한다. (전역변수, 타입 변수(static)) - 관리 필요 X 스택 영역: 함수 실행을 위한 임시적 공간이다. 따라서 실행이 완료되면 FIFO(선입선출) 방식으로 알아서 메모리에서 사라지게 됨 - 관리 필요 X 힙 영역: 비교적 긴 시간동안 갖고있게 되는 데이터가 저장된다. 개발자가 관리해야지만 메모리에서 할당 해제가 됨 이 때, 개발자가 관리해야 할 것이 바로 Retain Count (RC)이다. 2. Retain Count의 동작 방식 2-1) Heap 영역에 저..