반응형 개발15 앱 개발 시 로컬라이즈는 나중에 하자 개인 앱 개발을 결심하고 첫 앱은 라는 앱이었다. 주고받고 - 효과적인 경조사 선물 기록 앱내가 직장 동료의 결혼식에 얼마나 냈는지, 나의 결혼식에는 누가 얼마나 냈는지 궁금하시죠? 이제 더 이상 기억에 의존하지 마세요! 주고받고가 여러분의 경조사 및 선물 내역을 똑똑하게 관apps.apple.com이 앱은 보다시피 한국어 기반의 앱이고 정확히 기억은 나지 않지만 5개 언어 정도로 번역이 되어있는 상태이다.처음으로 바닥부터 쌓아올리다보니 앱 자체의 개발 기간도 굉장히 길었고 기능도 많이 넣었으며 심지어 다크 모드에 로컬라이즈까지 추가했다. 이 앱은 거의 5~6개월 정도 개발했고 뭐 예상하듯이 결과는 그리 좋지 않았고 이때 느낀 교훈을 되새기면 굳이 국내 타겟의 앱을 만들었을 필요가 있나 싶다. 특히 .. 2025. 3. 24. SwiftData의 1:N Relationship 설정 시 크래시 문제 해결 크래시 발생SwiftData를 이용한 앱을 런칭했는데 iOS 개발자들을 긴장하게 만드는 이메일이 전해집니다.저는 이 메일을 받을 때마다 심장이 두근두근 하더군요. @Model이 Swift의 매크로 기반으로 동작하다보니 에러 발생 시 자동으로 생성된 코드 블럭 내에서 콜 스택이 호출됩니다.그 종착지는 앱 내에서 Post와 유사한 역할을 하는 History 모델의 author 필드를 세팅하는 로직이었습니다.그러나, History 생성 로직 구성 후 메서드 실행 시 문제가 없었기 때문에 정말 의아한 상황이었습니다.var author: Author?{ @storageRestrictions(accesses: _$backingData, initializes: _author) init(initialVal.. 2024. 7. 22. 개인 앱 실패(?) 회고 최근에 경조사 기록 앱을 런칭했습니다. 주고받고 - 효과적인 경조사 선물 기록 앱내가 직장 동료의 결혼식에 얼마나 냈는지, 나의 결혼식에는 누가 얼마나 냈는지 궁금하시죠? 이제 더 이상 기억에 의존하지 마세요! 주고받고가 여러분의 경조사 및 선물 내역을 똑똑하게 관apps.apple.com이런저런 이유로 제작이 지연되면서 꽤나 오래 걸렸던 앱이라 스토어에 올릴 때 자식을 세상에 내보이는 마음이었습니다.근데 시장은 당연하게도 큰 반응이 오지 않습니다.어찌 보면 마케팅도 하지 않았고 제가 유명 인사도 아니라 오가닉 하게 반응이 오는 게 말이 안 되는 것인데 눈으로 직접 확인하니 더욱 쉽지 않더군요.제목에 실패라 언급했지만 아직 고도화할 기능도 많고 마케팅도 본격적으로 하지 않았기 때문에 개선할 여지가 많.. 2024. 7. 12. 이직이 정답은 아니지만 개발자 지인들과 한 잔 할 때면 항상 등장하는 주제가 있습니다. 바로 이직인데요.이직에 관해서는 정말 여러 케이스가 있고 살짝은 베일에 쌓여있는 느낌이라 항상 흥미롭고 또 알고 싶은 녀석인 것 같습니다.본인저는 이직을 연차 대비 꽤 많이 한 편입니다.학생 시절부터 연구나 학구적인 전공에 관한 내용보다는 비즈니스에 가까운 서비스 개발을 좋아했던 터라 좋은 기회로 회사 생활을 일찍 시작하게 되었습니다. 한편으로는 빠르게 돈을 벌고 싶다는 생각도 강했고요.개발은 할 줄 알았지만 개발자라는 직업에 대해서 잘 알고 진입한 것은 아니었기 때문에 처음에는 얼마를 받아야 할지도 몰랐고 협상은 할 줄도 몰라서 그냥 주는 대로 받았습니다.그렇다 보니 초봉(?)은 굉장히 낮아서 급여를 높이는 과정에서 잦은 이직을 하게 되었.. 2024. 7. 8. UIViewController의 view는 왜 UIView! 타입일까? UIViewController를 기반으로 UI를 구성할 때 기본적으로 자주 사용하는 속성은 바로 view입니다.이 view를 조금 살펴보면 UIView! 타입인 것을 확인할 수 있습니다. 이에 대한 이유를 명확히 알아보고자 view에 대해 좀 더 살펴보았습니다.view의 구성 방식view의 구성 과정을 알아보기 위해서는UIViewController 내 loadView() 메서드와 연결 지어 생각하면 되는데 view 속성의 경우 기본 값이 nil이며, nil인 상태에서 self.view 따위를 통해 접근 시(force-loading이라고 표현하기도 하네요)loadView() 메서드를 통해 view를 새로 할당하는 구조입니다.만약 직접 접근하지 않는다면 UIKit이 실제로 필요하다고 여겨지는 시점에 자동으로.. 2024. 7. 7. Flutter에서의 Hot Reload란? 일반적으로 Native iOS 혹은 Android 개발을 하다 보면 굉장히 스트레스 받는 요소는 개발적인 부분들뿐만 아니라 코드 변경 이후 빌드 시간이죠.변경한 내용에 대해 빠르게 확인해보고 싶지만 그럴 수가 없는 게 현실이며 프로젝트가 커지면 커질수록 이 대기시간은 기하급수적으로 증가하게 됩니다.따라서, 이런 부분을 정확히 알고 있는 Flutter에서 굉장히 장점으로 내세우는 기능이 바로 Hot Reload입니다. Hot Reload를 활용하면 변경 사항을 즉각적으로 확인할 수 있으며 코드의 변경 및 확인 사이클이 매우 짧아지게 되어 빠른 시도, 빠른 피드백이 가능하게 됩니다.Hot Reload기본적으로 업데이트된 소스 파일들이 Dart Virtual Machine에 주입되면 Flutter는 변경된 사.. 2024. 7. 7. 이전 1 2 3 다음 반응형