전체 글 158

230720 TIL

1. Swift Package Manager vs Cocoapods https://velog.io/@jee/Dependency-Manager%EC%9D%98%EC%A1%B4%EC%84%B1-%EA%B4%80%EB%A6%AC-%EB%8F%84%EA%B5%AC-in-iOS Dependency Manager(의존성 관리 도구) in iOS 프로젝트를 진행하며 의존성 관리 도구로 상황에 따라 CocoaPods, SPM을 번갈아 사용해 왔습니다. iOS의 의존성 관리 도구에는 Carthage도 있는데, 각각의 차이를 정확히 몰라 이번 기회에 정리해보았 velog.io https://tech.kakao.com/2022/06/02/swift-package-manager/ Swift Package Manager 적용기..

[Swift] 에러 처리, Result Type

본 포스팅은 '스위프트 프로그래밍 (3판)' 도서와 앨런 Swift 문법 마스터스쿨 강의를 참고하여 Swift 프로그래밍에 대해 정리하는 글입니다. 혹시 틀린 부분이 있거나 질문이 있으시다면 언제든지 댓글 달아주시면 정말 감사하겠습니다 :) 에러 처리 에러 처리는 왜 필요할까? => 프로그램은 완벽하게 돌아갈 수 없다. 만약에 에러에 대한 적절한 처리를 하지 않았을 경우 앱이 꺼지게 되고, 앱이 반복적으로 꺼지게 되면 사용자 경험에 상당히 악영향을 끼침 => 따라서, 미리 발생할 수 있는 에러 케이스를 사전에 정의하여 적절한 처리를 해준다면, 최소한 앱이 꺼지는걸 방지할 수 있다. Error 프로토콜 enum NetworkError: Error { case networkingError // 네트워크 에러..

🐦 Swift 2023.07.20

[Swift] 클로저(Closure)

본 포스팅은 '스위프트 프로그래밍 (3판)' 도서와 앨런 Swift 문법 마스터스쿨 강의를 참고하여 Swift 프로그래밍에 대해 정리하는 글입니다. 혹시 틀린 부분이 있거나 질문이 있으시다면 언제든지 댓글 달아주시면 정말 감사하겠습니다 :) Closure, 클로저 1) 이름이 없는 함수이며, 함수와 기능이 완전히 동일함 (이름은 없으나 하나의 블록으로 묶여서 기능을 처리할 수 있는 문법) { (매개변수) -> 반환 타입 in 코드 } 2) 클로저는 일급 객체이다. (Swift에서는 함수가 일급 객체. 즉 클로저도 일급 객체) *일급 객체란? 1) 변수에 할당 가능하다. 2) 파라미터로 전달 가능하다. 3) 반환 타입으로 사용할 수 있다. 3) 클로저는 참조 타입이다. - 클래스와 같이 참조 타입으로, 마..

카테고리 없음 2023.07.13

[알고리즘] 백트래킹 유형 정리

백트래킹 문제 풀때 유형별 풀이가 너무 헷갈려서 정리하는 포스팅 1. 단순 순열(순서가 다르면 겹치는게 있어도 다른 케이스로 간주, ab != ba) - 모든 케이스를 다 돌기는 해야하는데, 현재 루프에서 이미 방문한 노드는 제외해야할 때 N과 M (1) 스도쿠 - 1부터 9를 중복없이 채운다는 전제하에 1 9 와 9 1은 다른 케이스일 수 밖에 없음. 여기에 행/열/사각형에 중복이 없는지에 대한 조건 추가하는 응용만 제외하면 아래 원리와 동일 알고리즘 틀 // 구현해놓은 Permutation 연습 func permute(_ nums: [Int], _ targetNum: Int) -> [[Int]] { var result = [[Int]]() var visited = [Bool](repeating: fa..

[iOS/Swift] UIScrollView 안에 항목별 동적 높이를 가진 투두리스트 구현에 관한 고민 (feat. dynamic contentSize TableView)

셀프 사이징 셀, dynamic cell height 우선 이렇게 텍스트뷰 길이나 크기에 맞춰서 셀의 크기가 각자 다른 테이블뷰를 구현하려면, 테이블뷰 셀은 다음 속성으로 지정되어야한다. - rowHeight = UITableView.automaticDimension: 테이블뷰를 load하고 -> 레이아웃을 계산한 다음 -> 셀의 높이값을 알아서 재설정 - estimatedRowHeight = 44.0 : 셀의 높이를 재설정할 때 참고할만한 셀. 즉 재설정 되기 전의 디폴트 셀의 높이를 지정함 그리고 그 뒤에 문제가 있었는데, 스크롤뷰 안에 테이블뷰가 여러개 들어가있는 구조라서 API에서 내용을 불러오는 즉시 tableview의 height을 컨텐츠 내용에 맞게 지정해줄 필요가 있어 contentSize..

