[Swift] Actor와 isolated에 대해 알아보자
최근 간단한 비디오 데모 앱을 개발하며 컴파일 타임 Thread Safety를 직접 경험하기 위해 Swift 6를 도입했습니다. 이전까지는 Swift가 스레드 간 전환을 자동으로 처리해 주었기 때문에, 세밀하게 동시성 문제를 신경 쓰지 않아도 되는 경우가 많았습니다. 하지만 Swift 6에서는 Thread Safety를 강화하면서 스레드 관련 경고...
최근 간단한 비디오 데모 앱을 개발하며 컴파일 타임 Thread Safety를 직접 경험하기 위해 Swift 6를 도입했습니다. 이전까지는 Swift가 스레드 간 전환을 자동으로 처리해 주었기 때문에, 세밀하게 동시성 문제를 신경 쓰지 않아도 되는 경우가 많았습니다. 하지만 Swift 6에서는 Thread Safety를 강화하면서 스레드 관련 경고...
이 글에서는 Expo 기반 앱의 QA 배포 효율을 높이기 위한 Internal Preview 워크플로우 구축 과정을 소개합니다. 특히 Expo Fingerprint로 빌드 여부를 자동 판단하고, OTA 업데이트를 효율적으로 적용하는 방법을 다룹니다. 🤔 번거로운 QA 빌드, 개선할 수 없을까? Expo로 개발하다 보면 QA 빌드 배포가 비효율적이...
최근에 팝풀의 검색화면에서 발생하는 플리커링 문제를 해결하는 과정에서 기존의 DataSource를 Diffable로 교체한 경험이 있었습니다. DiffableDataSource는 흔히 반복적인 변경이 일어나는 TableView나 CollectionView에서 많이 도입한다고 말하죠. 잦은 변경에 용이한 구조라 하면서. 하지만 실제로 Diffable...
최근 프로젝트에서 ViewController에 새로운 컨벤션을 적용하는 과정에서 self.view.addSubview(mainView) 이런 코드를 자주 보게 됐는데요. 그런데 문득 이런 방식이 기존 ViewController의 self.view 인스턴스를 낭비하는 건 아닐까 하는 생각이 들었습니다. 왜냐하면 기존 self.view는 덮어씌워...
후배와 함께 진행하는 프로젝트 중 사용자 프로필 설정 화면을 만들면서 사진을 추가하거나 제거하는 기능을 구현해야 하는 일이 있었습니다. SwiftUI를 최대한 활용하는 것이 목적이었기에, 대다수의 레퍼런스에서 사용되는 ImagePicker를 래핑하는 방식을 지양하고자 했습니다. 그래서 이를 대체하기 위해 iOS 16부터 지원되는 PhotosPick...
팝풀 프로젝트에서는 MVVM 기반으로 시작했지만, ViewModel이 점점 복잡해지고 로직이 뭉치면서 유지보수가 어려워지고 있었다. 이를 개선하기 위해 클린 아키텍처의 개념을 도입했지만, 실제로는 논리적으로만 레이어를 구분했을 뿐, 물리적인 분리 없이 코드가 뒤엉켜 있었다. 이로 인해 팀원들이 의존성 방향을 인지하지 못하고 코드를 작성하면서 결합도...
팀원들이랑 협업을 하다보면 실기기 빌드를 하거나 배포를 위해 Development용 또는 Distribution용 인증서와 프로비저닝 프로필이 필요하다. 그런데 인증서와 프로비저닝의 추출이 익숙하지 않는 개발자의 경우 프로젝트 Signing에 프로비저닝 프로필이 무더기로 쌓여있을것이다. 일반적으로 이 프로필들은 ~/Library/MobileDev...
지금 참여하고 있는 프로젝트에서 3-layer 클린 아키텍처를 도입하고 있었다. 하지만 논리적으로만 분리되어 있다 보니, 실제 구현에서는 ViewModel이 UseCase나 Repository 같은 구체 타입을 직접 의존하는 구조가 많았다. ViewModel에서 구체 구현체를 직접 생성하거나 의존하다 보니 Presentation → Domain...
팝풀 프로젝트에서 첫 배포를 마친 뒤, 본격적으로 차기 버전을 준비하면서 배포 과정을 자동화하고 싶다는 생각이 들었다. 생각의 시작은 단순했다. 빌드하고, 추출하고, 올리고… 배포까지는 수작업이 너무 많았다. 특히 애자일하게 자주 빌드하고 테스트해야 하는 상황에서는 이런 반복 작업이 흐름을 끊기게 만들고, 팀의 개발 시간도 계속 뺏길 수 있다 생각...
최근에 패키지를 설치하거나 제거하는 일이 몇번 있었는데 그럴때마다 Package Resolution Failed에러가 지속적으로 발생했다. 나한테 왜그래~~ 저기서 Add Anyway를 선택하면 어떻게든 설치는 된다 문제는 몇몇 패키지의 경우 선택해서 설치할 수 있는데 그걸 못한다는 것이다. 이번 포스팅을 통해 해당 문제를 해결했던 과정을 ...