전체 글

· 기타/Error
에러 발생프로젝트를 개발하던 도중 Swift 프로젝트에 외부 패키지를 추가하다 'failed to resolve dependencies' 에러를 만났습니다. 사실 제가 추가로 설치한 SPM은 별다른 의존성이 필요없기 때문에 더욱 당황스러웠습니다. 문제 해결 방법이와 관련한 정보를 검색해서 방법을 시도했으나 에러를 해결하지 못하였습니다. 제가 시도한 방법은 다음과 같았습니다.패키지 리셋 후 업데이트DerivedData 제거빌드 클린하고 다시 시도컴퓨터 재부팅아마 제가 찾은 정보들을 이정도가 나와서 위 방법을 사용했는데도 에러를 해결할 수 없었습니다. pbxproj 확인원인에 대해 자세히 살펴보니 'RxDataSources'에서 문제가 생겼다는 문구를 확인할 수 있었습니다. (스크린샷은 찍어놓지 못했습니다..
· iOS
배경숫자 계산에서 가장 중요한 건 "정확성"입니다.특히 금융, 결제, 세금, 환율 계산처럼 단 1원의 오차도 허용되지 않는 분야에서는 Double과 같은 부동 소수점 타입이 적합하지 않습니다.Swift에서 흔히 사용되는 숫자 타입에는 Double, Decimal, Int64가 있으며, 각각의 특성과 성능, 정확성은 크게 다릅니다.이 글에서는 왜 Decimal을 써야 하는지를 Double, Int64와 비교하며 설명하고자 합니다. Double의 문제점Swift에서 가장 많이 사용되는 실수형 타입은 Double입니다.Double은 64비트 이진 부동 소수점 방식(IEEE 754 표준)을 따르며, 넓은 범위의 수를 표현할 수 있고 연산 속도도 빠릅니다.하지만 정확한 소수값을 표현해야 하는 상황, 예를 들어 금..
· iOS
모듈모듈이란 소프트웨어의 논리적 그룹화 단위로, 시스템을 기능 단위로 묶은 요소입니다. 또한 모듈은 컴파일 단위이자 배포 단위로, 여러 가지 형태를 가지고 있습니다. System Moduleimport Foundation // Foundation 모듈import UIKit // UIKit 모듈import CoreData // CoreData 모듈 App Module앱 자체도 하나의 모듈입니다. 기본적으론느 앱의 Bundle Identifier가 모듈명으로, 별도의 import 없이 앱 내에서 사용 가능합니다. Framework Moduleimport Alamofire // 외부 프레임워크 모듈import MyFramework // 커스텀 프레임워크 모듈 Package Module..
MVVM 패턴을 도입하게 된 이유와 구조적 이점iOS 개발을 하다 보면, UIViewController 파일이 점점 커지고 복잡해지는 상황을 자주 마주하게 됩니다.기능이 늘어나면서 화면 구성, 사용자 입력 처리, 네트워크 통신, 데이터 가공 등 여러 역할을 한 클래스에서 수행하게 되는데, 이로 인해 코드의 가독성과 유지보수성이 급격히 떨어지게 됩니다.이러한 문제를 해결하기 위해 등장한 것이 바로 MVVM(Model - View - ViewModel) 패턴입니다.이번 글에서는 MVVM 패턴의 구성 요소와 각각의 역할, 그리고 실제 예제를 통해 어떻게 ViewController의 책임을 줄이고 관심사를 분리할 수 있는지를 정리해보고자 합니다. MVVM의 구성 요소MVVM은 그 이름처럼 Model, View,..
MVCMVC 패턴은 Model-View-Controller의 구조를 가지는 디자인 패턴으로, UIKit 프레임워크에서 자주 사용되는 디자인 패턴입니다. UIKit 프레임워크는 MVC 패턴을 기반으로 구성되어 있습니다.Model-View-Controller는 각자 다른 역할들을 가지고 있습니다.Model앱에서 사용되는 데이터와 비즈니스 로직을 담당합니다.UI와 독립적으로 이루어져 있으며, 데이터 저장 및 가공, 네트워크 요청 처리 등을 수행합니다.값이 변경되는 데이터를 Model이 가지고 있는 경우에는 Notification과 KVO 등을 통해 Controller에 변경 사항을 전달합니다.View사용자에게 화면을 표시하는 역할을 담당합니다.버튼, 레이블, 이미지 등의 **UI 요소들(UIView, UIBu..
· iOS/UIKit
여러 데이터를 표현하기 위해선 다양한 방법으로 구현할 수 있습니다. 그 중에서 반복적인 형식의 데이터를 표현하는 방법 또한 여러 가지인데, 대표적으로 UICollectionView, UIPageViewController, UIScrollView가 있습니다. 각 뷰가 어떻게 동작하는지와 메모리의 관점에서 어떠한 특징을 보이고 있는지 학습하였고, 이를 기반으로 상황에 따라 어떠한 뷰를 사용할 지 정의하고자 합니다. UICollectionView동작 방식UICollectionViewCell을 기반으로 데이터를 리스트 또는 그리드 형태로 표시합니다.재사용 큐를 사용하며, 보이지 않는 셀은 메모리에서 로드 또는 제거되지 않고, 재사용됩니다.메모리 관점셀을 재사용하기 때문에 효율적입니다. UIPageViewCont..
· Swift
클래스와 프로토콜의 차이Swift에서는 클래스 상속과 프로토콜 채택을 활용하여 코드의 재사용성을 높일 수 있습니다. 언뜻 보면 비슷해 보이지만, 각각의 역할과 사용 목적이 다릅니다. 어떤 상황에서 클래스를 사용하고, 언제 프로토콜을 사용하는 것이 더 적절한지 고민해보았습니다.  클래스의 상속클래스 상속은 객체 지향 프로그래밍(OOP)의 핵심 개념 중 하나로, 부모 클래스의 기능을 자식 클래스가 물려받아 사용할 수 있습니다.예를 들어, iOS 개발에서 UIViewController를 상속하면 기본적인 화면 관리 기능을 그대로 사용할 수 있습니다.class CustomViewController: UIViewController { override func viewDidLoad() { supe..
· iOS/UIKit
FinaliOS 개발을 하다보면 Final 키워드를 붙여 클래스를 정의하는 경우를 볼 수 있습니다.final class NetworkManager { static let shared = NetworkManager() private init() {} ... }따라서 Final 키워드의 특징은 무엇인지, 어떠한 경우에 사용해야 할 지에 대해 학습하였습니다. 문법적 특징Final 키워드를 선언하게 되면 상속이 불가능해집니다. 만약 Final 키워드가 선언된 것을 상속하려고 하면 컴파일 에러가 발생합니다.Final 키워드를 사용하면 메서드, 프로퍼티, 서브스크립트의 오버라이드가 불가능해진다는 특징을 지닙니다. 만약 final 키워드가 선언된 곳에서 오버라이드를 진행하려고 하면 컴파일 에러가 발생합..
Dev_Ted
프로그래밍 성장기