본문 바로가기

전체 글136

[Swift] UITableView, UICollectionView Last IndexPath TableView 마지막 인덱스 private extension UITableView { func lastIndexPath() -> IndexPath { let section = max(numberOfSections - 1, 0) let row = max(numberOfRows(inSection: section) - 1, 0) return IndexPath(row: row, section: section) } } CollectionView 마지막 인덱스 private extension UICollectionView { func lastIndexPath() -> IndexPath { let section = max(numberOfSections - 1, 0) let row = max(numberOfItem.. 2023. 12. 5.
[Concurrency] Sendable Swift Concurrency의 등장으로 새롭게 정의된 프로토콜인 Sendable은 Concurrency 환경에서 Data Race를 방지하기 위해 등장했다. Sendable 프로토콜은 Concurrency 환경에서 데이터를 안전하게 공유할 수 있다라고 컴파일러에게 알려주는 역할을 한다. Although this protocol doesn’t have any required methods or properties, it does have semantic requirements that are enforced at compile time. Sendable을 채택할 수 있는 상황은 아래와 같다. 1. Actor 아직 깊게 공부해보진 않았지만, 마찬가지로 Concurrency에서 등장한 Actor는 Send.. 2023. 12. 5.
[RxSwift] flatMapLatest (feat. flatMap) 2022.08.09 - [iOS/RxSwift] - [RxSwift] map vs flatMap [RxSwift] map vs flatMap 걍 가끔 헷갈려서 정리한다 map Rx 공식문서에서 말하는 map은 다음과 같다. 각 항목에 함수를 적용하여 Observable에서 내보내는 항목을 변환합니다. 얘는 간단하다. public func map (_ transform: @escaping.. limjs-dev.tistory.com flatMap 보고오십쇼 flatMap과 비교하며 알아보자 flatMap example(of: "flatMap") { let disposeBag = DisposeBag() // 1 let ryan = Student(score: BehaviorSubject(value: 80)) l.. 2022. 8. 9.
[RxSwift] map vs flatMap 걍 가끔 헷갈려서 정리한다 map Rx 공식문서에서 말하는 map은 다음과 같다. 각 항목에 함수를 적용하여 Observable에서 내보내는 항목을 변환합니다. 얘는 간단하다. public func map(_ transform: @escaping (Self.E) throws -> R) -> RxSwift.Observable Observable이 가진 요소들에 연산을 적용하고, 적용된 요소를 반환하는 것이다. 연산은 타입 변환도 해당되고, 단순한 값 연산도 해당이 되겠지 Observable .map { "\($0.name)" } .bind(to: nameLabel.rx.text) .disposed(by: disposeBag) 이런식으로 사용한다. flatMap Observable에 의해 방출된 항목을 Ob.. 2022. 8. 9.
[iOS] View Drawing Cycle (Layout까지 작성함) 혼자 그냥 멍때리는데 View를 그리며 문제 생겼던 부분들이 어떤 것이 있었을까 하고 고민하다가 그냥 심심해서 구글링하며 커스텀 뷰 이쁘장하게 되있는건 어째 구현했을랑가싶어서 구경 좀 했다. 근데 생각해보니 이쁘장한 커스텀뷰를 만들 때 뷰가 어떻게 그려지는 지에 대해 대충은 알고 있는데, 좀 깊이 살펴보며 포스팅한 것은 없는 것 같아서 공부할 겸 씀 우선 뷰가 어떻게 그려지고.. 어떻게 업데이트되며.. 레이아웃을 어떻게 잡는지에 대해서 이해하려면 Main RunLoop에 대해서 이해해야 한다고 한다. ㅇㅇ 그런가보다 하고 공부하믄되것지 뭐~~ Main RunLoop 별개로 우선 알아야 할 것은 내가 밑에서 설명할 RunLoop는 Main Thread에서 돌고있는 놈이다. 얘는 자동으로 돌고 있지만, 다른.. 2022. 8. 7.
[Xcode] 단축키 좀 써주세요... 내가 죽어라고 쓰는 것만 좀 모아봤다. 코드 관련 ⌘ + 방향키 - 줄의 맨 끝단으로 이동 ⌘ + ⇧ + 방향키 - 커서 위치로부터 줄 끝까지 선택 ⌥ + 방향키 - 단어(띄어쓰기 기준) 단위로 이동 ⌃ + i - Indent 정렬 ⌘ + / - 주석 ⌘ + "-" - Zoom out ⌘ + "+" - Zoom in ⌘ + ⌃ + 0 - Zoom Reset ⌘ + 클릭 - 액션 메뉴 ⌥ + 클릭 - Quick Help ⌘ + ⌃ + 클릭 - Definition으로 이동 ⌘ + ⌃ + E - 이름 한꺼번에 바꾸기 ⌃ + ⇧ + 클릭 - 여러 줄 선택하여 동시에 수정 Navigator ⌘ + 0 - Navigator 보이기 / 숨기기 ⌘ + 1 ~ 9 - Navigator 메뉴 순서대로 (Navigator .. 2022. 8. 6.