본문 바로가기

프로그래밍

(353)
VSCode Swift Formatter 설정 2023년 9월 현재, vscode 에는 두개의 스위프트 포매터 익스텐션이 있는 것 같다. apple-swift-format 과 SwiftFormat. apple-swift-format 을 써왔었는데, 인덴트가 2로 포맷했다. 개인적으로 가독성이 안 좋았고, xcode 로 열어서 다시 편집하면 4 스페이스로 포맷을 해서, 쓸데없는 변경점이 만들어졌다. 그런데 인덴트를 설정하는 걸 잘 모르겠더라. --- 그래서 SwiftFormat 으로 설정하였다. brew install swiftformat 으로 우선 포매터 프로그램을 설치하고 (SwiftFormat 익스텐션은 swiftformat 이라는 커맨드라인 툴을 이용한다.), vscode 익스텐션들 중에 SwiftFormat 을 찾아서 설치하고 활성화한다. 이..
SIL ( Swift Intermediate Language ) 스위프트 중간 언어 스위프트 컴파일러가 .swift 소스파일을 컴파일하는 과정은 스위프트 언어를 스위프트 중간언어(swift intermediate language)로 우선 만들고, 이것을 다시 llvm IR ( intermediate representation ) 으로 바꾸고, 마지막으로 기계어를 생성하는 단계를 거친다. .swift 소스에서 변환된 SIL 을 보려면 swiftc 를 이용하여 -emit-sil 옵션으로 컴파일 하면 된다. swiftc -emit-sil .swift 아주 간단한 Point 스트럭쳐를 선언하여, 이를 sil 로 변환하면 다음과 같다. struct Point { let x:Int let y:Int } struct Point { @_hasStorage let x: Int { get } @_hasS..
macOS 파인더 빠른동작 메뉴에 "vscode 로 열기" 추가하기 윈도우에서는 vscode 가 설치되면 explorer 컨텍스트 메뉴에 자동으로 vscode 로 열기가 추가되어서 편리했던 것 같다. macOS 에서는 이 메뉴가 없어서 매우 불편했다. 그래서 설정하려고 찾아보니, finder 의 "빠른동작"으로 vscode 로 열기를 추가하는 방법이 있었다. https://thehotcode.com/macos-open-with-vscode-finder/ Add "Open with Visual Studio Code" in Finder Quick actions in MacOS If you already have a Windows computer, a nice feature when Visual Studio Code is installed is that… thehotcode...
SwiftUI] StateObject, Published, ObservableObject https://www.hackingwithswift.com/books/ios-swiftui/sharing-swiftui-state-with-stateobject swiftui 에서 struct 인스턴스 변수는 간단한 @State 로 (내부 프로퍼티의) 변경을 감지하여 UI에 반영할 수 있다. 하지만 class 인스턴스 변수는 @State 를 붙여도 내부 프로퍼티의 변경을 감지하지 못한다. class 의 내부 프로퍼티의 변경을 감지하도록 하는 방법은 다음과 같다. 1. 외부에서 변경을 감지하려는 클래스의 프로퍼티에 @Published 를 붙여준다. class User { @Published var name: String = "Micky" @Published var age: Int = 10 } 2. view..
[유튭링ㅋ] Mastering Concurrency in iOS 인도형의 유튜브 강좌. 발음이 좀 거북하지만, 매우 잘 정리해 준다. Mastering Concurrency in iOS - Part 1 (Concurrency, GCD Basics) https://youtu.be/X9H2M7xMi9E Mastering Concurrency in iOS - Part 2 (Dispatch Queues, Quality of Service, Attributes) https://youtu.be/yH0RBTdNi3U Mastering Concurrency in iOS - Part 3 (Dispatch Group, Dispatch Work Item) https://youtu.be/SGEWlYB6ZM0 Mastering Concurrency in iOS - Part 4 (Dispat..
[Swift] 가장 간단한 Actor 샘플코드, Actor Counter swift concurrency 에 actor 라는 개념이 있다. 가장 간단하게 actor 를 사용하는 예제를 만들어 보았다. ( with a little help of gpt ) 횟수를 카운트 하는 매우 간단한 카운터 class/actor이다. 카운터를 생성해서, 동시에 수행되는 두 태스크에서 동시에 카운팅이 이루어진다. import Foundation actor MyActorCounter { var counter = 0 func incrementCounter() { counter += 1 } } class MyClassCounter { var counter = 0 func incrementCounter() { counter += 1 } } func testActorCounter() async -> V..
SWIFT 기초] 배열 슬라이싱 python과 swift 비교 >>> l = list(range(10)) >>> l [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> l[:3] [0, 1, 2] >>> l[3:7] [3, 4, 5, 6] >>> l[7:] [7, 8, 9] 위와 같은 파이썬에서의 슬라이싱을 swift 에서는 다음과 같이 할 수 있다. 39> let l = Array(0.. l[0.. l[3.. Array(l[7...]) $R25: [Int] = 3 values { [0] = 7 [1] = 8 [2] = 9 } 43> l[7..
macOS Xcode 에서 한글입력 특이사항 간단하게 이름과 나이를 입력받아 출력해 주는 C 프로그램이다. 간단히 실행한 내용은 다음과 같다. 이름을 입력하세요. : 홍길녀 나이를 입력하세요. : 18 나의 이름은 홍길녀 이고, 나이는 18 입니다. 이름의 바이트 길이는 24. 이름[00:03] = e1 84 92 = ᄒ 이름[03:06] = e1 85 a9 = ᅩ 이름[06:09] = e1 86 bc = ᆼ 이름[09:12] = e1 84 80 = ᄀ 이름[12:15] = e1 85 b5 = ᅵ 이름[15:18] = e1 86 af = ᆯ 이름[18:21] = e1 84 82 = ᄂ 이름[21:24] = e1 85 a7 = ᅧ 리눅스 등에서 일반적으로 utf-8 의 한글은 한음절이 3바이트로 인코딩되는데, 위 결과를 보면, 자모 하나 당..