본문 바로가기

분류 전체보기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.
반응형