프로젝트를 생성할 때 User Interface를 SwiftUI로 지정하면 ContentView가 생성됩니다. ContentView.swift를 살펴보면 View를 상속받은 ContentView구조체가 있습니다. 앱이 시작되면, 윈도우는 ContentView.swift에 정의된 ContentView의 인스턴스를 보여줍니다. 그리고 아래에는 PreviewProvider을 상속받은 ContentView_Previews구조체가 있습니다. PreviewProvider은 엑스코드에서 뷰 미리보기를 제공하는 타입 프로토콜입니다. 만약에 이 코드가 없다면 당연히 캔버에는 아무것도 나타나지 않습니다. 디폴트로 제공하는 프리뷰 구조체를 수정해보면 더 나은 프리뷰를 이용할 수 있습니다. 다크 모드로 사용하려면 아래와 같이..
typealias는 기존에 선언되어있는 타입에 새로운 타입의 별칭을 선언해 사용하는 것입니다. 선언하는 방법은 아래와 같습니다. typealias name = existing type typealias를 사용하면 코드를 이해하기 쉽게 만들며 명확하게 해 줍니다. 라고 설명은 되어있지만 사실 typealias는 개개인마다 생각하는 게 다른 것 같아요. 어떤 개발자는 typealias를 많이 사용하며, 또 어떤 개발자는 더 복잡하게 만든다며 사용하길 꺼려하는 경우도 있습니다. 예를 들어 NetworkManager라는 클래스가 있습니다. 깃헙의 유저를 가져오는 함수가 있다고 가정합시다. class NetworkManager { let baseURL = "https://api.github.com/users/" ..
프로퍼티는 컴파일러가 자동 생성하는 접근자 메서드를 제어할 때 사용 원자성 자동 생성된 접근자 메서드는 기본적으로 메서드가 원자적으로 동작하게 만드는 데 락을 포함한다. 속성을 nonatomic으로 하면 락이 사용되지 않는다. Atomic 속성이 없더라도 명시적으로 원헀을 경우를 대비해 컴파일 에러 없이 원자성이 적용된다. 스스로 접근자 메서드를 정의하는 경우는 메서드가 원자적으로 동작하도록 구현해야 한다. 읽기/쓰기 read/wrtie 게터 세터 모두 사용한다. 프로퍼티가 자동 생성될 경우 컴파일러는 두 메서드 모두 생성한다. readonly 게터만 사용한다. 그리고 컴파일러는 프로퍼티가 자동 생성될 때에만 게터를 생성한다. 프로퍼티를 외부에 일기 전용으로 공개하고 싶을 때 사용할 수 있으나 클래스 확..
깃에 있는 프로젝트를 다운로드하으니 정체불명 커밋들이 생겼다. 왜 추적을 못하지 🤨싶어서 일단 커밋을 때렸다. 여기서부터 불안감의 시작 그래도 열심히 작업을 하고... 새 기능을 마무리해 머지를 하려고 하니 에러가 발생했다. 에러 내용은 추적 불가로 덮혀써진다. The following untracked working tree files 뭐 overwritten - - 깃은 한글 지원이 안된다. 프로젝트에 한글 파일명이 포함되어 있었고 그로인해 문제가 발생했던 것. 이거 때문에 몇 시간을... 고생했다. 해결 방법은 저장소를 다 지우고, 다시 깃에서 클론을 딴다. 깃에서 클론을 따면 이전과 동일하게 정체불명 커밋들이 생긴다. 이때 아무런 작업도 하지않고 터미널을 열어준다. 해당 위치로 이동하고 git c..
재택근무가 장기화되고 있네요. 저는 항상 아카이빙을 할 때 핸드폰 기기를 통해 아카이빙을 했었던 지라 시뮬레이터로 할 수 있었는지 궁금했는데 할 수 있다고 하더라고요 - 띠용 그래서 어떻게 하는지 알아보겠습니다. 과연 핸드폰 없이 아카이빙 하는 방법은 Xcode에서 Product탭을 클릭해줍니다. 그럼 아래와 같이 Run, Test, Profile 등등 나오죠. 제가 원하는 건 Archive입니다. 하지만 지금은 시뮬레이터를 선택해놓은지라 위와 같이 Archive탭이 활성화되어 있지 않습니다. 그럴 땐 기기 선택하는 창으로 와서 Build Only Device섹션 보이시나요 망치 모양 🔨(방향은 반대..) 이걸 선택해주세요. 그리고 다시 Product를 눌러보시면 오 마이 갓 아카이브 탭이 '활성화'된 ..
다국어(localization지역화) 처리를 할 때 시뮬레이터로 언어와 지역을 설정하면 훨씬 더 수월하게 처리할 수 있습니다. 먼저 시뮬레이터를 켜주세요 😊 시뮬레이터에서 각 앱들이 영어로 뜨는 이유는 - 디폴트로 시뮬레이터 언어는 영어로 지역은 미국으로 세팅되어 있기 때문입니다. 여기서 Settings으로 들어와 줍니다. 설정 앱이죠 :-) 설정에 들어오면 General를 탭 해주세요. 들어오시면 Language & Region을 탭 해주세요. 아까 시뮬레이터는 디폴트로 언어는 영어 지역으로는 미국이라 했죠. 보시다시피 iPhone Language에 English Region은 United States로 설정되어 있음을 확인할 수 있습니다. 여기서 우리는 지역을 미국에서 한국으로 변경해줘야 합니다. R..
key path는 프로퍼티에 대한 read - only 접근을 제공합니다. key path를 사용하는 방법은 \ 시작으로 베이스 타입을 쓰고 프로퍼티명을 작성합니다. (Root) -> Value를 \Root.value로 사용할 수 있는 기능이다. 예를 들어서 User타입이 있고 안에는 4개의 프로퍼티가 정의되어 있다고 가정합시다. struct User { let name: String let age: Int let bestFriend: String? var canVote: Bool { age >= 18 } } 우리는 구조체의 인스턴스를 생성하고 그것을 배열에 넣을 수 있습니다. let eric = User(name: "Eric Effiong", age: 18, bestFriend: "Otis Milbur..
Combine 프레임워크의 핵심 컨셉들은 Publisher Subscriber Operator이다. Publisher values와 error들이 생성되는 방법을 정의한다. 값 타입이다. subscriber의 등록을 가능하게 한다. publisher은 프로토콜이다. associatedtype Output과 Failure로 이루어져 있으며, func receive(_ subscriber: S) where S.Input == Output, S.Failure == Failure이 있다. Subscriber values와 completion을 받는다. 레퍼런스 타입이다. Subscriber은 프로토콜이다. associatedtype Input과 Failure로 이루어져 있으며, func receive(subsc..
- Total
- Today
- Yesterday
- 책 추천
- Algorithm
- 딥러닝
- Animation
- 문자열
- 책 후기
- SWIFT
- 머신러닝
- Deep learning
- 책
- ReactiveX
- leetcode
- string
- iOS SwiftUI
- objc
- swift5
- RX
- 알고리즘
- 스위프트
- 스위프트UI
- ios
- stanford SwiftUI
- swiftUI
- objective-c
- wwdc
- Xcode
- 애니메이션
- ARC
- 독서
- rxswift
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |