일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Structures and Classes
- Mock
- IOS
- SWIFTUI
- roundingMode
- 독후감
- 야곰아카데미
- UIResponder
- 부트캠프
- human interface guidelines
- Modality
- 책후기
- Failed to register bundle identifier
- View Life Cycle
- Navigation
- Codegen
- xcode
- 독서후기
- SWIFT
- Info.plist
- viewcontroller
- contentInset
- delegation
- @available
- NotificationCenter
- 스타트업주니어로살아남기
- NumberFormatter
- 아이폰
- mvvm
- 스위프트
- Today
- Total
목록전체 글 (145)
호댕의 iOS 개발

defer... 지금까지 크게 사용할 일이 없어서, 찾아봐야지 하고 미루고 미루다 정리를 하게 됐다. 진짜 이름따라 블로그 정리도 늦춰진 것 같다.. ㅎㅎ... 그렇다면 defer는 뭘까? 일단 사전에 찾아보면 다음과 같이 나온다. defer = 미루다, 연기하다 문자 그대로 함수의 scope가 종료할 때 실행될 행동을 defer문 안에 두고 이를 가장 마지막에 사용할 수 있다. 간단한 예시를 살펴보자 func deferStatement1() { defer { print("나중에 실행하기") } print("먼저 실행하기") } deferStatement1() 기존 함수를 실행할 때에는 함수가 정의되어 있는 순서대로 호출이 되지만 defer문 안에 있는 것은 함수의 scope가 종료되는 시점에 동작하도록..

최근 Rx를 통해 items를 Bind하거나, DiffableDataSource, Compositional Layout을 통해 리스트를 구현하다보니 TableView를 정석(UITableViewDataSource를 사용하는 방법)으로 구현하는 방법이 가물가물했다. 진짜 한동안 안쓰다 보면 머리 속에서 희석되는... 그래서 다시 사용한 김에 정리를 해보고자 한다. 기존 rx를 사용한 방식은 쉽게 tableView에 item을 넣어줄 수 있다. viewModel.list.observe(on: MainScheduler.instance) .bind(to: tableView.rx.items( cellIdentifier: String(describing: ProjectTableViewCell.self), cellT..

특정 아이템을 다른 외부 SNS로 공유하거나, 전달할 때, 복사할 때 AcitivityViewController를 사용할 수 있다. 이외에도 즐겨찾기, 북마크, 찾기와 같은 작업을 수행할 수 있다. iPad에선 반드시 popover를 통해 ActivityView를 present해야 하며, iPhone과 iPod touch의 경우 modal로 present를 해줘야 한다. ActivityViews의 H.I.G 문서 보기 시스템에선 다양한 프린트를 포함한, 메시지, 에어플레이 등 다양한 기본 활동을 제공한다. 이는 재정렬될 수는 없다. 사용자 정의 Activity를 표현할 때에는 간단한 이미지를 지정해줘야 한다. 이는 아이콘을 통해 표현이 되어야 하며 그림자를 포함하지 않고 적당한 투명도와 Antialias..

반복문, 조건문, 함수를 사용하다보면 제어 전송문을 사용하게 된다. 그래서 이를 총 정리해보고자 한다. 🌀 break Switch 문 해당 케이스에서 실행하는 문장이 없는 경우 break를 사용함 만약 작성을 하지 않는다면 이와 같은 에러가 발생한다. 'case' label in a 'switch' must have at least one executable statement 'default' label in a 'switch' must have at least one executable statement var num = Int.random(in: 1...100) var array = ["Hello", "Jobs", "Swift", "Cook"] switch num % 4 { case 0: print(..

일단 라이브러리와 프레임워크는 개발을 하면서 반드시 사용해본 개념일 것이다. 최소한 프레임워크는 누구든 사용해봤을 것이다. 그렇다면 라이브러리와 프레임워크는 무엇일까? 🆚 라이브러리와 프레임워크 프레임워크 프레임워크는 Playgrounds 파일을 새롭게 생성하거나, 프로젝트를 생성하기만 해도 볼 수 있다. Xcode를 다뤄봤다면 무조건 봤을 UIKit이나 Foundation이 바로 프레임워크이다. 프레임워크는 앱을 구현하기 위해 필수적인 것들이다. 즉, 레고를 예로 들자면 다양한 크기의 레고 블록인 것이다. 우리는 이런 레고 블록이 없다면 아예 레고를 만들 수 없을 것이다. 직접 플라스틱을 녹여 만들지 않는 한 말이다. 프레임워크의 경우도 앱을 만들기 위해선 반드시 import를 해서 해당 프레임워크를 ..

이는 앨런 Swift 문법 마스터 스쿨을 듣고 정리한 글입니다. 앨런 Swift문법 마스터 스쿨 (온라인 BootCamp - 2개월과정) - 인프런 | 강의 Swift문법을 제대로 이해, 활용해보고자 하는 철학을 바탕으로 과정이 설계되었습니다. 코딩에 대해 1도 모르는 비전공자를 시작으로 네카라쿠배에 입사할 수 있는 초고급 수준까지 올리는 것을 www.inflearn.com 🧺 Collection은 뭘까? 그렇다면 Collection은 뭐라고 정의할 수 있을까? 이는 여러 개의 데이터를 효율적으로 관리하기 위한 자료형이라고 볼 수 있다. 즉, 다양한 데이터를 담아 용도에 따라 사용할 수 있도록 하는 바구니 역할인 것이다. Swift에선 Collection으로 크게 Array, Dictionary, Set..

Swift Language Guide와 앨런 Swift 문법 마스터 강의를 바탕으로 작성한 글입니다. 앨런 Swift문법 마스터 스쿨 (온라인 BootCamp - 2개월과정) - 인프런 | 강의 Swift문법을 제대로 이해, 활용해보고자 하는 철학을 바탕으로 과정이 설계되었습니다. 코딩에 대해 1도 모르는 비전공자를 시작으로 네카라쿠배에 입사할 수 있는 초고급 수준까지 올리는 것을 www.inflearn.com Generics — The Swift Programming Language (Swift 5.7) Generics Generic code enables you to write flexible, reusable functions and types that can work with any type, s..

기존 프로젝트를 다시 MVVM + RxSwift로 리팩토링하면서 다시 Networking 작업을 하고 있다. 저번에는 네트워크와 관련된 테스트 코드를 짜지 못했었는데 이번에는 Stub을 이용해 네트워크에 연결되지 않는 상황에서 테스트를 할 수 있도록 구현했다. (일단 여기선 RxSwift만을 사용하고 기타 Moya나 Alamofire같은 네트워킹 관련 라이브러리는 사용하지 않았습니다) 여기서 사용하는 Stub은 테스트 더블이라 볼 수 있다. 즉, 테스트를 직접 진행하기 어려운 경우, 이를 대신해 테스트를 진행할 수 있는 객체를 따로 생성하는 것이다. 🤔 테스트 더블을 사용한 테스트 이유 그럼 네트워크 관련 테스트에서 Stub을 사용하는 이유는 뭘까? 네트워크를 사용할 때보다 테스트 속도가 빠르다 네트워크..