ㅇ안녕하세요 저입니다.
요즘 공부를 왤케 안했냐면요
싸이판 갔다왔서요!!!
안물어봤다고요?
넵 ㅠㅠ
그럼 오늘 공부한 내용 스타트~
iOS 앱 구조와 UI 기초 개념 정리
SceneDelegate vs AppDelegate
- AppDelegateapplication(_:didFinishLaunchingWithOptions:) 등을 통해 앱 초기 설정 가능
→ 다른 사람이 만든 프로젝트를 처음 볼 때 AppDelegate부터 보면 흐름 파악에 도움 됨
(저도 얼릉 입사해서 앱델리게이트로 코드 파악하고시버요 ^_^) - 앱 전체 생명 주기를 다룸. 앱이 실행될 때 가장 먼저 실행되는 객체
- SceneDelegate앱의 각 UI 씬(Scene) 단위 생명 주기를 관리함
→ 필요한 기능이 있다면 공식 문서/검색 통해 그때그때 찾아서 구현해도 충분함
ex) sceneWillEnterForeground, sceneDidEnterBackground 등 콜백을 통해 상태 감지 가능 - 버전 체크 문법
- iOS 13부터 도입됨. 멀티 윈도우, 멀티 씬을 다루기 위한 객체
if #available(iOS 13.0, *) { // iOS 13 이상에서만 실행 }
UI 관련 팁
- 완전한 원(circle) 만들기
view.layer.cornerRadius = view.frame.height / 2 view.clipsToBounds = true
- cornerRadius = height / 2 로 설정하면 정사각형 뷰는 완전한 원이 됨
- Xib = Nib
: 같은 의미임. 커스텀 셀이나 뷰를 정의할 때 자주 사용 - awakeFromNib() 안에서 초기 설정해주는 경우 많음
- 코드 템플릿 관리
- 자주 사용하는 코드나 스타일은 Notion, Pages 등에서 템플릿으로 정리해두면 실무 시 편리함
메모리와 타입
- 클래스 vs 구조체
- 클래스: 참조 타입, 힙에 저장됨 → 메모리 누수 발생 가능
- → 클로저 안에서는 weak self 필수
- 구조체: 값 타입, 스택에 저장됨 → 안전함 (ARC의 영향을 받지 않음)
- 메모리 누수 주의
- 강한 순환 참조(strong reference cycle)가 생기지 않도록 weak 또는 unowned 사용
근디 거의 weak 사용 - 클로저 안에서 self를 캡처할 경우 → [weak self] 또는 [unowned self] 사용
- 강한 순환 참조(strong reference cycle)가 생기지 않도록 weak 또는 unowned 사용
화면 전환 방식
- Push 방식
: navigationController?.pushViewController(vc, animated: true) - Navigation Stack에 쌓임 → Back 버튼 자동 생성
- Present 방식
: present(vc, animated: true) - Stack에 쌓이지 않음, 모달 방식 → dismiss로 되돌아감
→ present 위에 다시 push는 불가함
동기(Sync) vs 비동기(Async)
나 이거 왜 맨날 헷갈리니
- 동기: 순차적으로 코드 실행, 작업이 끝나야 다음으로 넘어감
- 비동기: 작업 요청 후 바로 다음 코드 실행, 콜백이나 클로저로 완료 알림 받음
→ 네트워크 통신은 기본적으로 비동기
DispatchQueue.global().async {
// 백그라운드 작업
DispatchQueue.main.async {
// UI 업데이트
}
}
뷰 설정 관련
- contentMode: 이미지 등의 레이아웃 방식
→ 거의 aspectFill을 주로 사용함 (비율 유지 + 꽉 채우기)
객체지향 기초
- 객체란?
→ Swift에서의 클래스/구조체가 대표적인 예 - 상태(state, property) + 동작(behavior, method)
'TIL' 카테고리의 다른 글
250701 | progressBar가 작동을 안한다 | 해결 방법! (0) | 2025.07.01 |
---|---|
250622 TIL | 기능 구현 팁, switch / enum, 초기화, 패턴 등 (0) | 2025.06.22 |
250529 TIL | 코드로 Navigationcontroller 구현하기 (3) | 2025.05.29 |
250523 TIL | firebase SPM과 Pod이 꼬이다... 해결방법...! (2) | 2025.05.23 |
250520 TIL | 셀 재사용부터 앱 생명주기까지 (0) | 2025.05.20 |