본문 바로가기
반응형

ios9

앱 개발 시 로컬라이즈는 나중에 하자 개인 앱 개발을 결심하고 첫 앱은 라는 앱이었다. ‎주고받고 - 효과적인 경조사 선물 기록 앱‎내가 직장 동료의 결혼식에 얼마나 냈는지, 나의 결혼식에는 누가 얼마나 냈는지 궁금하시죠? 이제 더 이상 기억에 의존하지 마세요! 주고받고가 여러분의 경조사 및 선물 내역을 똑똑하게 관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.
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.
SwiftUI에서 Custom navigation 설정 시 Swipe back 활성화하기 배경SwiftUI에서 커스텀 네비게이션 바를 만들고 사용할 때, .toolbar(.hidden)을 사용하여 iOS에서 일반적으로 표시되는 기본 네비게이션 바를 비활성화하면 iOS에서 흔히 사용되는 스와이프 백 제스처도 비활성화됩니다.이 제스처를 다시 활성화하려면 UIKit의 UINavigationController에 아래와 같은 코드를 추가해야 합니다.extension UINavigationController: UIGestureRecognizerDelegate { open override func viewDidLoad() { super.viewDidLoad() interactivePopGestureRecognizer?.delegate = self } pub.. 2024. 7. 7.
크로스 플랫폼 개발의 진짜 장점 최근 많은 스타트업들이 앱 개발을 위해 React Native (RN)와 Flutter를 활용하고 있습니다.초기 단계의 스타트업들은 개발 자원이 한정되어 있기 때문에 각 플랫폼마다 네이티브 개발자를 고용하는 것이 큰 부담이 됩니다. 따라서 크로스 플랫폼 프레임워크를 채택하는 것은 자연스러운 선택처럼 보입니다.단일 코드베이스로 iOS, Android, 웹 등 여러 플랫폼을 커버할 수 있는 능력은 매우 매력적인 기능입니다. 비록 실제로는 플랫폼별로 약간의 코드가 필요할 수 있지만요.저는 iOS 모바일 앱 개발자로서 이 트렌드에 관심을 가지지 않을 수 없었고, 초보 수준이지만 두 프레임워크 모두를 사용해 보았습니다.앞서 언급했듯이 호환성은 큰 장점이고, 채용 관점에서 보면 특히 React Native는 프론트.. 2024. 7. 5.
반응형