1-3. Xcode 빌드
(a) 빌드하기 전 기초 개념
- 컴파일 & 빌드
- 컴파일 : Swift 코드를 컴퓨터가 이해할 수 있는 바이너리 파일로 변환하는 과정.
- 빌드 : 소스 코드와 리소스를 포함해 실행 가능한 소프트웨어로 변환하는 과정.
- 앱 생명주기 (App Lifecycle)
- Unattached : 앱이 실행되지 않은 상태.
- Foreground Inactive : 앱이 실행됐지만 사용자 이벤트를 받지 못하는 상태.
- Foreground Active : 앱이 실행되고 사용자 이벤트를 받는 상태.
- Background : 앱이 백그라운드로 넘어간 상태.
- Suspend : 백그라운드 상태에서 OS가 판단하여 앱을 중지시키는 상태.
- AppDelegate & SceneDelegate
- AppDelegate : 앱의 생명주기를 관리하는 클래스.
- SceneDelegate : iOS13 이후 멀티 윈도우 환경에서 각 Scene을 관리하는 클래스.
- 퍼스트파티 & 서드파티
- 퍼스트 파티 : 애플이 제공하는 툴 (ex. UIKit, URLSession).
- 서드 파티 : 제3자가 제공하는 툴 (ex. SnapKit, Alamofire, KingFisher).
(b) 디버깅, llldb 개념
- 디버깅
- 소프트웨어의 오류를 찾아내고 수정하는 과정.
- print() 문으로 디버깅
- 코드 내에서 print() 문을 사용해 변수 값을 출력하여 디버깅.
- OSLog 로그 찍기
- `os_log`를 사용해 다양한 로그 레벨로 로그 출력 (default, debug, info, error, fault).
- 브레이크포인트 찍기
- 코드 라인에 브레이크포인트를 설정해 디버깅.
- 디버그 영역에서 변수 값 확인 가능.
- lldb
- Low Level Debuger로 디버그 영역에서 명령어를 사용해 디버깅.
- `po` (print object) : 객체의 값을 출력.
- `expression` : 변수를 선언하고 사용할 수 있음.
- `cmd + K` : 디버그 창을 깨끗하게 비움.
주요 개념 및 사용 예시
- 컴파일과 빌드 차이
- 컴파일은 소스 코드를 바이너리 파일로 변환하는 과정.
- 빌드는 컴파일된 코드와 리소스를 포함해 실행 파일로 만드는 과정.
- AppDelegate 예시
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// 초기 설정 코드
return true
}
- OSLog 예시
import OSLog
os_log(.default, "Default log message")
os_log(.debug, "Debug log message")
os_log(.info, "Info log message")
os_log(.error, "Error log message")
os_log(.fault, "Fault log message")
- lldb 예시
po randomNumber // 객체의 값을 출력
expression let $x = 100 // 변수를 선언
po $R0 + $x // 선언한 변수와 값의 계산 결과 출력
1-4. UIKit 요약
(a) UIKit 기초 개념
- UI (User Interface)
- 사용자가 앱과 상호작용할 수 있는 모든 시각적 요소.
- 예시 : 타이틀, 배터리 잔량, 텍스트 입력 창, 이미지 뷰, 버튼, 스크롤 뷰 등.
- UX (User Experience)
- 사용자가 앱을 사용하는 동안 느끼는 경험.
- 버튼 배치와 같은 작은 차이가 사용자 경험과 앱의 매출에 영향을 미침.
- UIKit 개념
- iOS 앱에서 필요한 UI 요소를 제공하는 애플의 프레임워크.
- 예시 : UIButton, UILabel, UITextView, UIScrollView, UIImageView 등.
- 프레임워크(Framework)
- 작업을 위한 틀을 제공해주는 도구.
- UIKit은 iOS 개발자가 UI를 개발할 수 있는 틀을 제공.
- UIKit vs SwiftUI
- SwiftUI : iOS 13 이상에서 사용 가능한 최신 UI 프레임워크, 선언적 프로그래밍.
- UIKit : 명령적 프로그래밍, 더 오랜 역사와 많은 자료 보유, iOS 13 이하 버전 지원.
- SwiftUI는 상태가 변경되면 자동으로 UI를 업데이트, UIKit은 직접 UI 상태 변화를 처리.
- Cocoa Framework
- 애플 운영체제용 애플리케이션 제작 프레임워크.
- iOS용 프레임워크를 Cocoa Touch라고 하며, UIKit과 Foundation이 포함됨.
- import Foundation vs import UIKit
- import Foundation : UI와 무관한 코드를 작성할 때 사용.
- import UIKit : UI 관련 코드를 작성할 때 사용.
- 파일의 import 구문에 따라 코드의 의도와 범위를 유추 가능.
- Safe Area
- 아이폰 기기마다 다를 수 있는 특성을 고려해 안정적으로 앱의 콘텐츠를 노출시키기 위한 보이지 않는 영역.
- AutoLayout & Constraint
- AutoLayout : 기기 사이즈에 맞춰 자동으로 사이즈를 조정.
- Constraint : 뷰와 뷰 사이의 제약조건.
- `left/right/top/bottom` : 좌/우/위/아래 제약 조건.
- `leading/trailing` : 앞/뒤 제약 조건, 지역화된 조건에 따라 좌우가 달라짐.
- Margin, Padding
- Margin : 주변 요소와 거리를 두기 위한 영역.
- Padding : 콘텐츠와 경계 사이의 여백을 나타내는 영역.
- 스토리보드에서 UIKit 요소 사용
- `cmd + shift + L` 또는 툴바의 십자 버튼(+)을 눌러 UIKit의 구성 요소 사용.
- 예시: 스토리보드에 Label을 드래그해 생성.
UIKit에서 자주 활용하는 기본 클래스들
- UITableView : 테이블 형태의 뷰, 각 항목은 `UITableViewCell`.
- UICollectionView : 복잡한 구성 가능한 뷰, 각 항목은 `UICollectionViewCell`.
- UIAlertController : 알럿을 띄우는 뷰.
- UITextView : 텍스트 입력하는 뷰.
- UIPageViewController : 페이지를 넘기는 뷰.
반응형
'TIL (Today I Learned)' 카테고리의 다른 글
[TIL] 2024. 06. 24 (0) | 2024.06.24 |
---|---|
[TIL] 2024. 06. 21 (0) | 2024.06.21 |
[TIL] 2024. 06. 19 (0) | 2024.06.19 |
[TIL] 2024. 06. 18 (0) | 2024.06.18 |
[TIL] 2024. 06. 17 (0) | 2024.06.17 |