iOS

iOS/UIKit

[ UIKit ] SwiftUI만 공부하던 내가 UIKit MVVM에서 클로저를 처음 마주쳤을 때

저는 SwiftUI로 iOS 개발을 공부해왔습니다.@State, @Binding, @ObservedObject… 이런 키워드만 있으면 데이터가 바뀌면 UI가 저절로 바뀌는, 말 그대로 마법 같은 환경이 익숙했지만 UIKit으로 넘어오면서 MVVM 패턴을 적용해보려던 순간, 나는 **클로저(Closure)**라는 녀석과 마주쳐 어떠한 역할을 하는지 알아보려고 합니다.SwiftUI에서는 왜 클로저를 안 썼지?SwiftUI에서는 데이터에 @Published만 붙여주면 UI는 알아서 반응한다.class ViewModel: ObservableObject { @Published var title = "Hello"}struct MyView: View { @ObservedObject var viewModel..

iOS/UIKit

[ UIKit ] Combine으로 상태를 바인딩하는 방법

UIKit 환경에서 Combine 프레임워크를 활용해 상태를 자동으로 바인딩하는 방법을 배워보려 합니다.. 예제로는 내배캠 iOS 앱 개발 입문 1주차 강의의 Counter 앱을 활용했습니다. 기존에는 Delegate 패턴으로 사용자 이벤트를 처리했다면, 이번엔 Combine을 통해 모델의 상태가 바뀔 때 UI가 자동으로 업데이트되는 구조를 구현해보려 합니다.Combine이란?Combine은 Apple이 WWDC 2019에서 발표한 반응형(Reactive) 프로그래밍 프레임워크입니다. Swift 언어로 작성된 코드에서 다양한 이벤트 스트림(데이터, 네트워크 응답, 사용자 인터랙션 등)을 하나의 방식으로 처리할 수 있도록 만들어졌습니다.Combine은 Swift 개발자가 다음과 같은 상황에서 강력하게 활용..

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..

Sheep1sik
'iOS' 카테고리의 글 목록