Swift 71

Swift - 커스텀 폰트 적용 방법 및 활용 방법

1. 폰트 다운로드폰트를 적용하기 위해서는 폰트 파일을 가지고 있어야 함폰트 파일은 .ttf, .otf 파일이 존재하는데 otf 파일이 애플에서 개발한 저장 방식!.ttf 파일을 사용해도 무관함폰트 다운로드https://noonnu.cc/font_page/pick: 무료 폰트 다운로드 사이트 눈누 이용구글링 → “~ 폰트 다운로드” 하면 웬만하면 나옴 2. 폰트 추가Xcode에서 프로젝트 내 폰트 폴더를 만들고 폴더 내부에 파일 저장 (드래그 앤 드롭)  3. Info.plist 설정Info.plist에서 “Fonts Provided by application” 추가이후, item에 폰트 이름을 넣어주기  4. 폰트 적용4-1. 커스텀 폰트로 사용할 enum 타입 정의public enum CustomFo..

Swift 2025.01.05

Swift - 클로저의 캡처 파해치기 (값 타입, 참조 타입의 동작 차이)

클로저(Closure)코드에서 사용할 수 있는 독립적인 코드블록으로 함수와 동일하게 사용하나 이름이 없는 익명함수로 사용 가능함참조 타입으로, 힙에 저장되며 ARC가 메모리를 관리함캡처 기능을 사용일급 객체로 취급함수의 참조를 저장하거나 변수에 할당 가능다른 함수에 매개변수로 전달 가능함수에서 반환 가능 클로저 기본 구문{ (매개변수 목록) -> 반환 타입 in 실행 코드}매개 변수 목록 : 클로저가 사용하는 입력 값반환 타입 : 실행 결과로 반환되는 값의 타입in : 클로저 헤더(매개변수 목록, 반환 타입)와 본문을 구문예제let multiplyClosure = { (a: Int, b: Int) -> Int in return a * b}let result = multiplyClosure(4,..

Swift 2024.12.11

Swift - GCD (Grand Central Dispatch)

GCD (Grand Central Dispatch)Apple이 개발한 멀티스레드 프로그래밍을 쉽게 구현할 수 있도록 제공하는 프레임워크효율적인 동시성(concurrency) 처리를 지원하며 주로 비동기 작업 관리에 사용됨 GCD의 특징저수준 스레드 관리스레드 생성 및 관리를 시스템이 자동으로 처리함개발자는 직접 스레드를 생성하거나 종료할 필요 없이 작업 큐에 태스크를 제출하면 됨작업 큐 (Task Queue) 기반작업은 큐에 추가되며, 시스템은 적절한 스레드 풀을 사용하여 태스크를 실행함FIFO(First In, First Out) 순서를 따르며, 우선순위에 따라 실행 순서를 조정함성능 최적화GCD는 CPU 코어 수에 따라 태스크를 효율적으로 분배함필요한 만큼의 스레드만 생성하여 리소스 낭비를 방지비동기..

Swift 2024.12.10

Swift - Dispatch를 이용한 성능 개선

디스패치(Dispatch)프로그램이 메서드나 함수를 호출할 때 호출 대상(함수, 메서드)을 어떤 방식으로 결정하고 실행할지를 정의하는 메커니즘성능 최적화, 코드 실행 방식, 다형성과 밀접하게 관련됨 Static Dispatch vs Dinamic Dispatch1. 정적 디스패치 (Static Dispatch)메서드나 함수의 호출이 컴파일 타임에 결정됨주로 값 타입(struct, enum)이나 final로 선언된 클래스의 메서드에서 사용컴파일러가 호출할 메서드를 미리 결정하므로 인라인(inline) 최적화가 가능하며, 호출 속도가 매우 빠름→ 컴파일 시점에 호출 대상이 결정되고 런타임에서 바로 실행되기 때문에 성능이 우수함 2. 동적 디스패치 (Dynamic Dispatch)메서드나 함수의 호출이 런타임..

Swift 2024.12.09

Swift - ARC (Automatic Reference Count) 정리 및 강한 순환 참조 해결

ARC(Automatic Reference Counting, 자동 참조 카운팅)Swift에서 힙(Heap) 영역에서 메모리 관리를 자동으로 수행하는 메커니즘앱의 메모리 사용량을 효율적으로 관리하여 객체가 더 이상 필요하지 않을 때 메모리를 해제함 클래스 객체 생성 할 때의 ARC 매커니즘1. 클래스 객체 생성클래스 객체가 생성되어 Heap에 올라오면 ARC는 자동적으로 클래스 객체를 참조하는 수를 관리함객체가 생성될 때, ARC는 해당 객체에 대한 참조 카운트를 1로 설정 2. 객체 참조 추가객체를 다른 변수나 상수에 할당하거나, 다른 객체에서 참조할 때마다 참조 카운트 증가  3. 객체 참조 삭제참조하는 객체가 해제될 때마다 참조 카운팅이 자동으로 감소시킴  4. 객체 메모리 해제참조 카운팅이 0이 되..

Swift 2024.12.08

Swift - Struct와 Class 선택과 차이점

Struct와 Class: Swift에서의 선택과 차이점Swift를 공부하다 보면 Struct와 Class를 어떻게, 언제 사용해야 할지 고민되는 순간이 옵니다. 이 글에서는 두 타입의 공통점과 차이점, 그리고 상황에 따라 어떤 타입을 선택해야 할지에 대해 알아보겠습니다. 공통점1. Struct와 Class 모두 속성(프로퍼티)과 메서드 정의 가능struct PersonStruct { var name: String // 속성 func greet() { // 메서드 print("Hello, \\(name)!") }}class PersonClass { var name: String = "soo" // 속성 func greet() { // 메서드..

Swift 2024.12.06

Swift - UICollectionViewFlowLayout 셀 크기 다르게 구현 (UILabel)

문제 상황 셀의 heigh은 고정이지만, width는 글자의 길이에 따라 다름기존의 UICollectionView 선언 과정에서 layout의 itemSize를 지정하는 방법은 모든 셀의 사이즈가 고정되기 때문에 사용할 수 없음 해결 과정String을 Extension하여 UILabel의 text, font에 따라 UILabel의 너비를 구하는 함수 구현// String을 Extension하여 UILabel의 text, font에 따라 UILabel의 너비를 구하는 함수 구현extension String { func getUILabelWidth(fontSize : CGFloat, fontWeight : UIFont.Weight) -> CGFloat { let label = UILabel..

Swift 2024.12.02

Swift - KeyChain이란?

KeyChain민가한 정보를 안전하게 저장하는 데 사용되는 iOS/macOS의 보안 기능비밀번호, 인증 토큰, 사용자 인증 정보와 같은 데이터를 암호화된 형태로 안전하게 저장 가능Keychain Services API를 통해 정보를 저장하고 불어옴키체인 항목을 추가(add), 검색(retrieve), 삭제(delete), 수정(modify) 기능을 사용함https://developer.apple.com/documentation/security/storing-keys-in-the-keychain주요 특징보안성 : 데이터를 암호화해서 저장하므로, 데이터를 보호할 수 있음앱 간 공유 : 동일한 개발자가 만든 앱끼리 Keychain을 공유할 수 있음Keychain Item의 속성 중 kSecAttrAccessG..

Swift 2024.11.24

Swift - modal 여러 개 한 번에 dismiss 하기

📑 학습 내용화면 전환을 모달 방식으로 여러번 한 후, 한 번에 dismiss 하는 방법presentingViewController : 현재 뷰를 띄운 뷰 컨트롤러self.presentingViewController?.presentingViewController?.dismiss(animated: true)→ presentingViewController 를 여러번 사용하여 이전 뷰 컨트롤러를 사용 가능함📚 참고 자료https://developer.apple.com/documentation/uikit/uiviewcontroller/1621430-presentingviewcontrollerhttps://velog.io/@hyesuuou/SwiftiOS-modal-2개-한번에-dismiss하기 [Swift/..

Swift 2024.11.20