본문 바로가기

분류 전체보기137

[Swift] VisionKit OCR VisionKit을 사용한 OCR 기술 구현이미지 분석 등의 과정을 처리할 핸들러 구현 let handler = VNImageRequestHandler(cgImage: cgImage, options: [:])// Request 클로저 내부에서 해야할 동작 구현let request = VNRecognizeTextRequest { request, error in }  VNImageRequestHandler내 사용되는 VNImageOption은 분석할 이미지의 추가적인 정보를 제공할 수 있음 VNImageOption.cameraIntrinsics:이미지가 촬영된 카메라의 내부 매개변수(camera intrinsic matrix)를 제공예를 들어, 얼굴이나 물체의 깊이, 크기 등을 분석할 때 카메라 렌즈의 초점.. 2024. 10. 7.
[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.