🫠 String은 왜 index가 까다로울까?항상 String을 사용하다 보면 아래와 같이 반복문은 쓸 수 있는데 index로 접근하지 못할까?라는 생각을 많이 해봤다.아래와 같이 특별한 index로 접근해야 접근이 가능하다. 왜 굳이 복잡하게 이렇게 되어있을까? 궁금했다.🔤 가변길이 인코딩우선 이것을 생각해보기 전에 문자의 용량에 대해서 알아보고자 한다. "Hello, 👋" 의 길이(용량)는 얼마일까? 아래처럼 프린트해 보면 11이 나온다. 엇 잠깐? 일단 "Hello, 👋" 의 길이는 8인데 왜 11이라는 숫자가 나온걸까?하나하나 출력해 보면 마지막 손바닥이 4이다. 여기서 숫자는 16진수 두 자리로 된 byte라고 볼 수 있다.하나의 String에 여러 용량을 가진 요소들이 저장되어 있구나를..
WWDC24 영상아래의 영상에 아주 잘 설명이 나와있으므로 참고하면 좋을 것 같다. SwiftUI essentials - WWDC24 - Videos - Apple DeveloperJoin us on a tour of SwiftUI, Apple's declarative user interface framework. Learn essential concepts for building apps in SwiftUI, like...developer.apple.comSwiftUI의 특징SwiftUI는 다음과 같은 세가지 특징이 있다. 선언적, 구성적, 상태 중심의 특징을 가지고 있다. 아래와 같이 원하는 뷰를 행을 추가하거나 제거하는 작업 없이 UI를 만들 수 있다. pets가 업데이트 된다면 자동으로 행이 변경..
갑자기?SwiftUI의 기본중에 기본이라고 할 수 있는 @State, @Binding에 대해서 다시한번 짚어보고 싶어서 포스팅을 남긴다.기본 설명아래와 같이 초 간단한 뷰를 만들어봤다.조금 특이한(?) 점은 아래와 같이 상위 뷰에서 하위 뷰에 count를 전달할 수 있다.struct ContentView: View { @State private var count = 0 var body: some View { List { Section("Content View") { Stepper("\(count)", value: $count) } Section("Counter View..
Swift의 do, try, catch 구문은 에러 처리를 위한 구문이다. 보통 아래와 같은 형태를 많이 발견할 수 있다. do { // 예외가 발생할 수 있는 코드를 포함하는 블록 try // 예외가 발생할 수 있는 작업을 호출 } catch { // 예외가 발생했을 때 처리할 코드 } 코드 실습 아래와 같은 코드가 있다고 해보자. fetch 함수는 "Fetched" 를 반환하는 함수이다. 이 함수는 throws 를 통해 에러를 던지는 함수라는 것을 알 수 있다. isActive 를 받아서 false 면 에러를 던진다. enum fetchError: Error { case unknown case network } func fetch(_ isActive: Bool) throws -> String { if..
Swift 를 사용하면서 본인도 모르게 self. 를 많이 사용했을 것이다. self 는 말그대로 나 자신! 이라는 뜻을 가지고 있다. 그렇다면 [weak self] 는 무엇일까? 실습을 통해 아주 간단하게 맛보기만 보려고 한다.약한참조간단하게 ARC 에 대해서 설명해 보자면, Swift에서는 ARC(Automatic Reference Counting, 자동 참조 카운팅)를 사용하여 객체의 메모리를 관리한다. 이 참조를 약한 참조(weak)로 만들면 참조 카운트가 증가하지 않는다. ARC 에 의해서 참조 카운팅이 0 이 되었을때 메모리에서 해제가 되는데 강한 참조가 걸려있으면 카운팅이 0 이 되기전까지 해제되지 않는다. 예시코드기본 구조아래같이 Navigate 버튼을 누르면 다음뷰로 가고 다음뷰는 He..
지난 시간 지난 시간에는 GCD 의 종류에 이어서 DispatchGroup, DispatchWorkItem, Semaphore 까지 다양한 방법으로 비동기 작업을 할 수 있는 방법에 대해서 알아보았다. 하지만 이러한 비동기 처리를 하게 되면 발생되는 문제들이 있다. 이번 포스팅에서는 문제들을 역시나 간단하게 알아보려고 한다. (심화과정은 제가 더 공부해야 할 것 같아요) [Swift] GCD/Operation 알아보기 3 - DispatchGroup 지난시간 지난시간엔 GCD 종류에 대해서 알아보았다. 메인큐, 글로벌큐, 커스텀큐 이렇게 세종류가 있는데 이러한 것들을 묶을 수 있고, 그 그룹이 끝나는 시점을 알고싶을때 사용하는 것이 Dispat swift-library.tistory.com Thread-..
지난시간 지난시간엔 GCD 종류에 대해서 알아보았다. 메인큐, 글로벌큐, 커스텀큐 이렇게 세종류가 있는데 이러한 것들을 묶을 수 있고, 그 그룹이 끝나는 시점을 알고싶을때 사용하는 것이 DispatchGroup 이다. 아주아주 간단하게 설명할 것이므로 심화학습은 추후 실제 사용해보면서... [Swift] GCD/Operation 알아보기 2 - GCD 종류 지난 포스팅 지난 포스팅에서는 동기, 비동기, 직렬, 동시에 대해서 알아보았다. 그리고 iOS 에서는 작업을 분산시킬 때 Queue 라는 대기행렬에 보낸다는 것까지 알게 되었다. [Swift] GCD/Operation 알아 swift-library.tistory.com DispatchGroup 여러 비동기 작업이 완료될 때까지 대기하거나 완료 되었을때..
지난 포스팅 지난 포스팅에서는 동기, 비동기, 직렬, 동시에 대해서 알아보았다. 그리고 iOS 에서는 작업을 분산시킬 때 Queue 라는 대기행렬에 보낸다는 것까지 알게 되었다. [Swift] GCD/Operation 알아보기 1 - 동기, 비동기, 직렬, 동시, 병렬 GCD 에 대해서 제대로 공부해 보고자 한다. 말로만 GCD 많이 들어봤지 실제로는 음... 모른다고 하는 게 맞는 것 같다. 2024년을 맞이하여 (?) 제대로 공부해보려고 한다! 그전에 동기, 비동기 개념을 swift-library.tistory.com 그렇다면 Queue 에는 GCD(Grand Central Dispatch) 와 Operation 두종류가 있는데 먼저 GCD 에 대해서 공부해 보겠다. 그중에서도 GCD 의 종류에 대해..