본문 바로가기

전체 글231

Closure의 capture list 사용법 제대로 알기! Closure에서 사용하는 capture list를 제대로 사용하려면, 먼저 Closure 블록 내에서 사용(캡쳐)하는 객체의 타입을 알아야 한다. 1. Value type captureValue type은 값이 capture 되는 시점의 copy를 만든다. 아래 두 예시를 보면 쉽게 이해할 수 있다. 첫번째 예시를 보면, queue로 보낸 실행 block이 1초 이후에 실행되고, 그 안에서 'count' 변수를 사용한다. 해당 block이 실행되기 이전에 count가 10만큼 증가했으므로, block이 실행될 때는 이미 10 증가가 반영된 count 값이 print문에 찍히게 된다. // Value typefunc test() { var count = 0 DispatchQueue.main.as.. 2025. 11. 14.
Cursor 한국어 깨짐 문제 해결 방법 컴퓨터 작업할 때는 인코딩의 번거로움 때문에 영어를 사용하는 일이 대다수이지만, 간혹 한국어가 사용된 파일을 열어보면 문자가 깨지는 경우들이 있습니다. Cursor로는 mark down 문서 작성도 간간히 하면서 한국어도 썼던 터라 한국어 표시에 문제가 있는 지 전혀 몰랐었는데, 이번에 학교 과제로 미리 작성된 파일을 열어보다가 아래와 같은 깨짐 현상을 발견했습니다. 한국어 안 쓰고 싶다며 한탄하고 싶지만 할 일을 해내는 것이 먼저이므로.. 조용히 방법을 찾아나갔습니다. 우측 하단을 보면 소스파일이 어떠한 방식으로 인코딩되어 있는 지 나오는 부분이 있습니다. 제 경우에는 UTF-8으로 되어있었습니다. UTF-8을 누르면 상단 command 입력창이 나오는데, 옵션들 중에서 'Reopen with Enc.. 2025. 10. 19.
addTarget(_:action:for:)의 target과 selector UIButton이나 UIDatePicker와 같이 UIControl을 상속하는 객체들은 `addTarget(_:action:for:)` 메서드를 사용할 수 있습니다. 이 메서드는 UIControl 객체가 어떠한 동작을 수행하게 할 지 명시해줄 때 이용합니다. 메서드 시그니쳐는 아래처럼 생겼습니다.@MainActorfunc addTarget( _ target: Any?, action: Selector, for controlEvents: UIControl.Event 여기에 나온 target과 action의 Selector가 어떠한 것들을 의미하는 지 알아보겠습니다. Target Target 파라미터로 넘겨주는 객체는 action이 호출되는 객체입니다. 조금 더 쉽게 말해보면, action 파라미터로 넘겨.. 2025. 9. 18.
UIScreen, UIScene, UIWindow 개념 정리! UIScreenUIScreen은 iOS, iPadOS, tvOS에 attach된 하드웨어 스크린에 대한 정보를 나타내는 객체이다. 내장된 디스플레이(예, iOS라면 핸드폰 스크린)나 연결된 외부 display(예, tvOS에서 연결된 tv)에 대한 정보를 가지고 있다. 이 객체를 직접적으로 만들어서 사용할 일은 없고, UIWindow 객체를 통해 얻어서 사용하면 된다. UIScene앱의 UI를 나타내는 하나의 객체(즉, app instance)로, 한개 이상 만들 수 있다. (iOS13 이상)-> 프로그래밍 할 때 객체라는 개념을 많이 사용하죠? 앱 자체의 객체를 UIScene이라고 하고, 이 객체를 여러개 생성해서 사용할 수 있습니다. 한 앱의 UIScene이 여러개 만들어졌을 때, 각각의 객체들은 메.. 2025. 9. 12.
SDK version issue. This app was built with the iOS 17.4 SDK. All iOS and iPadOS apps must be built with... 에러 해결법 개인적으로 XCode Cloud를 이용해서 굉장히 편리하게 CI/CD를 하고 있습니다.최근에 오랜만에 앱을 업데이트 하려고 archive하던 중에 아래와 같은 에러를 마주치게 되었습니다.SDK version issue. This app was built with the iOS 17.4 SDK. All iOS and iPadOS apps must be built with the iOS 18 SDK or later, included in Xcode 16 or later, in order to be uploaded to App Store Connect or submitted for distribution. 저는 분명히 Xcode 16.X를 사용하고 있기 때문에 생길 수 없는 문제인데, 이상하다 싶었습니다. 그.. 2025. 8. 7.
dynamic lookup 런타임에 class, structure, enum, protocol의 멤버들에 이름으로 접근 가능하도록 할 수 있는 attribute. 쉽게 표현해서, '.'을 이용해 멤버에 접근할 수 있는 기능을 제공하는 것. 아래의 예시에서처럼 'DynamicStruct'라는 struct에 @dynamicMemberLookup를 붙여주면, 'subscript(dynamicMember:)' method를 작성해주어야 한다. 예시에서는 subscript의 parameter를 dictionary의 key로 이용해서 value를 획득하는 형식이다. @dynamicMemberLookupstruct DynamicStruct { let dictionary = ["someDynamicMember": 325, .. 2025. 7. 22.
networkd_settings_read_from_file Sandbox is preventing this process from reading networkd settings file at "/Library/Preferences/com.apple.networkd.plist", please add an exception. networkd_settings_read_from_file Sandbox is preventing this process from reading networkd settings file at "/Library/Preferences/com.apple.networkd.plist", please add an exception. 위와 같은 에러 발생 시 Project page / Signing & Capabilities / App Sandbox 경로로 들어가서 Outgoing Connections (Client)에 체크표시 해주기. ---참고 자료https://stackoverflow.com/questions/66299338/making-network-request-from-ios-app-extension-r.. 2025. 7. 19.
Metal을 이용하여 이중 for loop 연산 빠르게 처리하기(1) 이번에 카메라 피드로 받아오는 rgb pixel들을 실시간으로 연산해야 하는 작업을 처리해야 했는데, 어떻게 하면 빠르게 할 수 있을까 고민을 하다가 Metal을 이용하게 되었습니다. 이번 기회에 Metal을 이용해보면서 알게된 사항들을 정리해보았습니다.Metal은 GPU를 이용해서 그래픽 연산이 많은 종류의 앱, 대표적으로 게임 혹은 3D 이미지 처리 그리고 머신러닝에도 이용될 수 있는 프레임워크입니다. GPU 연산의 핵심은 병렬처리 입니다. 여러개의 thread가 동시에 일을 처리하는 것입니다. 일꾼을 여러 명 사용해서 작업을 처리하기 때문에 처리해야 할 양이 많은 연산을 할 때 더욱 빠르게 작업을 완료할 수 있게 되는 것입니다. For loop 연산 대체하기처음 사용해보는 프레임워크였지만, Ap.. 2025. 7. 9.
OMV 설치가 중간에 막힌다면 보세요 (+Raspbian 10번 넘게 재설치한 사람..) 최근 NAS 서버 제작에 욕심이 생겨서 라즈베리 파이를 이용해 직접 만들게 되었는데, 잘 몰라 고생했던 부분이 있어 공유하고자 합니다.많은 사람들이 주로 사용하는 Open media vault를 이용하기로 하였고, 이 프로그램은 raspbian 설치 후에 '간단하게 설치'해서 사용할 수 있습니다. (제가 참고했던 유튜브 및 블로그에서는 다들 간단하게 하시더라구요. 😂) '간단하게 설치'해서 바로 사용할 수 있는 것 같은데, 이 설치가 제 발목을 잡았었습니다😱. Raspbian 설치 때도 우여곡절이 있어서 OS를 지웠다 설치했다를 n회 반복해서 이미 지친 상태였는데, omv는 설치 중간에 자꾸만 진행이 멈췄습니다. omv 설치 막바지에 설치 시 이용되었던 프로그램들을 삭제하는 과정이 있는데, 그 중 '.. 2025. 6. 29.
반응형