iOS

iOS/UIKit

[ UIKit ] Delegate 패턴 알아보기

내배캠 iOS 앱 개발 입문 1주차 강의에서 제공된 Counter 앱을 기반으로, UIKit에서 가장 널리 쓰이는 디자인 패턴 중 하나인 Delegate(델리게이트) 패턴을 학습해보려고 합니다. Delegate 패턴이란?Delegate는 말 그대로 위임이라는 뜻을 가지고 있습니다. iOS에서 Delegate 패턴은 한 객체가 발생시킨 이벤트를 다른 객체에게 처리 위임하는 구조를 의미합니다.Apple 공식 문서에 따르면A delegate acts on behalf of, or in coordination with, another object.- Apple Devpedia - DelegationDelegate 패턴을 언제 사용하나?View는 사용자 이벤트(버튼 클릭 등)를 감지할 수 있지만, 로직 처리까지 ..

iOS/Swift

[ Swift ] Codable vs Decodable vs Encodable: 언제, 왜, 어떻게 쓸까?

프로젝트를 진행 중 하나의 코드 리뷰를 받았습니다.해당 피드백을 본 후 모델을 생성할때도 그 용도에 맞게 프로토콜을 채택해야될 것 같다고 생각이 들었습니다 Swift에서 네트워크 통신이나 로컬 파일 저장을 하다 보면 흔하게 마주치는 프로토콜이 있습니다. 바로 Codable, 그리고 그를 구성하는 Encodable, Decodable입니다. 이 글에서는 Apple 공식 문서를 기반으로 이 프로토콜들의 의미와 차이점, 그리고 언제 어떤 걸 써야 할지 정리해보겠습니다.Codable이란?typealias Codable = Encodable & Decodable Codable은 Swift가 제공하는 타입 에일리어스로, Encodable과 Decodable을 동시에 채택한 것을 의미합니다. 즉, 이 타입은 JSON..

iOS/Swift

[ Swift ] 비동기 처리와 DispatchQueue.main.async

비동기 처리, 언제 쓰고 왜 써야 할까?내배캠 앱 개발 입문 주차 과제를 해결하던 중 나온 고민이였다.동기 처리란?비동기 처리(Asynchronous Execution)는 어떤 작업을 기다리지 않고, 다른 작업을 동시에 처리할 수 있도록 해줍니다.Swift에서는 GCD(Grand Central Dispatch)를 사용해 비동기 처리를 구현할 수 있습니다. Dispatch | Apple Developer DocumentationExecute code concurrently on multicore hardware by submitting work to dispatch queues managed by the system.developer.apple.com비동기 처리가 중요한가?iOS 앱은 대부분 단일 메인 스..

iOS/Xcode

[ Xcode ] LLDB(Low-Level Debbugger)

LLDB란?LLDB는 Apple이 GDB를 대체하기 위해 LLVM 기반으로 새롭게 개발한 디버거입니다.Xcode 5부터 기본 디버거로 채택되어, 모든 기존 및 신규 프로젝트에서 자동으로 LLDB를 사용하게 되었습니다.LLDB는 GDB보다 강력하고 빠르며, 데이터 검사 및 흐름 제어에 있어 현대적인 기능을 제공합니다.LLDB의 주요 특징1. Xcode와의 완벽한 통합LLDB는 Xcode 안에서 완전히 통합되어 작동합니다. UI 디버깅 도구와 디버깅 콘솔에서 LLDB 명령어를 직접 사용할 수 있습니다.2. 익숙한 명령어 세트기존 GDB 사용자를 위해 LLDB는 GDB와 유사한 명령어들을 제공합니다.또한 별칭(alias)을 지정하거나, 단축 명령어를 만들어 손쉽게 사용할 수 있습니다.3. 확장 가능한 디버거L..

iOS/Swift

[ Swift ] Swift 5.9 신기능: 복사 불가능한 타입 (Noncopyable Types)

Swift 5.9에서는 복사 불가능한 타입(Noncopyable Types)이 새롭게 도입되었습니다. 이 기능을 통해 특정 구조체(struct)나 열거형(enum)을 복사할 수 없도록 만들어, 고유한 소유권을 명확히 관리할 수 있습니다.왜 도입됐을까? 기존 Swift의 값 타입(struct, enum)은 항상 복사가 가능했습니다. 즉, 같은 데이터를 여러 번 복사하여 사용할 수 있었죠. 이는 편리하지만 때론 부적합합니다. 예를 들어, 파일 핸들이나 네트워크 소켓 같은 리소스는 하나의 고유한 소유권만을 요구하며, 복사가 가능하면 리소스 관리가 어려워지기 때문입니다.이 문제를 해결하기 위해 Swift 5.9부터는 복사를 금지하는 기능을 제공합니다.어떻게 사용하나? 복사 불가능한 타입을 정의할 때는 타입 선언..

iOS/Swift

[ Swift ] ARC : Automatic Reference Counting

Swift는 ARC ( 자동 참조 계산 )을 사용하여 앱의 메모리 사용을 추적하고 관리한다.ARC 동작 방식1. 인스턴스 생성과 메모리 할당class의 새로운 인스턴스를 생성할 때 마다 ARC는 해당 인스턴스에 대한 정보를 저장할 메모리 공간을 할당인스턴스의 타입 정보와 프로퍼티의 값이 저장됨.2. 참조 카운트 관리ARC는 사용중인 인스턴스가 메모리에서 해제되지 않도록, 몇개의 프로퍼티, 상수, 변수가 인스턴스를 참조하고 있는지 추적    - 참조 시작 시 : 카운팅 + 1    - 참조 종료 시 : 카운팅 - 1    - 최종적으로 참조 카운트가 0이 되면 인스턴스는 메모리에서 해제3. 메모리 해제참조 카운트가 0이 된 인스턴스는 더 이상 필요하지 않기 때문에, ARC가 해당 인스턴스가 사용했던 메모리..

Sheep1sik
'iOS' 카테고리의 글 목록 (3 Page)