Swift - 클로저
Swift 2022. 2. 15. 20:51

스위프트의 클로저 는 함수형 프로그래밍 패러다임을 이해하기 위해 꼭 알고 가야 하는 요소다. 클로저는 다른 프로그래밍 언어의 람다와 유사하고, 일정 기능을 하는 코드를 하나의 블록으로 모아놓은 것을 의미한다. 클로저는 함수의 한 형태이며, 사실 함수는 이름이 있는 클로저라고 할 수 있다. 클로저는 변수나 상수가 선언된 위치에서 참조를 획득할 수 있다. 이를 변수나 상수의 클로징(잠금) 이라 하며, 클로저는 여기서 착안된 이름이다. 클로저는 다음과 같이 세 가지 형태가 있다. 이름이 있으면서 어떤 값도 획득하지 않는 전역함수 이름이 있으면서 다른 함수 내부의 값을 획득할 수 있는 중첩된 함수 이름이 없고 주변 문맥에 따라 값을 획득할 수 있는 축약 문법으로 작성 기본 클로저 스위프트의 표준 라이브러리에는 ..

Swift UI - Environment 객체
Swift UI 2022. 2. 14. 21:27

Swift UI - Observable 객체 Swift UI 상태 프로퍼티 - @State Swift UI 에서 뷰의 업데이트는 뷰와 결합된 데이터를 업데이트 할 때 일어난다. 이를 위해선 데이터와 뷰 사이에 게시자 - 구독자 관계를 구축하여 할 수 있다. 이를 forstudy.tistory.com Observable 객체는 특정 상태가 앱 내의 몇몇 뷰에 의해 사용되어야 할 경우에 적절하게 사용할 수 있다. 그러나 어떤 뷰에서 다른 뷰로 이동할 때 이동할 뷰에서도 동일한 Observable 객체에 접근해야 한다면, 대상 뷰로 Observable 객체에 대한 참조체를 전달해야 한다. 다음 코드 예제를 살펴보자 struct DemoDataView : View { @ObservedObject var demo..

Swift UI - Observable 객체
Swift UI 2022. 2. 14. 19:55

Swift UI 상태 프로퍼티 - @State Swift UI 에서 뷰의 업데이트는 뷰와 결합된 데이터를 업데이트 할 때 일어난다. 이를 위해선 데이터와 뷰 사이에 게시자 - 구독자 관계를 구축하여 할 수 있다. 이를 위해서 Swift UI 는 상태 프로 forstudy.tistory.com 이전 글에서 알아본 상태 프로퍼티는 선언된 뷰나 하위 뷰에서만 사용할 수 있다. 즉 다른 뷰로 이동하거나, 부모 뷰가 사라진다면 그 상태도 사라진다. 그렇다면 여러 뷰들이 동시에 접근해야 하는 영구적인 데이터의 경우는 어떻게 처리해야 할까? 이는 Observable 객체로 해결할 수 있다. Observable 객체는 ObservableObject 프로토콜을 따르는 클래스나 구조체의 형태를 취한다. Observable..

Swift UI 상태 프로퍼티 - @State
Swift UI 2022. 2. 14. 19:17

Swift UI 에서 뷰의 업데이트는 뷰와 결합된 데이터를 업데이트 할 때 일어난다. 이를 위해선 데이터와 뷰 사이에 게시자 - 구독자 관계를 구축하여 할 수 있다. 이를 위해서 Swift UI 는 상태 프로퍼티, Observable 객체, 그리고 Environment 객체를 제공하며, 이들 모두는 사용자 인터페이스의 모양과 동작을 결정하는 상태를 제공한다. Swift UI 에서 UI 는 코드 내에서 직접 업데이트하지 않고, 결합된 데이터가 변함에 따라 자동으로 뷰가 업데이튿 된다. struct ContentView: View { @State private var wifiEnabled = true @State private var userName = "" var body: some View { } } 상..

Swift 옵셔널
Swift 2022. 2. 14. 15:06

옵셔널 (Optional) 이란 말 그대로 선택적인, 즉 값이 있을 수도 없을 수도 있다는 것을 나타낸다. 즉 프로그래밍 언어에서는 상수나 변수가 값을 가질 수도, 없을 수도(null) 있다는 것을 의미하고, Nullable 이라고도 표현할 수 있다. Swift의 모든 타입은 기본적으로 nil을 가질 수 없다. 그렇다면 어떻게 nil을 가지도록 표현할 수 있을까? 옵셔널 사용 기본적으로 Swift 에서 다음과 같이 변수나 상수를 선언하면, 해당 변수나 상수는 nil 을 가질 수 없다 var number : Int = nil //

Swift Collection - 열거형
Swift 2022. 2. 13. 20:22

열거형은 연관된 항목들을 묶어서 표현할 수 있는 타입으로, 프로그래머가 정의해준 값 외에는 추가나 수정이 불가능하다. 그렇기 때문에 딱 정해진 값만 열거형 값에 속할 수 있다. 열거형은 다음과 같은 상황에 유용하게 사용할 수 있다. 제한된 선택지를 주고 싶을 때 정해진 값 외에는 입력받고 싶지 않을 때 예상된 입력 값이 한정되 있을 때 즉 연관된 값들을 높은 가독성으로 나열하는데 특화되있으며, 실생활에서 이미 열거형으로 사용할 수 있는 개념들이 많다. 예를 들어 요일은 [월요일,화요일,수요일,목요일,금요일,토요일,일요일] 으로만 이루어져 있기 때문에, 이것을 열거형으로 만들면 해당 API 를 사용하는 프로그래머는 무조건 정의된 요일만 사용할 수 있다. 기본 열거형 스위프트의 기본 열거형은 enum 이라는..

Swift 에러 핸들링
Swift 2022. 2. 11. 12:18

프로그램이 실행되다 보면, 무조건 에러가 발생하게 된다. 예를 들어 카카오톡 같은 메신저 앱의 경우, 인터넷 연결이 계속 유지되어야 정상적으로 상대방과 채팅을 할 수 있다. 하지만 사용자가 와이파이를 끈다던가, 비행기 모드를 키는 등의 행동으로 인터넷 연결이 끊어질 경우, 네트워크 통신 시 에러가 발생하게 되며 프로그램은 그런 에러를 정상적으로 처리할 수 있어야 한다. 만약 발생 가능한 모든 에러를 처리하지 못한다면, 런타임 에러로 인해 작동 중인 프로그램이 강제로 종료될 것이다. Swift 의 에러 핸들링 Swift 는 Java 나 Kotlin 같은 언어와 거의 유사하게 에러를 처리한다. 기능 동작 중 에러가 발생할 경우 에러를 던질 수 있고 (throws), 던진 에러를 감지해서(catch) 처리할 ..

Swift 딕셔너리
Swift 2022. 2. 10. 19:45

Swift 의 딕셔너리는 자바나 일반 자료구조의 HashTable 과 동일한 개념이다. key 와 value 로 이루어져 있고, 데이터엔 순서가 없다. Hash Table 에 대해서도 포스팅을 해놓은 자료가 있으니 Hash Table 이 뭔지 잘 모르면 보고 오면 좋겠다. Hash 자료구조 - java Hash 자료구조란? key와 Value 가 쌍을 이루는 자료구조 key 탐색의 시간복잡도가 O(1) 이다. key 삭제의 시간복잡도가 O(1) 이다. key와 Value 삽입의 시간복잡도가 O(1) 이다. Hash 자료구조의 경우 검색과 forstudy.tistory.com Dictionary 란? Key - Value 쌍으로 이루어진 Collection 을 의미한다. Dictionary 의 시간 복잡도..