
async & await을 알아보면서 콜백지옥을 어떻게 해결하는지 이해해 보자.콜백 지옥을 알아보기 전 클로저를 잘 모른다면 참고해도 좋다. [Swift] - 클로저(Closure)iOS 면접 준비를 위한 3탄이다. Swift에서 중요한 개념인 클로저에 대해 알아보자. - 아래 링크 참고 더보기https://github.com/JeaSungLEE/iOSInterviewquestions질문 리스트1. Swift에서 클로저(Closure)란 무엇이며steelbeartaeng2.tistory.com 1. 콜백 지옥 completion handler를 사용한 예시를 하나 생각해 보자. 이렇게 completion handler를 사용한 함수가 두 개일 때 doubleNumber를 실행하고 값이 있는 경우에만 ..

개인 앱 프로젝트를 진행하는데 서버와 통신이 필요한 기능이 있고, 구현해야하는 기간이 짧았다.여기서 직접 서버를 구축하고 운영하는 것은 시간과 비용, 그리고 유지보수 부담이 된다고 판단하여 Google Firebase를 백엔드로 채택하게 되었다.1. Firebase 프로젝트 만들기 Firebase | Google's Mobile and Web App Development Platform개발자가 사용자가 좋아할 만한 앱과 게임을 빌드하도록 지원하는 Google의 모바일 및 웹 앱 개발 플랫폼인 Firebase에 대해 알아보세요.firebase.google.com Firebase 홈페이지에서 프로젝트 만들기를 해준다. Firebase에서 AI 지원해 주는 건데 나는 사용하도록 했다. Firebase를 쓰..

NavigationStack에서 화면 전환을 구현할 때 일반적으로 NavigationLink를 많이 사용하는데, 이 컴포넌트는 전환 대상인 뷰를 미리 생성하는 방식이다. 아직 화면 전환을 하지 않았더라도 다음 뷰가 이미 메모리에 로드된 상태가 된다. 내가 구현한 화면에서는 전환 대상 뷰 내부에 무거운 연산과 네트워크 요청이 포함되어 있었고, 이로 인해 초기 진입 시 뷰 빌드에 시간이 오래 걸리며 성능 저하가 발생하는 문제가 있었다. 실제로 화면 전환을 하지 않아도 해당 뷰가 생성되기 때문에 불필요한 자원 낭비가 발생했던 것이다. 이러한 문제를 해결하기 위해, 해당 뷰가 실제로 필요할 때에만 생성되도록 LazyView를 적용하게 되었다.NavigationLink의 동작 방식에 대해 이해하고 LazyView..

프로젝트를 진행하면서 깃헙에서 충돌이 자주 발생했었다. 만약 팀원 A가 파일 추가하고, 팀원 B가 설정을 변경했을 때 둘 다 .xcodeproj 파일에 영향을 주어 충돌이 발생했다.또한 팀원이 프로젝트 설정을 변경했을 때 .pbxproj 파일은 XML 형식으로 나타나서 PR 리뷰를 하기 어려운 문제가 있었다. 추가적으로, 프로젝트에서 CocoaPods로 의존성 관리를 했지만, 팀원이 CocoaPods 사용 중인 것을 깜빡하고 SPM을 사용하면 두 의존성 관리 도구가 충돌해서 오류가 발생하는 상황도 있었다. 정리하자면 다음과 같은 문제가 있었다. xcodeproj 충돌 발생.pbxproj 파일의 코드 확인 어려움spm과 cocoapods 충돌 발생이 문제들을 해결하기 위한 방법으로 Tuist라는 툴을 알게..

ChatGPT와 대화할 수 있는 앱을 만들어보고 싶어서 서버를 구축해보려고 한다. AI를 직접 만들어서 적용하기에는 너무 공부할 내용이 많아져서 일단 ChatGPT를 사용해서 AI 모델을 앱에서 사용하는 방법을 알아보자.1. 서버 구축 배경 API 키를 PC에서 요청할 때마다 사용해야 하는데, 이 키가 유출되면 매우 위험하다. 왜 유출되면 위험할까?→ API 키가 유출되면 누구나 이를 이용해 API를 무단으로 사용할 수 있으며, 과금이 발생하거나 서비스가 악용될 위험이 있기 때문이다. 그래서 iOS에서 직접 GPT 서버에 요청하지 않고, iOS와 GPT 서버 사이에 중간 서버를 두는 방법을 택하려고 했다.이렇게 하면 iOS에서 API 키를 관리하지 않고, 중간 서버에서 API 키를 관리해 더 안전해진다...

이 블로그는 팀원 중 한명인 찢다님 의 도움을 받아서 구현하였습니다. 해당 블로그에서는 개발 중인 프로젝트에서 API 서버와 소켓 서버를 모두 구현하면서 발생한 두 서버 간 인증 로직 상충 문제를 해결하는 과정을 다룬다.1. 문제 파악 1️⃣ 채팅을 보내던 중 사용자 인증 오류가 발생한 경우 채팅을 3개 보냈을 때, 첫 번째와 두 번째 메시지는 정상적으로 전송되었지만, 세 번째 메시지는 401 오류로 인해 전송이 실패하는 경우가 있다.이때, 이는 네트워크 오류가 아니라 사용자 인증 실패로 인해 발생한 문제다. 하지만 사용자는 인증 오류를 인지하지 못한 채, 보낸 메시지가 순서대로 정상적으로 도착할 것이라고 예상한다. 그러나 실제로 소켓 서버에는 첫 번째와 두 번째 메시지만 전달되었고, 세 번째 메시지를..

팀 프로젝트로 앱을 만들어서 앱스토어 심사를 받았는데 다음과 같은 문제로 심사를 통과하지 못했다. 원인을 찾아보니 Google Analytics로 사용자의 행동을 추적하고 있었는데 사용자의 동의 없이 사용자의 행동을 추적하는 것이 문제라고 한다. 그래서 한번쯤 다들 봤을 앱 추적 권한 요청을 사용자로부터 받아야한다. 바로 이거다. ㅎㅎ 1. 권한 설정 1️⃣ info.plist 파일에 권한 설정 info.plist의 key 값에 Privacy - Tracking Usage Description을 추가하고, value에는 권한을 요청할 때 사용자에게 보여줄 하단 문구를 입력한다. (~이(가) 다른 회사의 앱 및 웹사이트에 걸친 사용자의 활동을 추적하도록 허용하겠습니까?) 상단의 이 문구는 고정이라서 ..

이전 포스팅에서 해결 못한 상태로 끝났던 문제를 드디어 해결했다!! [Swift] - fastlane + GitHub Actions CI 구축(2)fastlane 설치와 작동법에 이어서 GitHub Actions에 대해 알아보자. [Swift] - fastlane + GitHub Actions CI 구축(1)📖 목차1. CI가 무엇인가2. 왜 fastlane + GitHub Actions를 사용하는가3. fastlane 설치 및 실행 1. CI가steelbeartaeng2.tistory.com 1. 여러 문제 마지막으로 해결 문제 1️⃣ - pod 파일 오류 위와 같이 pod 파일을 못 찾는 오류가 있었다. 로컬 환경에서는 필요한 파일들이 이미 빌드된 상태이기 때문에 Fastlane으로 테스트 ..