여기서 some 이 opaque type var body: some View {} 배열을 업캐스팅해서 각 아이템들을 다르게 보여주어야 할 경우 1. 각각을 명시적으로 클린하게 단순 pure 하게 만들고 Any 타입으로 해서 루프를 할 것인가, 2. opaque type 으로 some 상위 로 해서 여러타입의 하위들이 리턴되도록 루프를 할 것인가. 우선은 1 번이 깔끔하고 편하고 좋아보인다. https://bbiguduk.gitbook.io/swift/language-guide-1/opaque-types
목적: 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 를 사용하는 것이 좋아보인다.
SwiftUI Menu https://seons-dev.tistory.com/entry/SwiftUI-Menu-%EB%B2%84%ED%8A%BC%EC%9D%84-%EB%88%8C%EB%A0%80%EC%9D%84-%EB%95%8C-%EB%A9%94%EB%89%B4%EB%A5%BC-%ED%91%9C%EC%8B%9C SwiftUI Menu 로 Dropdown Menu 만들기 https://www.youtube.com/watch?v=dCt4SBNSfE4 https://medium.com/@zhuoshengjiang_26468/how-to-implement-a-dropdown-button-in-swiftui-239cf1bd8e8c ios pulldown button (생각하는 그것) & popup button (..
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...
➜ ~ 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 은..
인공지능(AI)은 아직도 스스로 민주화할 수 없기 때문에, 모두가 사용할 수 있도록 도움을 줄 것 래트너는 구글의 엔지니어 디렉터로 취임해 구글이 개발한 기계 학습 엔진 '텐서플로(TensorFlow)' 관련 개발에 종사할 것이라고 전했다. 텐서플로는 2015년 11월에 오픈 소스화해 무료로 공개되어 있으며, 래트너가 참가하게 된 구글 브레인은 인공지능 프로그래밍 절차를 간소화하기 위한 텐서플로의 개발 부문이기도하다. 텐서플로는 이전에 사용된 클로즈드 소스인 '디스트빌리프(DistBelief)'의 역할을 거의 대체해 구글의 서비스 연구 및 생산에서 사용되고 있으며, 구글을 지탱하고 있는 핵심 기계 학습 라이브러리의 하나로 자리매김했다.
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 에 대해 의도치 않은 오류를 야기할 수 있을 것 같다고 문제 제기를 하였다. 하지만 ..
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..