프로젝트를 진행 중 하나의 코드 리뷰를 받았습니다.해당 피드백을 본 후 모델을 생성할때도 그 용도에 맞게 프로토콜을 채택해야될 것 같다고 생각이 들었습니다 Swift에서 네트워크 통신이나 로컬 파일 저장을 하다 보면 흔하게 마주치는 프로토콜이 있습니다. 바로 Codable, 그리고 그를 구성하는 Encodable, Decodable입니다. 이 글에서는 Apple 공식 문서를 기반으로 이 프로토콜들의 의미와 차이점, 그리고 언제 어떤 걸 써야 할지 정리해보겠습니다.Codable이란?typealias Codable = Encodable & Decodable Codable은 Swift가 제공하는 타입 에일리어스로, Encodable과 Decodable을 동시에 채택한 것을 의미합니다. 즉, 이 타입은 JSON..
비동기 처리, 언제 쓰고 왜 써야 할까?내배캠 앱 개발 입문 주차 과제를 해결하던 중 나온 고민이였다.동기 처리란?비동기 처리(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 앱은 대부분 단일 메인 스..
Swift는 ARC ( 자동 참조 계산 )을 사용하여 앱의 메모리 사용을 추적하고 관리한다.ARC 동작 방식1. 인스턴스 생성과 메모리 할당class의 새로운 인스턴스를 생성할 때 마다 ARC는 해당 인스턴스에 대한 정보를 저장할 메모리 공간을 할당인스턴스의 타입 정보와 프로퍼티의 값이 저장됨.2. 참조 카운트 관리ARC는 사용중인 인스턴스가 메모리에서 해제되지 않도록, 몇개의 프로퍼티, 상수, 변수가 인스턴스를 참조하고 있는지 추적 - 참조 시작 시 : 카운팅 + 1 - 참조 종료 시 : 카운팅 - 1 - 최종적으로 참조 카운트가 0이 되면 인스턴스는 메모리에서 해제3. 메모리 해제참조 카운트가 0이 된 인스턴스는 더 이상 필요하지 않기 때문에, ARC가 해당 인스턴스가 사용했던 메모리..
접근제어자클래스와 구조체를 사용하다 보면 외부에서 특정 데이터에 접근을 제한하고 싶을 때가 있다.struct Person { var name: String var age: Int var havingMoney: Int func introduce() { print("안녕하세요. 제 이름은 \(name)이고, 나이는 \(age)살 입니다.") }}var me = Person(name: "Brody", age: 26, havingMoney: 10000)print(me.havingMoney) 내가 가진 돈은 나만 알고 싶은데 다른 사람에게 알리고 싶지 않을때 접근 제어자를 사용하면 외부에서 접근을 못하도록 막을 수 있다.접근제어자는 외부에서 코드에 대한 접근을 제한하..
📝 중첩된 타입은 하나의 타입 안에 다른 타입을 정의하는 것을 의미한다.구조적으로 복잡한 클래스나 구조체 등을 더 조직적으로 관리할 수 있습니다.class, struct, enum 등에서 사용할 수 있습니다.중첩된 타입을 사용하면 코드의 가독성을 높이고, 타입 간의 연관성을 명확히 할 수 있습니다.타입의 블록 안에서 다른 타입을 정의하고 사용하는 방식으로 구현합니다.struct Car { struct Company { // Car 안에 중첩된 Company 구조체 var name: String var phoneNumber: String func contact() { print("\(name) 회사의 A/S 센터 번호는 \(ph..
Swift에서 override란? 언제 사용하고, 언제 안 써야 할까? 🚀 Swift에서 override 키워드는 부모 클래스의 메서드, 프로퍼티, 또는 서브스크립트를 **자식 클래스에서 재정의(Override)**할 때 사용됩니다.즉, 기존 기능을 변경하거나 확장하고 싶을 때 필수적으로 사용해야 하는 키워드입니다.override의 개념과 함께 언제 사용해야 하고, 언제 쓰면 안 되는지 자세히 알아보겠습니다.✅ override가 필요한 이유는?부모 클래스의 기능을 변경하려면 반드시 override를 사용해야 합니다.Swift에서는 실수를 방지하기 위해 부모 클래스에 존재하는 메서드를 수정할 때 override를 명시적으로 사용하도록 강제합니다. 예제를 통해 살펴볼까요? 👇class Animal { ..