Swift, iOS Foundation(26)
-
[iOS] Swift의 UI 작업은 반드시 Main Thread에서 동작해야한다?
Swift의 UI 작업은 Main Thread에서 동작해야한다!아요 개발하다가 한 번쯤 아래와 같은 보라색 경고를 보신 적이 있을 겁니다.해당 상황의 경우에는,"오직 메인 스레드 (main thread only)에서만 사용할 수 있는 UIKit의 속성"을 "다른 스레드에서 접근"했기 때문에 발생했습니다.꼭 아래의 UIViewController 속성이 아니더라도,UIView, UINavigationController 등 UI, 즉 화면을 담당하는 객체 관련 코드가 메인 스레드가 아닌 다른 스레드 접근을 시도할 경우에화면과 동일한 보라색 스레드 경고를 표출하게 될 겁니다.UIKit 공식문서를 들어가봐도 Important 칸에 별도로 강조하면서 설명하고 있습니다."UIKit 클래스는 오직 메인 스레드 혹은 메..
2025.04.07 -
[Swift] some, any 제대로 구분해서 사용하기 (Opaque and Boxed Protocol Types in Swift)
오랜만에 Swift 문법 글로 돌아왔습니다!Swift는 타입을 숨기기 위한 두 가지 흥미로운 방법을 제공하고 있습니다.불투명한 타입 (Opaque Types)이라고 불리는 some과, 박스형 프로토콜 타입 (Boxed Protocol Types)이라 불리는 any가 그것이죠.오늘 글에서는 최신 트렌드에 해당하는 이 두 문법 개념 (some과 any)에 대해서 이해해보는 시간을 가져보도록 할게요!각 문법 개념이 무엇인지 자세하게 설명해보고,두 개년은 어떤 차이점이 있는지, Swift는 왜 이 문법을 도입하게 되었는지, 그리고 실전에서는 어떻게 활용할 수 있는지까지 함께 살펴보도록 하겠습니다. 불투명한 타입 (Opaque Types)some은 불투명한 타입 (Opaque Type)을 나타내기 위해 Swift..
2025.02.26 -
[Swift] 스위프트의 프로토콜 지향 프로그래밍 POP (Protocol-Oriented Programming)
1. Swift의 OOP (Object-Oriented Programming)와 POP (Protocol-Oritented Programming)Apple은 과거의 Swift를 프로토콜 지향 언어 (Protocol-Oriented Language)라고 소개한 적이 있습니다.객체 지향 프로그래밍 (OOP: Object-Oriented Programming) 패러다임을 따르는 객체 지향 언어라는 말은 들어본 적이 있어도,프로토콜 지향 프로그래밍 (POP: Protocol-Oriented Programming)을 따르는 프로토콜 지향 언어라는 말은 다소 생소할 것 같은데요.처음 이 내용을 들었을 때 저는 아래와 같은 질문들이 머릿속에 떠올랐습니다.그럼 프로토콜을 지향하는 언어 Swift는 객체 지향 프로그래밍..
2024.12.31 -
[SPM] Swift 라이브러리를 만들어보자 (1) - Package의 개념과 배포 과정 (feat. Creating Swift Packages)
1. Swift Package와 SPM (Swift Pacakge Manager)Swift Package는 Swift에서 모듈식으로 코드를 관리하고 배포할 수 있도록 제공하는 개념입니다. Swift Package는 단순히 이번 글에서 만들고자 하는 라이브러리뿐만 아니라, 프레임워크, 실행가능한 모듈로서 분리, Swift 매크로 등 다양한 코드 묶음을 만들 수 있는데요.이렇게 작은 묶음으로써 코드를 프로젝트 내에 분리하는 이유는 그 무엇보다 "다른 여러 프로젝트에서 재사용되는 코드를 효율적(의존성 관리, 버전 관리 등)으로 활용할 수 있다는 점"이 가장 큽니다.*흔히 사용하던 서버 통신 라이브러리 Alamofire와 Moya, 이미지 캐싱 라이브러리 Kingfisher, AutoLayout을 도와주는 Sn..
2024.12.27 -
[Swift] KVO (Key-Value Observing) 완전 정복하기 (feat. WKWebView progressBar)
예전 WKWebView를 구현하는 글의 마지막 부분이었던 "KVO를 사용해서 웹 페이지 로딩 상태 프로그레스바로 나타내기" 코드를 이번 글에서는 리팩토링하는 내용과 함께 KVO (Key-Value Observing) 개념에 대해 완전 정복해보도록 하겠다.WKWebView에 관한 자세한 내용이 궁금하다면 아래 링크를 타고 읽어보는 것도 ^__^ [WebKit] WKWebView를 사용해서 앱 사용 중, 웹으로 연결시켜보자1️⃣ 이번 글에서 구현하고자 하는 기능은?이번 글에서는 URL 링크를 저장하고, 해당 링크를 앱 안에서 웹 페이지로 띄울 때 사용한 모든 기능들에 대해서 정리해보겠다.이번 프로젝트에서 앱mini-min-dev.tistory.com KVO (Key-Value Observing)가 뭔데?KV..
2024.10.01