프로세스, 스레드, 동시성, 병렬성 등은 iOS 보다 더 low-level로 들어가 운영체제와 밀접한 관련이 있습니다. 그러나 이 글은 궁극적으로 GCD와 Operation Queue를 다루고 싶으니 iOS 개발 관점에 맞게 글을 풀어볼게요~ Concurrency 동시성은 여러 작업들을 동시에 실행할 수 있는 성질입니다. 엄밀히 말하면 싱글 코어에서 멀티 스레드를 동작시킬 수 있는 방식이니 동시에 실행되는 것 '처럼' 보이는 성질이죠. 멀티 코어 환경이 필요한 병렬성(Parallelism)과 자주 비교되는 개념이지만 이 글에서는 다루지 않을게요! 작업들은 스레드에서 실행이 됩니다. 아래 그림에 비유해보자면 차 = 작업, 차선 = 스레드 라고 볼 수 있겠네요. 보시다시피 버스전용차로는 뻥 뚫려있는 반면 일..
Frame과 Bounds는 UIView의 CGRect로 표현되는 instance property들로, 위치와 관련 된 값을 알고 싶을 때 사용합니다. 이들의 값은 아래 표와 같이 정리할 수 있는데요, Frame Bounds 좌표 superview에 의해 좌표 결정 자기 자신만의 좌표계 사용 크기(width, height) 자신과 외접하는 최소 사각형의 width, height 자기 자신의 width, height 좌표 위 표에 의하면 frame의 좌표는 superview에 의해 결정되고 bounds는 자신의 좌표계를 사용한다고 쓰여있습니다. 왼쪽, 오른쪽 그림 모두 같은 위치에 같은 UIView가 그려져있는데요, Frame은 superview의 (70, 40) 떨어진 위치에 있기 때문에 좌표가 (70, ..
URLSession은 네트워크 요청을 통해 데이터를 주고 받을 수 있도록 Apple에서 제공하는 networking API 입니다. HTTP-/HTTPS-를 베이스로 한 몇 가지 프로토콜을 지원하며 캐시 관리, 인증 그리고 쿠키 관리등도 지원합니다. 일반적으로 URLSession은 다음과 같은 순서로 진행이 됩니다. 1. session configuration and create session 2. create task 3. decide usage of completion handler / delgeate method 4. execute/resume task 5. execute completion handler after task completion [Session Configuration & Creat..
저도 필요에 따라 prepareForReuse를 잘 쓰고 있는데요, 지난 블로그 포스팅에서도 몇 번 언급을 했었어요. 1. [Rx] Resuable Cell의 흔적이 남는다 [바로가기] 2. [Toy] collectionview의 cell이 업데이트가 잘 안된다 [바로가기] 제목에서도 두 글의 공통점이 보이지 않나요?ㅎㅎ 첫 번째는 UIScrollView를 상속하는 view들의 cell과 관련 된 이야기라는 것(UITableView, UICollectionView)이고 두 번째는 변화에 대한 대응이 문제가 되는 순간들이죠. 재사용 되는 cell을 dequeue 할 때 이전에 사용 되었던 흔적이 남을 때 prepareForReuse를 통해 해결을 하곤 했는데요, 정확히 어떠한 이유로, 어떤 목적을 위해 만..
누군가 제게 MVC, MVP, MVVM 각각에 대해 설명을 해보라고 한다면 어렴풋이 설명은 할 수 있다고 생각해요. 그런데 아마 각 객체의 역할과 관계 정도만 간단하게 말할 수 있을 것 같더라구요. 그래서 제가 나름 신뢰할 수 있는 사이트, 개발자 분들의 글과 영상을 요약해서 MVC, MVP, MVVM의 특징에 대해 요약해 보려고 합니다. MVC VIEW CONTROLLER MODEL 사용자의 입력을 받음 view가 받은 사용자 입력으로 model 업데이트, 업데이트 된 모델로 view를 업데이트 data와 관련 이상적인 방식은 delegation pattern을 사용한 view와 model의 중간 다리 역할 (ex. UITableView의 UITableViewDataSource) [ex] persist..
우리가 만드는 앱은 하나 이상의 UIViewController로 구성됩니다. 물론 단일 화면일 수도 있지만 대부분은 Container View Controller를 포함하고 있어서 화면 전환이 가능하겠죠? 화면과 기능이 다양해질 수록 새로운 화면이 나타나고 없어지는 시점 또는 특정 이벤트가 발생할 시점에 처리하고 싶은 것들이 있을거에요. 새로 보여질 화면의 UI 요소들을 잘 배치한다던지, 현재 화면에서 사용하고 있던 네트워크 task를 끊는다던지 등. 때문에 View Controller의 생명주기를 잘 알고 있으면 더 좋은 코드를 짤 수 있습니다. 공식 문서 상에 이 그림은 Handling View-Related Notifications 제목 밑에 속해있습니다. 원 안에는 가시 상태(visibility)..
Auto layout을 통해 constraint를 잡을 때 반드시 해당 view의 위치(position)와 크기(size) 정보가 필요합니다. 하나라도 모르면 뷰가 어그러지거나, 화면 상에 보이지 않는 등 예상했던 것과 다르게 표현이 되곤하죠! 그런데 모든 뷰가 width/height 정보를 명시해 줄 필요는 없어요. 예를 들어 볼까요? final class ViewController: UIViewController { private var label: UILabel = { let label = UILabel() label.text = "welcome back to my channel" label.translatesAutoresizingMaskIntoConstraints = false return lab..
Apple 공식 문서에서 데려온 캡쳐본으로, Apple은 공식적으로 left/right constraint 보다 leading/trailing의 사용을 권장하고 있죠! left/right constraint vs leading/trailing constraint 우선 left/right은 사용자가 보는 화면상의 왼쪽과 오른쪽 위치 속성이에요. 반면에 leading/trailing은 reading direction의 시작과 끝을 나타내는 위치 속성이랍니다. reading direction? 우리가 주로 사용할 줄 아는 언어(한국어, 영어)는 글을 왼쪽 → 오른쪽 순으로 읽죠? 이렇게 읽는 방향을 'reading direction'이라고 하는데 default reading direction은 사용자가 설정한..
Auto Layout을 코드로 작성할 수 있는 방법에는 3가지가 있어요. [1] Layout Anchor를 사용하는 방법 [2] NSLayoutConstraint class를 직접 이용하는 방법 [3] Visual Format Language를 사용하는 방법 각각을 하나씩 장단점과 함께 살펴볼까요? Layout Anchor 저한테 가장 익숙한 방법은 제일 첫번째인 layout anchor를 사용하는 방법이에요. 제약을 주고 싶은 item의 anchor property에 접근해서 제약을 정의하는 방식입니다. 장점으로는, 1. 간결한 작성 방식으로 인한 뛰어난 가독성 2. type safety를 지원 이 있습니다. 두번째 방법인 NSLayoutConstraint class를 사용하면 constraint in..
집단 지성으로 모인 다양한 면접 질문들을 모아 공부하고 정리해보려고 해요. 출처는 모두 아래에 명시해 놓았고, 최대한 많이 채워보도로 하겠습니다! iOS Frame과 Bounds의 차이 [바로가기] ViewController의 생명주기에 대해 설명하시오. [바로가기] setNeedsLayout와 setNeedsDisplay의 차이에 대해 설명하시오. App의 Not running, Inactive, Active, Background, Suspended에 대해 설명하시오. 앱이 In-Active 상태가 되는 시나리오를 설명하시오. URLSession에 대해 설명하시오. [바로가기] prepareForReuse에 대해서 설명하시오. [바로가기] Auto Layout AutoLayout을 코드로 작성하는 방법..
- Total
- Today
- Yesterday
- 운영체제
- 졸업작품
- SWIFT
- ios
- OS
- 삼성
- 컴퓨터공학
- 알고리즘
- 부스트캠프2020
- 코딩테스트
- 삼성소프트웨어아카데미
- 부스트캠프
- 프로그래머스
- swacademy
- nosql
- 컴공졸작
- 부캠
- firebase
- TableView
- 코테
- 보안
- C++
- 커넥트재단
- RxSwift
- 소프트웨어역량시험
- 소프트웨어아카데미
- 개발자인턴
- 컴과졸작
- 인턴
- 데이터분석
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |