우리가 만드는 앱은 하나 이상의 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을 코드로 작성하는 방법..
여러분 혹시 스토리보드를 사용하지 않고 코드를 통해 뷰를 작성 해보신 적 있으세요? private lazy var titleLabel: UILabel = { let label = UILabel() return label }() UI Component를 만들 때 주로 lazy 키워드를 사용하게 되는데요, 어떤 이유로 사용하는걸까요? Lazy Stored Property Lazy 키워드를 통해 변수를 선언하면 변수를 사용하기 전까지 값을 할당하지 않습니다. 다음과 같은 경우에 lazy property를 유용하게 사용할 수 있습니다. 1. Property의 초기값이 외부에 의존 되어 있어서 객체의 초기화가 끝나기 전까지 확실치 않을 때 2. Property의 초기값이 복잡한 계산을 요해서 사용 전까지는 계산하..
저는 언제나 비동기 작업들이 골치 아픈데 hoxy... 여러분도 그러신가요? 비단 통신단에서 뿐만 아니라 앱 곳곳에서 발생하는 이벤트들도 모두 비동기적으로 발새합니다. RxSwift와 Combine을 통해 비동기 프로그래밍을 한다면 수월하게 해격할 수 있겠지만 오늘은 더 베이직한 방법 중 하나를 골라 이야기를 해보려고 합니다. 서로 다른 객체 간 소통이 이루어질 때 3가지 패턴 중 하나를 주로 사용합니다. •Notification •Delegation •KVO 오늘은 이 중에서도 Notification을 골라봤습니다! 글을 시작하기 전에... Swift3 이전까진 NSNotificationCenter라고 불렸습니다. 그래서 StackOverflow나 Medium 등 예전 글에서는 NSNotificatio..
iOS 개발을 하면서 매일 뷰와 사용자와 interaction이 가능한 다양한 UI Components를 만들지만 "View Rendnering" 에 대한 이해가 부족함을 느꼈습니다. View에 대한 이해가 부족하니 문제 해결도 잘 안됐던 것 같아요. 에러나 버그가 생기면 무작정 뷰 디버거를 열고 이리저리 돌려보고 view hierarchy를 봐도 해답을 못 찾기 일쑤였죠. 그래서 Layout, Display 그리고 Constraint를 관장하는 Update Cycle에 대해 정리해보겠습니다. Main Run Loop와 Update Cycle Main run loop와 Update Cycle에 대해 공부를 해보셨다면 아래 두 다이어그램을 한 번 쯤은 보셨을 것 같아요. 좌측에는 앱이 실행된 후 사용자가 ..
Tistory에는 요약본이 올라 와 있습니다. Syntax Highlighting으로 편하게 읽고 싶으신 분들은 여기서 읽으시면 되어유~ [노션 바로가기] 문제 상황 각 cell마다 Image와 Like Button이 존재한다. 버튼을 눌러 상태 변화를 하며 모델을 변경시키고 그에 맞게 뷰에서도 Background Color, Text를 변경해준다. 그러나 상태 변경 이후 스크롤을 하면 cell이 재사용되면서 다른 사진임에도 불구하고 버튼은 여전히 빨간색인 것이 문제다. 원래는 이렇게 하지 않았던가? func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { if let cell = tabl..
Syntax Highlighting으로 편하게 읽고 싶으신 분들은 여기서 읽으시면 되어유~ [노션 바로가기] viewModel.imageList .subscribe(onNext: {[weak self] images in self?.imageList.accept(images) }) .disposed(by: disposeBag) guard let self = self else { return } 만큼이나 관성의 법칙에 의해 쓰게 되는 .disposed(by: disposeBag). 제대로 알고 쓰는건가 라는 의심이 들어 알아보고 싶어졌다. 무조건 subscription을 cancel 하는 것은 아니다 위에 예시 처럼 subscription을 만들었다고 항상 dispose 시켜야 하는 것은 아니다. 예를 들어..
- Total
- Today
- Yesterday
- C++
- 삼성
- 컴퓨터공학
- 코딩테스트
- 컴공졸작
- 코테
- 소프트웨어역량시험
- 커넥트재단
- 소프트웨어아카데미
- 프로그래머스
- 부캠
- firebase
- SWIFT
- ios
- TableView
- OS
- 컴과졸작
- 알고리즘
- 운영체제
- 졸업작품
- nosql
- 인턴
- 개발자인턴
- 데이터분석
- RxSwift
- 삼성소프트웨어아카데미
- 부스트캠프2020
- 부스트캠프
- 보안
- swacademy
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |