전체 글
-
[XCode] cannot be opened because it is in a future Xcode project file formatiOS Dev 2024. 8. 11. 04:27
이전 버전의 xcode에서 프로젝트를 열려고 하면 위 사진처럼 에러메세지를 띄운다.이 이유는 상위 버전의 xcode 사용자가 프로젝트 파일을 건들여서 그렇다. (타겟 추가, 스킴 변경, 파일 변경 등등) Q. 앗 그럼 이전 사용자도 베타로 올리면 되겠네요? A. 그러면 앱스토어에 제출을 못합니다! 허허.. 정리해보면 베타버전 사용자는 앱 심사 제출을 못하고, 이전 버전 사용자는 프로젝트를 열 수 조차 없는 난감한 상황이 생긴다.몇가지 해결 방법이 있다.1. 프로젝트를 잘 열렸던 때로 되돌리고, 작업한 내용을 수동으로 옮긴다.2. 프로젝트 파일 중 버전에 영향이 있는 부분만 대체한다. 나는 초고수가 아니기 때문에 1번 방법을 택했다.이전 버전 XCode는 아래 경로에 있는 파일을 실행하면 된다./Appli..
-
[Tuist 4.x] Tuist External Dependencies 관련iOS Dev 2024. 3. 14. 22:39
공식 홈페이지에서는 Package.swift에 external dependency를 추가해서 관리할 수 있다고 나와있다. 하지만 그대로 따라하면 안된다.. 우선 https://sunrinnote.tistory.com/187 여기를 모두 진행했다는 가정 하에 mise exec -- tuist init --platform ios 위 명령어로 프로젝트를 새로 시작한다고 가정한다. 1. Tuist 폴더 생성, Package.swift 파일 생성 원래는 init할 때 자동으로 Tuist 폴더가 생기고, ProjectDescriptionHelper 폴더가 생겼던 걸로 기억하는데, 바뀐 버전에서는 생기지 않는다. 우선 Tuist 폴더를 만들어주고, 그 안에 Package.swift 파일을 만들어준다. 파일의 내용은 ..
-
[Tuist 4.x] Tuist install이 먹히지 않을 때.iOS Dev 2024. 3. 13. 21:37
https://github.com/tuist/tuist/releases/tag/4.0.0 Tuist 3.x 버전을 주로 쓰고 있다가 Tuist 4.x 버전으로 넘어갈 때 Tuist install이 잘 안된다. 이런 경우에는 이전 버전을 삭제해야 하는데, 이전 버전을 curl로 삭제한 후 다시 깔아줘야 한다. 개발자들은 Mise를 적극 추천한다고 한다. Release 4.0.0 · tuist/tuist These release notes are longer than usual because it's a major release and we include migration guidelines. Breaking changes are prefixed with Breaking. Tuist Improved Impr..
-
[SwiftUI][Lottie] Lottie for SwiftUIiOS Dev/SwiftUI 2023. 10. 9. 02:01
https://github.com/airbnb/lottie-ios/discussions/2189 Lottie 4.3.0 now available, with official support for SwiftUI · airbnb/lottie-ios · Discussion #2189 Today we released Lottie 4.3.0. This version adds many new features, including: Official support for SwiftUI! A public Core Animation CALayer subclass Support for reduced motion Support for drop sh... github.com Lottie가 SwiftUI 대응을 해줬다. 원래 스유에..
-
[SwiftUI] Back Button Custom하기iOS Dev/SwiftUI 2023. 10. 9. 00:46
SwiftUI에서 back button을 커스텀하기 어렵다. 그럴 때는 다음 코드를 넣어주자. struct BackButton: View { @Environment(\.dismiss) private var dismiss var color: Color = .black var body: some View { Button { dismiss() } label: { Image(systemName: "chevron.backward") .renderingMode(.template) .foregroundColor(color) .shadow(radius: 2.0) .contentShape(Rectangle()) } } } struct BackButtonModifier: ViewModifier { let color: Co..
-
[Tuist][TCA] EXC_BAD_ACCESS 에러가 뜰 때iOS Dev/SwiftUI 2023. 10. 2. 02:46
Tuist에서 TCA를 사용해서 모듈을 나눌 때 뜬금없이 다음 에러가 뜰 때가 있었다. 정확히는, viewStore.send(:) 에서 뜬다. Thread 1: EXC_BAD_ACCESS (code=1, address=0x0) 메모리를 잘못 참조하고 있다는데.. 저는 코드를 다 맞게 짰는데요?! 기존 상태는 다음과 같은 상태였다. Interface에 Reducer들을 넣어두고 가장 위의 DoForest App타겟에서 Scope로 넣어줬다. 하지만 안먹힌다. 왜지?!?!??? 사실 해결하고 나서도 왜 그런지는 모르겠지만 나름 추측해보면 현재 Reducer가 담겨있는 Interface들은 dynamic framework이다. Scope으로 넣어준 Reducer와 실제 store로 사용할 때 다른 메모리 주소..
-
Apple Developer Academy @ POSTECH 3기 합격 후기iOS Dev 2023. 7. 20. 00:21
얼마 전부터 열심히 준비한 애플 디벨로퍼 아카데미 최종 발표 결과, 합격했다! (테크, 디자인, 도메인 중 테크 분야로 지원) 이제 2024년 3월부터 12월까지 포항에서 열심히 아카데미 활동을 할 예정이다. 지원 프로세스 서류 & 온라인 테스트 -> 면접 -> 최종 발표 순서이다. 기간 상 서류 제출 마감이 먼저이고, 온라인 테스트가 그 다음이지만, 합/불 여부는 서류와 온라인 테스트 결과를 합산해서 결정한다고 한다. 후기 서류, 온라인 테스트, 면접 모든 과정에서 기존에 관행적으로 해오던 모든 것들과 다르다는 느낌을 받았다. 서류에서는 Life Journey를 제출했어야 했는데, 내가 할 수 있는 것보단, 내가 어떤 사람인지를 더 궁금해하는 것 같다는 느낌을 받았다. 온라인 테스트에서는 일반적인 전공..
-
마이크로피처 아키텍처란? (µFeatures Architecture)iOS Dev 2023. 7. 15. 02:08
시작하기에 앞서, 이 글은 tuist의 µFeatures Architecture를 요약, 번역, 정리한 글임을 알림. iOS에 편향되어있음. µFeatures Architecture | Tuist Documentation based on MicroServices 주의할 점 이 아키텍처는 silver-bullet이 아님. 모든 프로젝트에 적용하려 하지 말고 적절한 곳에 잘 사용하자. 마이크로피처 아키텍처란? 마이크로피처 아키텍처는 확장성을 높이고 빌드 및 테스트 주기를 최적화한다. 명확하고 간결한 API를 사용하여 상호 연결된 독립적인 기능 구축. 마이크로 피처는 다음 5개의 타겟의 조합으로 이루어져 있다. Source : Feature 소스 코드와 이에 대한 resource (image, font, st..
-
[SwiftUI] Square Shape를 활용하여 Image 조정하기iOS Dev/SwiftUI 2023. 7. 3. 22:37
SwiftUI에는 미리 정의된 여러가지 Shape들이 있다. Rectangle(), Circle(), RoundedRectangle() 등이 있다. 하지만 Square()는 없다. 그래서 직접 Path를 만들어서 넣어주자. struct Square: Shape { func path(in rect: CGRect) -> Path { let side = min(rect.maxX, rect.maxY) return Path { path in path.move(to: CGPoint(x: rect.midX, y: rect.midY - side / 2)) path.addLine(to: CGPoint(x: rect.midX + side / 2, y: rect.midY - side / 2)) path.addLine(to:..
-
네이버 부스트캠프 웹,모바일 8기 온라인 코딩테스트 1,2차 후기기타문서 2023. 6. 24. 17:16
https://boostcamp.connect.or.kr/program_wm.html 부스트캠프 개발자의 지속 가능한 성장을 위한 학습 커뮤니티 boostcamp.connect.or.kr 평소 네이버 부스트캠프를 눈여겨보고있던 도중 모집 공고가 났다. 얼마 없는 iOS 캠프여서 꼭 해보고 싶지만 2학기는 무조건 들어야 해서 코테만 한번 보자는 심정으로 지원했다. 자소서는 10분만에 뚝딱 쓰고 제출했는데 나중에 알고보니 서류 대충 쓰면 코테 응시 기회 없다고 했다. 헉..! 그래도 다행히 코테 응시 기회는 주어졌다. 휴~ 네이버 예약 플랫폼으로 예약하는 제도이다. 오.. 신기했다..! 프로세스는 서류 -> 코테 1차 -> 코테 2차 -> 최종 합격 순이다. 1차 코테 코딩테스트 2문제, 객관식 10문제 총..