-
Debug 모드에서만 로그 출력하기🧑💻/Swift 2022. 1. 2. 18:48
보통 Swift 앱의 상태를 확인하기 위해 print를 많이 활용해 로그를 출력합니다. 또는 Objective-C의 NSLog를 사용해 로그를 출력할 수도 있습니다. 실제로 호출해 보면 확연히 다르게 표시됩니다. NSLog 시간 및 프로젝트 이름 출력 Multi-Thread 환경에서 동시에 처리 가능 Device Console에서 출력됨. 느림 print Device Console에서 출력되지 않음 빠름 테스트를 위해 Debug 모드에서만 로그를 출력하고, 앱의 성능을 위해 Release 모드에서는 출력하지 않으려면 어떻게 해야할까요? 1️⃣ 모든 NSLog에 #if DEBUG를 붙여 처리 간단하지만 모든 로그에 전처리를 붙여야 하는 번거로움이 있습니다. 로그에 쓰이는 코드 양이 3배로 늘어나네요. Re..
-
Git) fatal: Authentication failed for ...🧑💻/Command 2021. 8. 29. 16:47
Git을 사용하여 Github에 push 하는 중 오류가 발생했습니다. 2021년 8월 13일 이후로 비밀번호 인증을 지원하지 않는다고 하네요. 비밀번호 탈취 시 보안에 취약한 문제때문에 토큰 기반 인증 방식을 채택한 것으로 보입니다. $ git push remote: Support for password authentication was removed on August 13, 2021. Please use a personal access token instead. remote: Please see https://github.blog/2020-12-15-token-authentication-requirements-for-git-operations/ for more information. fatal: Au..
-
RxSwift로 UITableView 구현하기🧑💻/Swift 2021. 8. 7. 19:28
RxSwift를 사용하면 Delegate와 Delegate 프로토콜을 채택하여 구현했을 때 보다 코드의 양이 크게 줄어듭니다. 이 외에도 Thread 사용이 간편하다는 점 등 여러 장점이 있는데요. 먼저 Podfile에 RxSwift, RxCocoa를 추가하고 시작해 봅시다. UITableViewDataSource TableView를 구성하는 Cell 데이터를 관리하기 위한 프로토콜입니다. 스토리보드에 설정한 UITableView의 dataSource 연결을 해제합니다. 코드로 구현했었다면 UITableViewDataSource 프로토콜 연결을 제거하고 tableView.dataSource = self 코드를 제거합니다. 1개의 Section으로 구성된 기본 TableView UITableViewData..
-
RxSwift selectedSegmentIndex 연동 안되는 문제🧑💻/Swift 2021. 7. 22. 13:51
UISegmentedControl의 selectedSegmentIndex 값을 직접 변경 시 valueChanged 이벤트를 전송해야 합니다. segctrlTime.selectedSegmentIndex = 0 segctrlTime.sendActions(for: .valueChanged) ⬇️ 자세히 보기 ⬇️ UISegmentedControl의 selectedSegmentIndex 값에 따라 다른 화면을 표시해주기 위해 아래와 같이 RxCocoa를 사용해서 비동기 처리를 했습니다. /* 두번째 화면의 ViewController */ override func viewDidLoad() { super.viewDidLoad() ... segctrlTime.rx.selectedSegmentIndex .observ..
-
Autolayout vs Autoresizing Masks🧑💻/Swift 2021. 7. 16. 01:11
iOS와 macOS의 사용자 인터페이스 레이아웃은 3가지 방법으로 구성할 수 있습니다. Frame-based Layout Autoresizing Masks Auto Layout 구성 방식의 특징과 사용 방법을 알아보겠습니다. Frame-based Layout 모든 View는 위치와 크기 정보를 Frame으로 표현합니다. 처음 View의 Frame은 (20, 20, 120, 80), 두 번째 View의 Frame은 (20, 108, 120, 80)입니다. 실제 View의 Frame 값을 출력하면 다음과 같이 알 수 있습니다. 이 값을 프로그래밍 방식으로 한 땀 한 땀 계산하면 Frame-based Layout 방식이 됩니다. View에 변경 사항이 있으면 영향을 받는 나머지 View에 대해서도 다시 계산해..