목적: SwiftUI 에서 TextInput 이 있는 Alert 를 띄워주기 위함. 결론: 기본적으로 아직까지는 SwiftUI 에서 커스텀 팝업을 만들려면 아래 링크에 소개된 방법 외에는 어려워보인다. 하지만 목적에 언급된 TextInput 이 있는 Alert 의 경우는 다음과 같이 하면 된다. struct ContentView: View { @State private var presentAlert = false @State private var username: String = "" @State private var password: String = "" var body: some View { Button("Show Alert") { presentAlert = true } .alert("Login", ..
URLSession vs Alamofire https://cau-meng2.tistory.com/115 https://www.avanderlee.com/swift/alamofire-vs-urlsession/ https://velog.io/@heyksw/iOS-Moya-Alamofire-URLSession-%EB%B9%84%EA%B5%90 Alamore fire 를 사용하는 것이 좋아보인다.
references: https://dev.to/paulallies/clean-architecture-in-the-flavour-of-swiftui-55-jo2 https://paulallies.medium.com/clean-architecture-in-the-flavour-of-swiftui-5-5-8430786a83 https://betterprogramming.pub/ios-clean-architecture-using-swiftui-combine-and-dependency-injection-for-dummies-2e44600f952b https://gon125.github.io/posts/SwiftUI를-위한-클린-아키텍처/ https://github.com/nalexn/clean-architect..
계정 통째로 이전은 안되고 단일 앱을 이전해야 하며 이전하는 측과 받는 측 모두 수락하고 앱 소스와 바이너리는 따로 이전협의 하고 이전받는 측에서 배포해야한다. 게임센터 나 앱 수출 규적에 문제 없다면 3 시간 안에 처리되며 앱을 이전할 수 없는 경우는 해당 앱을 새롭게 생성해서 올려야 한다. - 다른 개발자의 iTunes Connect 계정으로 App을 이전할 수 있나요? 예. 귀하의 App이 이전 가능한 상태이면 언제든지 다른 개발자에게 iTunes Connect를 통해 귀하의 App을 이전할 수 있습니다. App의 소유권을 이전하더라도 App Store에서 App을 사용할 수 있습니다. 모든 등급 및 심사가 이전되며 귀하의 고객은 모든 사용 가능한 App 업데이트에 그대로 액세스할 수 있습니다. -..
ios 코어가 좀 특이한 형태 같다. ios 코어가 정말 잘 만들어진 형태이면서 원래 이것이 최초가 아니었나 싶다. 다른 것들이 ios 를 참고해서 따라한 것 같아 보인다. 굉장히 잘 만들어진 거 같기두 하지만... 사용하기엔 조금 복잡성은 있는 듯 하다. 이 복잡한 것을 이 정도로 녹여내었다는 것이 대단하다. nodejs 는 코어가 이벤트루프에 단일스레드 기본이라 가장 간단하다. 보통 운영체제는 멀티쓰레드가 기본인데, nodejs (js 진영) 는 기본적으로 단일쓰레드에 이벤트루프로 Task 를 던져서 순차적으로 처리하는 방식인데 ios 는 GCD 랑 Operation 이라는 것으로 이벤트루프 비슷한 방식을 적용하면서도 그것을 멀티쓰레드에 적용을 하였다. UI 를 다루고 async 한 동작이 많아서 그..
iOS : AutoResizing, AutoLayout, SwiftUI, UIKit iOS 의 선언형 UI 로는 Swift UI 가 있다. 가장 일반적인 것은 스토리보드를 이용하는 것. 스토리보드로 하는 것을 숙지했다면 iOS 에서 기본 제공하는 코드로만 UI 짜는 방법을 학습하면 된다. 그리고 스냅킷 같은 써드파티는 검색하면서 컨셉 알아가면서 사용하면 된다. 스토리보드 vs 코드 vs 스냅킷... 이런 쉐어는 거의 3:3:3 으로 비슷하다. 프로젝트 별로 사용 여부에 따라 따라가면 된다. 스토리보드를 아예 안 쓸 수도 있고 화면전환만 안쓸 수도 있고 오토레이아웃을 안 쓸 수도 있고 모든 것이 선택사항이다. 스토리보드를 안쓰면 코드 타이핑 할 때 마다 디자인이 화면에 반영이 안되서 보고 싶을 때마다 빌드..
00 오리엔테이션 0.1 이 책에 대해서 0.2 Xcode 의 구조와 활용 0.2.1 Xcode 각 영역과 명칭 0.2.2 Xcode 브레이크 포인트 다루기 0.2.3 Xcode 뷰 계층 디버깅하기 0.2.4 스토리보드 미리보기(Preview) 사용하기 0.2.5 협업 및 이력 관리를 위한 소스 컨트롤 기능 사용하기 01 기본 기능 다루기 1.1 프로젝트 생성 및 메모장 인터페이스 설계 1.1.1 프로젝트 생성 및 기본 설정 1.1.2 메모 목록 화면 구성 1.1.3 오토 레이아웃 설정 1.1.4 메모 작성 화면 구성 1.1.5 상세 화면 구성 1.1.6 커스텀 클래스 생성 및 객체 연결 1.2 메모 앱 기능 구현 1.2.1 데이터 모델 작업 1.2.2 MemoFormVC 클래스 작성 1.2.3 Memo..
01 첫 번째 iOS 앱 만들기 1.1 첫번째 앱, Hello World! 1.1.1 Xcode 프로젝트 생성 1.1.2 프로젝트 설정 1.1.3 프로젝트 구성과 스토리보드 1.1.4 스토리 보드로 화면 구성하기 1.1.5 화면 전환 구현하기 1.1.6 스위프트 코드 작성하기 1.2 시작 화면 제어하기 1.2.1 시작 화면 편집 1.2.2 새로운 시작 화면 파일로 교체하기 02 iOS 앱의 구조와 코코아 터치 프레임워크 2.1 앱의 기본 구조 2.1.1 엔트리 포인트와 앱의 초기화 과정 2.1.2 MVC 패턴 2.1.3 앱의 상태 변화 2.2 iOS 와 코코아 터치 프레임워크 2.2.1 iOS 2.2.2 코코아 터치 프레임워크 2.3 앱을 구성하는 핵심 객체들 2.3.1 iOS 유저 인터페이스의 표현 구..
하이브리드앱으로는 다음과 같은 것들이 유명하다. React NativeIonic (Capacitor, Cordova)PWA with CordovaFlutter 이 중 Flutter 와 Ionic 을 추천한다. 아니다 막상 해보면 난 리액트 네이티브가 가장 좋아보인다.Ionic 을 사용한다면 React 를 사용할 것이고 Typescript 를 사용할 것인데웹을 함께 고려하여 만든다면 React Ionic 으로 기술을 통일하여 생산성을 증가 시키는 것도 좋을 것이다.하지만 기본적으로 Typescript 는 Javascript 에 타입을 만들어 사용하는 것이기에 그러한 부분을 고려하지 않는다면 애초에 타입이 있는 dart 를 사용하는 Flutter 가 나을 수 있다. UI 와 네이티브와 연결하는 메소드 채널 ..
https://developer.apple.com/documentation/uikit/app_and_environment/managing_your_app_s_life_cycle Apple Developer Documentation developer.apple.com https://developer.android.com/guide/components/activities/activity-lifecycle?hl=ko 활동 수명 주기에 관한 이해 | Android 개발자 | Android Developers 활동은 사용자가 전화 걸기, 사진 찍기, 이메일 보내기 또는 지도 보기와 같은 작업을 하기 위해 상호작용할 수 있는 화면을 제공하는 애플리케이션 구성요소입니다. 각 활동에는 사용자 인터페 developer...
https://blog.codemagic.io/environments-in-flutter-with-codemagic-cicd/ https://github.com/codemagic-ci-cd/codemagic-sample-projects/tree/main/flutter/flutter-flavors-demo-project https://medium.com/@animeshjain/build-flavors-in-flutter-android-and-ios-with-different-firebase-projects-per-flavor-27c5c5dac10b https://docs.flutter.dev/perf/app-size#reducing-app-size * Run Debug By default, flutter ..
➜ ~ cd Library/Developer/CoreSimulator/Devices ➜ Devices find $PWD -name "some.db" -print /Users/mac/Library/Developer/CoreSimulator/Devices/8AA28206-8291-4682-84E2-962D4B72B4C3/data/Containers/Data/Application/D7B4B60F-1101-4D96-B7E0-8DB7E1AAD69B/Documents/some.db
Lower Camel Case: function, method, variable, constant Upper Camel Case: class, struct, enum, extension /// for logging - print - dump: description property 까지 출력. /// String Interpolation import Swift let age: Int = 10 print("Hello! I am \(age) years old") print("Hello! I am \(age + 1) years old") /// constant: let, variable: var let name: type = value var name: type = value type 이 명확하다면 type 은..
https://www.apple.com/kr/newsroom/2021/09/apple-will-open-developer-academy-in-pohang-city-next-year/ Apple은 Apple Developer Academy를 내년 포항에 개소할 예정이다 Apple Developer Academy와 Apple 최초의 제조업 R&D 지원센터는 한국 개발자와 중소기업, 학생들을 지원하기 위해 포항에 Apple이 새로이 단행하는 주요한 투자의 일환이다. www.apple.com https://www.joongang.co.kr/article/25009933#home 세계 최초로 애플 두곳 들어선다…포항공대, R&D·개발자 아카데미 '둥지' 제조업에 특화한 세계 최초 애플 제조업 R&D 지원센터와 미..
UI 는 Main Thread 에서 갱신을 관리한다. UI 갱신이 한 업데이트 사이클에 우선적으로 이루어져야 할 경우 GCD 의 DispatchQueue.main.async {} 를 사용할 수 있다. 아래는 viewDidLoad, viewWillAppear 등과 같은 일반적으로 사용하는 UIView 의 메소드들 외에 좀 더 내부적으로 디테일한 방식의 메소드들을 설명해놓았다. 기본적으로는 Main Run Loop (위에 언급한 GCD Main Thread) 에서 UI 의 갱신을 담당한다. 이곳에 무거운 연산로직을 넣을 경우 화면이 멈출 수 있다. DispatchQueue.main.async { 이곳에 무거운 연산로직을 넣지 말라. } 화면 갱신이 먼저 수행되어야 할 것을 넣어주어야 한다. 이벤트 큐가 있어..
이 글에서 언급된 함수형 프로그래밍 방식이 최신의 트렌드인 것으로 생각하였지만 iOS 개발을 하며 잘못됨을 인지. React 와 함수형 프로그래밍 Functional Programming vs OOP 함수형 개발방식은 하나의 옵션일 뿐이다. 위의 글에서 언급된 객체지향개발방식 + 쓰레드 의 문제로 지적한 부분이 객체지향방식으로 개발을 했을 때 추상화를 위해서 메소드를 정의하는데 해당 메소드가 어떤 동작을 하라는 명령형 방식이되고 그럴 경우 해당 명령형 메소드가 동작을 할 때 선점형 방식인 쓰레드에서 동작할 것이고 그럴 경우 어떤 컴포넌트의 state 에 영향을 미칠 때 여러군데에서 부수효과가 발생할 경우 해당 state 에 대해 의도치 않은 오류를 야기할 수 있을 것 같다고 문제 제기를 하였다. 하지만 ..
React Native 는 React 의 철학 중 Learn once, Write everywhere 에 맞게 모바일 앱 개발에 있어서도 View 단의 라이브러리를 제공하고 이를 중간에서 연결해주는 브릿징 기술을 제공한다. React Native 는 Android 와 iOS 의 네이티브 모듈의 기능을 가져와 사용할 수 있다. (다른 OS 도 가능하다) 이러한 기능을 제공하는 것이 NativeModules 이며 이는 iOS 에서는 RCTBridgeModule 이라는 프로토콜을 구현한 Objective-C 클래스이다. 아직 타입이라던가 지원이 잘 안되는 네이티브 기능들도 있는데 TurboModules 라는 것이 나오게 되면 개선될 것이라 한다. 업그레이드에 대비하자. 현재는 React Native 의 경우 ..
pod 를 업그레이드 후에 pod install 시에 다음과 같은 경고 문구를 만날 수 있다. [!] Your project does not explicitly specify the CocoaPods master specs repo. Since CDN is now used as the default, you may safely remove it from your repos directory via `pod repo remove master`. To suppress this warning please add `warn_for_unused_master_specs_repo => false` to your Podfile. 이 이슈와 연관이 있다. git 기반의 MasterSource 대신 CDN 기반의 Trun..
왜 React Native 가 좋은가? Android / Ios Native 를 Java, Kotlin, Swift 를 통해서 개발한다고 생각해보자. 단순히 한 화면에서 다른 화면으로 전환하며 데이터 전달을 한다고 할 때 간단히 보면 아래와 같다. 논리적으로나 복잡도에서나 react native 가 가장 단순하고 논리적이라 할 수 있다. 또한 안드로이드나 Swift 네이티브의 경우 구현을 하려면 꽤나 성가신 것을 알 수 있다. 간단한 화면 전환에서 데이터 전달을 함에 있어 인텐트, 액티비티, 세그웨이, 뷰컨트롤러 등의 고차원적 개념과 이를 각 문법에 맞게 그들 특유의 방식에 맞추어 공을 들여 구현해야 하고 또한 이런 간단한 의도를 코드로 구현하고자 함에 있어 여러가지 고려하고 생각해야할 것들이 많아 상당..