230630 TIL

1. Responder Chain, UI responder https://seizze.github.io/2019/11/26/iOS%EC%9D%98-Responder%EC%99%80-Responder-Chain-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0.html iOS의 Responder와 Responder Chain 이해하기 UIKit과 관련된 애플 문서를 볼 때 빈번하게 등장하는 Reponder Chain에 관련한 내용을 정리합니다. 여러 애플 문서를 참고하였으며, 포스트의 맨 아래 References에서 확인할 수 있습니다. seizze.github.io https://developer.apple.com/documentation/uikit/touches_presses_and_g..

[Swift] ARC(Automatic Reference Counting)

본 포스팅은 '스위프트 프로그래밍 (3판)' 도서와 앨런 Swift 문법 마스터스쿨 강의를 참고하여 Swift 프로그래밍에 대해 정리하는 글입니다. 혹시 틀린 부분이 있거나 질문이 있으시다면 언제든지 댓글 달아주시면 정말 감사하겠습니다 :) ARC(Automatic Reference Counting) Swift에서 메모리를 자동으로 관리해주는 방식으로, 클래스/클로저에만 해당되는 메모리 관리 방식 ARC는 참조 횟수(=Reference Count, Retain Count)를 통해 더이상 필요하지 않은 클래스의 인스턴스를 메모리에서 자동으로 해제하는 방식으로 동작 컴파일 시 이미 값 타입의 메모리 해제 시점(reference count가 0이 되는 시점)이 정해져있어서 해제되어야 할 시점에 메모리가 해제됨..

🐦 Swift 2023.06.29

[iOS/Swift] 스크롤뷰 안의 테이블뷰가 모두 보이지 않는 현상 (feat. stackview)

🚨 문제 인식 아래 자세히 보면 회고를 1주일 내 이틀이상 작성했는데 짤려있는 듯 하게 보이는 현상이 있었다. ❗️ 고민 지점 / 문제 원인 - 이 또한 전에 꽤 나를 애먹였던 scrollview안의 tableview가 온전히 다 보이지 않는, contentSize 이슈인것 같아서 이쪽 위주로 다시 살펴보았다. - 여기서 1주일간 회고기록이 없을 때 보여주는 뷰가 있는데, 이 뷰도 스크롤뷰 안에 포함되어있다보니 단순한 isHidden으로는 해당 뷰가 contentView에 걸린 제약도 사라지지 않기 때문에 회고 기록이 있을 때 테이블뷰를 보여주는 부분에서 "회고 작성하러 가기 버튼"의 제약에 맞는 크기까지만 보여주는 이슈가 있었다. 이에 따라 회고 기록이 있을 때는 위 뷰의 제약을 다 지워주고, 없을 때..

[Swift] 프로토콜 (protocol)

본 포스팅은 '스위프트 프로그래밍 (3판)' 도서와 앨런 Swift 문법 마스터스쿨 강의를 참고하여 Swift 프로그래밍에 대해 정리하는 글입니다. 혹시 틀린 부분이 있거나 질문이 있으시다면 언제든지 댓글 달아주시면 정말 감사하겠습니다 :) 프로토콜 프로토콜이란 특정 역할을 하기 위한 메서드, 프로퍼티, 기타 요구사항 등의 청사진(그래서 구현은 없고 형태만 있음)이다. 구조체, 클래스, 열거형은 프로토콜을 채택하여 프로토콜을 구현할 수 있다. protocol 프로토콜 이름(대문자로 시작){ } ❓ 상속 vs 프로토콜 1) 상속은 클래스만 상속 가능하며, 다중 상속이 불가하다. 프로토콜은 클래스, 구조체, 열거형에서 채택 가능하며 다중 채택이 가능하다. -> 꼭 클래스가 아니라 구조체에서도 공통된 메서드를..

🐦 Swift 2023.06.20

[iOS/Swift] 테이블뷰 셀을 꾹 눌러야만 동작하는 이슈(Conflict UITapGestureRecognizer, didSelectRowat)

🚨 문제 인식 하단 테이블뷰 셀이 한번에 클릭이 안되고, 꾹 눌러야만 인식이 되어 tableView.rx.itemSelected (=didSelectRowAt)이 잘 동작이 되지 않는 현상이 있었다. ❗️ 문제 원인 여러 사이트를 통해 원인을 찾아보니 해당 VIewController가 상속하고 있는 BaseViewController에서 화면을 탭했을 때 키보드가 사라지게 하는 액션을 취하기 위해 추가한 UITapGestureRecognizer가 cell의 클릭을 방해하고 있었던 것으로 짐작되었는데 https://stackoverflow.com/questions/8904368/conflicting-uitapgesturerecognizer-in-uiview-and-for-uitableview Conflict..

반응형