일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- IOS
- 명품cppProgramming c++
- data_structure
- MethodSwilzzling
- cleanarchitecture
- gitflow
- DependencyInjection
- GIT
- DispatchQueue
- 청년취업사관학교
- 프로그래머스
- MainScheduler.asyncInstance
- SeSAC
- DiffableDataSource
- DynamicMemberLookup
- CoreBluetooth
- 등굣길
- GCD
- RaceCondition
- Realm
- 코테
- rxswift
- 오픈채팅방
- leetcode
- swift
- MainScheduler.Instance
- MainScheduler
- SRP
- SwiftUI
- combine
- Today
- Total
목록분류 전체보기 (73)
Do.
(safari에서는 gif를 이미지를 불러올 수 없습니다. 곰탱이로 보여집니다. chrome로 봐요) Intro DiffableDataSource는 wwdc2019에서 Advances in UI Data Sources라는 이름으로 발표된 API입니다. DiffableDataSource는 기존 DataSource를 구성하는 새로운 방법으로, 복잡한 코드를 간편하고 빠르게 작성할 수 있게 해줍니다. CollectionView와 TableView에서 애니메이션 효과는 꼭 필요한 유저 경험을 제공합니다. 출현배경 CollectionView, TableView 모두 동시에 적용 되므로, CollectionView로 앞으로는 통일하겠습니다. 간단한 CollectionView 써보셨다면, 사실 크게 복잡하지 않은 앱..
Coordinator Pattern Coordinator Pattern은 Structure Design Pattern으로 View Controller간의 로직 흐름을 조직하기 위한 디자인 패턴이다. 간단하게 얘기하자면, 뷰간 화면 전환 Coordinator로 한번에 관리하겠다는 뜻이다. 5개의 컴포넌트로 이루어져 있다. 코디네이터 프로토콜: View Present, Dismiss 메소드를 정의 코디네이터 인스턴스: 코디네이터 프로로콜을 채용한 인스턴스, 뷰 컨트롤러를 어떻게 만들 것인지 알고있다. 라우터 프로토콜: View Present, Dismiss 메소드를 정의 라우터 인스턴스: 라우터 프로토콜을 채용한 인스턴스, 코디네이터와 다른 점이라면, 어디서 무엇을 보여줄 것인지가 아니라, 어떻게 보여줄 것..
Access Controler(접근제어) Reference by Swift Apprentice 프로그래밍시 프로퍼티나 메소드, 이니셜라이저 기타 유형 등을 이용해서 Swift 타입을 선언하고 이러한 요소들을 합쳐 API 인터페이스를 구성한다. 코드가 복잡해지고 인터페이스를 제어하는 과정에서 일명 도우미 메소드를 인터페이스 내부에서 사용하는 경우가 있다. 외부에서 이 인터페이스를 사용할 때는 이러한 도우미 메소드는 숨기는 것이 구현의 복잡성을 숨길 수 있다. 또 이 숨겨진 내부 상태는 공개 인터페이스가 항상 유지해야 하는 불변성을 유지하게 하는 일명 캡슐화로 알려진 기본적인 소프트웨어 설계 개념이다. 접근 제어가 없다면? 은행 라이브러리를 작성하고 있다고 가정하자, 해당 라이브러리는 다른 은행이 뱅킹 소프..
소개 SwiftGen을 간단하게 소개하자면 이해하기 쉽게 시나리오로 설명을 해보려고 한다. Assets 카탈로그에 Icons, Image, Color등을 정의하고 이를 프로젝트에서 사용하기 위해서는 각각의 생성자 (Color로 예를들자면 UIColor(named:) 를 통해 Asset에 지정한 문자열 상수를 넣어 불러와야 한다. let customColor = UIColor(named: "customRed")! 해당 방법은 문자열을 하드코딩 한다는 점에서, 실수가 발생할 여지가 있고, 또 런타임에 에러가 결정되기 때문에 컴파일 타임에 해당 실수를 잡아내기 어렵다. 그래서 보완책으로 아래 처럼 사용해볼 수 있었다. enum Constans: String { let customRed = "customRed"..
Firebase Auth에서 제공하는 전화번호 인증해보기 1. 사전작업 우선 Firebase Auth 전화번호 인증은, Slient Push Notification을 이용해 토큰을 보내기 때문에 Push Notification을 사용하는 것과 동일하다. 따라서 아래의 준비가 필요하다. 유료 애플 개발자 계정 Xcode Project Setup Apple Developer Member Center Identifier 유료 애플 개발자 계정 앞서 말했지만, 유료 애플 개발자 계정을 필요로 한다. Xcode Project Setup Push Notification을 받는 것이기 때문에 Xcode 설정이 필요하다. Project - Target - Signing & Capabilites - Push Notifi..
WWDC2021가 발표한지는 한참 지났지만, 정리해보는 UIButton, iOS15.0의 버튼이 특별히 달라지는 것은 아니지만, 기존에 서브클래싱 등으로 해결해야 했던것을 Configuration을 통해 제공해주는 것이 핵심이다. Basic Style iOS15.0 UIButton은 기본 4가지 스타일을 제공한다. Plain Gray Tinted Filed 전통적인 UIButton은 다음과 같을 것이다. let button = UIButton(type: .system) button.setTitle("Sign In", for: []) 여기에 Basic Style을 적용하는 방법은 아래와 같다. let button = UIButton(type: .system) button.setTitle("Sign In",..
Concurrency(동시성) 동시성 프로그래밍이라고도 한다. Concurrency는 여러 작업을 나누어서 처리하는 것으로, 우리가 사용하는 아이폰이 노래도 재생하면서, 유저의 입력에 따라 이메일도 작성할 수 있고, 중간에 전화도 받을 수 있는 것이 이 동시성이다. 만약 노래를 재생하는 동안은 화면을 터치할 수 없고, 인터넷 검색도 불가능하다면, 굉장히 불편할 것이다. 코드로 실제로 어떻게 되는지 보자 //1 func calculatePrimes() { for number in 0...1_000_000 { let isPrimeNumber = isPrime(number: number) print("\(number) is prime: \(isPrimeNumber)") } } //2 func isPrime(n..
Function Notation은 함수를 표시하는 법을 뜻한다. func viewDidLoad() 뷰 컨트롤러에 viewdidLoad라는 메서드가 있다는 것은 다들 알 것이다. 이를 표기할때는 `viewDidLoad()` 로 표시하면 된다. 인자가 있는 함수의 경우는 어떨까? 다음은 SceneDelegate에 있는 메서드 중 하나이다. func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) 이런 경우는 어떻게 써야할까? 복사 붙여넣기 해서 길에 늘여써야 할까? 아니다 swift 에서는 이를 scene(_:willConnectTo:options:..