본문 바로가기

분류 전체보기

(469)
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..
VSCODE 로 visual studio 의 c/cpp 프로젝트 소스코드를 볼 때 인코딩이 깨진다 visual studio 로 만든 C/CPP 프로젝트를 vscode 로 둘러보며 살펴보고 싶은데, 주석의 한글 등이 깨져보였다. 이유는 visual studio 에서는 소스코드의 기본인코딩을 cp949/euckr (또는 각 윈도우의 언어 기본인코딩) 으로 하여 저장되어 있고, visual studio code 는 utf-8 을 기본으로 열기 때문이다. 간단히 하나의 파일만 보려면, vscode 하단 바에 UTF-8 이라는 부분을 한번 클릭하여, Reopen with Encoding 에서 원하는 인코딩을 선택하면 된다. 하지만, 여러 파일을 둘러보는 상황이어서, 특정 프로젝트에 대해서 하나하나 볼 때마다 수작업으로 볼 수는 없었다. vscode 의 전체설정에서 파일인코딩을 cp949 로 바꾸어 버리면, 다..
[Spare Room Tech] 너무 좋은 5개의 Mac 무료 유틸리티 https://www.youtube.com/watch?v=9ZrhbjD80to OnyX : 시스템 관리 유틸리티, 매우 강력하고 기능도 많다. NightOwl : 시스템의 다크모드를 토글해주는 간단한 유틸리티. Unarchiver : 알집 포맷까지 지원하는 3rd 파티 압축해제 툴 ImageOpim : 이미지파일의 용량 줄여주는 툴. AppCleaner : 앱을 삭제할 때, 다른 구성요소까지 삭제해 줌.
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..