안녕하세요 오늘의 공부 내용 정리 시작 ~!
개발 마인드셋
- 여러 기능이 얽혀 있더라도 하나씩 나눠서 구현해보면 결국 풀리게 됨
- → 처음부터 전체 구조를 다 알 필요는 없음. 구현하며 감을 잡으면 됨
- 같은 기능이라도 다양한 방식으로 구현해보는 습관이 중요→ 손발이 자유로워짐 = 구현 능력이 높아짐
- 예: if ↔ guard, switch ↔ if else
Objective-C 함수 제약
- @objc로 선언된 함수는 파라미터를 직접 전달할 수 없음
- → 주로 Selector 기반으로 동작 (예: 버튼 액션 연결 등)
@objc func buttonTapped() {
// 파라미터 없는 함수만 가능
}
코드 스타일 / 표현력
- Depth(들여쓰기)
- 권장: 1단계, 최대: 2단계
- 그 이상은 함수 분리, 로직 분리해서 구조 정리해야 함
- 조건문 표현
- &&, , 둘 다 "그리고(and)" 조건 표현 가능
- if a && b {}
- guard a, b else { return }
- &&, , 둘 다 "그리고(and)" 조건 표현 가능
- switch 잘 쓰면 고수!
- if 분기문이 많아질수록 switch로 리팩토링 고려
- 단순한 조건문뿐 아니라 Enum의 연관값까지 활용 가능
- 예:
- enum Result { case success(data: String) case failure(error: Error) } switch result { case .success(let data): print(data) case .failure(let error): print(error.localizedDescription) }
Enum의 개념
- *열거형(enum)**은 연관된 값을 그룹화하는 타입
- 두 가지 형태가 있음:
- 원시값(rawValue): 정수, 문자열 등 고정된 값 할당
- 연관값(associated value): 케이스마다 추가적인 값 저장 가능
Enum의 원시값(Raw Value) vs 연관값(Associated Value)
✅ 원시값 (Raw Value)
- enum의 각 케이스에 **기본 타입(String, Int 등)**의 값을 지정하는 방식
- 모든 케이스가 같은 타입의 값을 가져야 함
- rawValue로 값 접근 가능
enum Weekday: String {
case monday = "Mon"
case tuesday = "Tue"
}
let today = Weekday.monday
print(today.rawValue) // "Mon"
✅ 연관값 (Associated Value)
- 케이스마다 각기 다른 타입의 값을 가질 수 있음
- 케이스마다 값을 동적으로 저장할 수 있음
- 패턴 매칭으로 꺼내서 사용함 (switch 많이 사용)
enum Result {
case success(data: String)
case failure(code: Int, message: String)
}
let response = Result.failure(code: 404, message: "Not Found")
switch response {
case .success(let data):
print("성공: \\(data)")
case .failure(let code, let message):
print("에러 \\(code): \\(message)")
}
📌 정리:
구분 | 원시값 | 연관값 |
용도 | 케이스마다 고정된 값 | 케이스마다 동적인 값 저장 |
타입 | 전체 enum에 같은 타입 | 케이스마다 다른 타입 가능 |
접근 방법 | .rawValue | switch로 분해 |
클래스 vs 구조체 초기화
- 클래스(class)
- 초기화 메서드 init() 직접 정의 필요
- 생성 시 모든 저장 프로퍼티 초기화 필수
- 구조체(struct)
- 컴파일러가 자동으로 멤버와이즈 이니셜라이저 제공
- → 따로 init() 정의 안해도 생성자 사용 가능
struct User {
var name: String
var age: Int
}
let user = User(name: "Tom", age: 30)
🧭 스토리보드 없이 앱 만들기
- 혼자 앱을 만들 때는 스토리보드 없이 순수 코드(UI) 로 구현할 수 있어야 함→ View 생성, AutoLayout 제약, 화면 전환 모두 코드로 구현 가능
- → UIKit 기반 코드 작성 능력 필수
MVC 패턴이란?
- iOS 기본 설계 패턴인 MVC(Model - View - Controller)
- Model: 데이터/비즈니스 로직 담당
- View: 사용자에게 보여지는 UI
- Controller: Model과 View를 연결, 이벤트 처리 담당
- 초보 개발자는 보통 View와 Controller에 로직이 몰리는 문제를 겪음
- → View는 가볍게 유지하고 Model과 Controller의 역할을 분리하는 것이 핵심
'TIL' 카테고리의 다른 글
250713 TIL | MVC 패턴으로 구조 바꾸기 (1) | 2025.07.13 |
---|---|
250701 | progressBar가 작동을 안한다 | 해결 방법! (0) | 2025.07.01 |
250615 TIL | 사이판에서 돌아왔아요 (0) | 2025.06.15 |
250529 TIL | 코드로 Navigationcontroller 구현하기 (3) | 2025.05.29 |
250523 TIL | firebase SPM과 Pod이 꼬이다... 해결방법...! (2) | 2025.05.23 |