
RxSwift ? RxSwift는 비동기적으로 생기는 데이터를 completion 같은 클로저를 통해 전달하는게 아닌 return 값으로 전달하기 위해서 만들어진 유틸리티이다. completion을 사용한 비동기 처리 방식 private func downloadJson(_ url: String, _ completion: @escaping (String?) -> Void) { DispatchQueue.global().async { let url = URL(string: url)! let data = try! Data(contentsOf: url) let json = String(data: data, encoding: .utf8) DispatchQueue.main.async { completion(json)..

열거형은 관련된 값으로 이루어진 그룹을 공통의 타입으로 선언해 안전성을 보장하는 방법으로 코드를 다룰 수 있게 해준다. C나 Objective-C가 Integer 값들로 열거형을 구성한 것에 반해 Swift에서는 case값이 String, Character, Integer, Floting 값들을 사용할 수 있다. 열거형은 1급 클래스 형이어서 계산된 프로퍼티를 제공하거나 초기화를 지정하거나, 초기 선언을 확장해 사용할 수 있다. 열거형 문법 (Enumeration Syntax) enum SomeEnumeration { // enumeration definition goes here } enum 키워드를 사용해 열거형을 정의한다. enum CompassPoint { case north case south ..
Strong 해당 인스턴스의 소유권을 가진다. 자신이 참조하는 인스턴스의 retain count를 증가시킨다. 값 지정 시점에 retain이 되고 참조가 종료되는 시점에 release가 된다. 선언할 때 아무것도 적어주지 않으면 default로 strong 참조가 된다. var strongRef: StrongRef? = StrongRef() // retain count 1 증가 strongRef = nil // retain count 1 감소하면서 0이 되어 메모리 해제 Weak 해당 인스턴스의 소유권을 가지지않고, 주소값만 가지고 있는 포인터 개념이다. 자신이 참조하는 인스턴스의 retain count를 증가시키지 않는다. (release도 발생하지 않는다.) 자신이 참조는 하지만 weak메모리를 해제..

Delegate와 Notification의 차이를 알아보자. Delegate, Notification 패턴이 나오게 된 배경 종속되어 동작하는 것은 재사용성과 독립적 기능요소 측면에서 바람직하지 않다. 하나의 객체가 다른 객체와 소통은 하지만 묶이진 싫을 때 사용하기 위해 등장했다. 공통점 두 가지 패턴 모두 특정 이벤트가 발생하면 원하는 객체에 알려주어 해당되는 처리를 하는 방법이다. Delegate Delegate는 protocol로 지정된 객체가 수행해야 하는 메소드들의 원형을 정해놓은 디자인 패턴이다. 이때 Delegate 역할을 하려는 객체는 이 protocol을 따르며 원형만 있던 메소드들을 구현한다. // 1) Delegate 프로토콜 선언 protocol SomeDelegate { func..
[Swift] Generic (2) 저번 글에 이어서 제네릭에 대해서 더 알아보자 연관 타입 (Associated Types) 연관 타입은 프로토콜의 일부분으로 타입에 플레이스홀더 이름을 부여한다. 다시말해 특정 타입을 동적으로 지정해 사용할 수 있다. 연관 타입의 실 사용 (Associated Types in Action) protocol Container { associatedtype Item mutating func append(_ item: Item) var count: Int { get } subscript(i: Int) -> Item { get } } 위와 같이 associatedtype을 사용할 수 있다. 이렇게 지정하면 Item은 어떤 타입도 될 수 있다. struct IntStack: C..

제네릭에 대해서 알아보자. 제네릭은 더 유연하고 재사용 가능한 함수와 타입의 코드를 작성하는 것을 가능하게 해준다. 제네릭이 풀려고 하는 문제 func swapTwoInts(_ a: inout Int, _ b: inout Int) { let temporaryA = a a = b b = temporaryA } var someInt = 3 var anotherInt = 107 swapTwoInts(&someInt, &anotherInt) print("someInt is now \\(someInt), and anotherInt is now \\(anotherInt)") 두 Int 값을 바꾸는 함수가 있다. 두 개의 파라미터는 inout 파라미터이다. 💡 inout 파라미터는 함수 내부에서 파라미터의 값을 변경..
GCD에 대해서 알아보자! GCD Thread 갯수, 코어 갯수, 동기/비동기화 같은 기능을 쉽게 접근하여 일을 처리하는 API DispatchQueue Queue에 담긴 각 아이템은 스레드 풀에 의해 처리된다. 1. Main Main Thread에서 처리되는 Serial Queue 모든 UI 작업은 Main Queue에서 수행되어야 함 1-1. Global 전체 시스템에 공유되는 Concurrent Queue QoS 파라미터 제공한다. 1-2. Custom Serial Queue를 만들고 싶을 때 사용, Global Queue에서 실행된다. 2. Serial 이전 작업이 끝나면 다음 작업이 순차적으로 진행 2-1. Concurrent 병렬 형태로 진행 3. Sync Queue에 집어넣은 데이터들이 끝날..
RxSwift에 대해 다시 복습해보자! RxSwift 란? 관찰 가능한 연속성(순차적)형태와 함수형태의 연산자를 이용해서 비동기&이벤트를 위한 코드로 구성하고 있는 라이브러리 그동안 사용하던 cocoa코드에 결정적이고 비동기적인 방법을 이용하여 이벤트에 반응할 수 있도록 함 비동기 프로그래밍이 필요한 순간들 버튼을 눌렀을 때 반응 텍스트필드에 포커스가 잡힌 경우 인터넷에서 크기가 큰 이미지 파일을 받는 경우 HTTP 통신(네트워크 통신)을 하는 경우 디스크에 데이터를 저장하는 경우 오디오를 실행하는 경우 UIKit을 통해 비동기를 사용했던 순간 사용했던 것 NotificationCenter - 백그라운드 진입 후 몇 초 있다가 메시지 알림 Delegate Pattern - TableView의 didSel..
면접을 보러가면 클래스와 구조체의 차이점을 아냐는 질문을 많이 받는다. 분명 이전에 클래스와 구조체 정리를 한 적이 있다. 하지만 그럴 때 항상 클래스는 참조타입이고 구조체는 값 타입이다. 라고 대답을 한다. 면접 당시에는 이보다 더 명확하고 간결한 설명이 어디있나 생각하여 대답했으나 내가 면접관이였다면 너무 부실하고 원하는 대답이 저게 아닐텐데.. 라는 생각이 들었다. 그래서 더 자세히 알아보려고한다. Class와 Struct의 공통점 값을 저장할 프로퍼티를 선언할 수 있다. 함수적 기능을 하는 메서드를 선언할 수 있다. 내부 값에 .를 사용하여 접근할 수 있다. 생성자를 사용해 초기 상태를 설정할 수 있다. extension을 사용하여 기능을 확장할 수 있다. protocol을 채택하여 기능을 설정할..
차이점을 알아보기 전에 공식문서를 살펴보면서 extension은 뭔지 상속은 뭔지 먼저 알아보자. Extensions Extensions - The Swift Programming Language (Swift 5.7) Extension은 기존 클래스, 구조, 열거형 또는 프로토콜에 새 기능을 추가할 수 있다. 원본 소스코드에 액세스할 수 없는 유형을 확장하는 기능이 포함된다. 기능 계산 인스턴스 속성 및 계산 유형 속성 추가 인스턴스 메서드 및 유형 메서드 정의 새 이니셜라이저 제공 첨자 정의 새 중첩 유형 정의 및 사용 기존 형식을 프로토콜에 맞게 만들기 프로토콜을 확장할 수 있다. extension은 새 기능을 추가할 수 있지만 기존 기능을 재정의할 수는 없다. 예제 extension 선언 exten..
- Total
- Today
- Yesterday
- enumerations
- Swift
- file private
- SwiftUI
- docker
- IOS
- CodingTest
- frame과 bounds 차이
- rxswift
- Custom
- tabview
- Xcode
- Generic
- ObservedObject
- MVVM
- onTapGesture
- AWS Fargate
- Protocol
- strcut
- 의미있는이름
- OCR
- AWS
- ChatGPT
- kakao
- 카메라
- navigation
- 곰튀김
- Login
- Git
- delegate
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |