전체 글 30

[Swift] SOLID 원칙 iOS에 적용해보기

이론만 외우고 있던 SOLID 원칙,, 자세히 보니 이미 자연스럽게 쓰고 있었던 것들이다더 체계적으로 적용하고 활용하기 위해 정리해본다 ✅ SOLID?로버트 마틴(Uncle Bob)이 정리한 객체지향 설계 5원칙. 이 원칙들을 지키면:변경에 유연한 구조: 결합도는 낮고, 응집도는 높은 코드이해하기 쉬운 구조: 가독성이 좋고 디버깅하기 편한 코드무작정 따르는 게 아니라 판단력을 가지고 적용해야 함. 과도하게 적용하면 오히려 복잡해질 수 있음!1️⃣ SRP: 단일 책임 원칙"클래스 변경 이유는 딱 하나여야 한다""하나의 책임만 가져야 한다" -> 사실 '책임'은 주관적인 평가=> 정확한 정의: "변경의 이유가 하나, 오직 하나뿐이어야 한다"// ❌ 나쁜 예: 4가지 변경 이유를 가짐class UserView..

iOS 2025.06.10

[Swift] 캡처리스트와 순환참조

ARC 2탄 느낌으로 낋여본다class로만 순환참조 예제를 보다가 클로저랑 캡처리스트에서 순환참조가 이해가 안되어 하는 정리! ✅ 클로저도 객체다// Dog 예제var dog1: Dog? = Dog(name: "멍멍이") // 힙에 Dog 객체 생성var dog2: Dog? = dog1 // 같은 객체 참조// 클로저 예제 (동일한 원리!)var completion: (() -> Void)?let myClosure = { print("Hello") } // 힙에 클로저 객체 생성completion = myClosure // 같은 클로저 객체 참조-> 클로저도 힙에 생성되는 실제 객체이고, 변수들은 그 주소를 가리킨다!✅ 캡처(Capture)란?1...

Swift 2025.06.05

[Swift] 고차함수 더 이상 헷갈리지 않기

개인적으로 한번 헷갈리기 시작해 영원히 헷갈리는 문법이 몇 가지 있는데, 그 중 첫번째 손님으로 고차함수 map과 reduce 모심 ✅ 각 요소를 변환하는 Mapclass MapExamples { func basicMapExamples() { print("=== MAP 기본 예시 ===") // 예시 1: 숫자를 2배로 let numbers = [1, 2, 3, 4, 5] // Before: for문 사용 var doubled: [Int] = [] for number in numbers { doubled.append(number * 2) } pr..

Swift 2025.06.04