[TIL] 2024. 06. 20

2024. 6. 20. 13:10·TIL (Today I Learned)

1-3. Xcode 빌드

(a) 빌드하기 전 기초 개념

  1. 컴파일 & 빌드
    • 컴파일 : Swift 코드를 컴퓨터가 이해할 수 있는 바이너리 파일로 변환하는 과정.
    • 빌드 : 소스 코드와 리소스를 포함해 실행 가능한 소프트웨어로 변환하는 과정.
  2. 앱 생명주기 (App Lifecycle)
    • Unattached : 앱이 실행되지 않은 상태.
    • Foreground Inactive : 앱이 실행됐지만 사용자 이벤트를 받지 못하는 상태.
    • Foreground Active : 앱이 실행되고 사용자 이벤트를 받는 상태.
    • Background : 앱이 백그라운드로 넘어간 상태.
    • Suspend : 백그라운드 상태에서 OS가 판단하여 앱을 중지시키는 상태.
  3. AppDelegate & SceneDelegate
    • AppDelegate : 앱의 생명주기를 관리하는 클래스.
    • SceneDelegate : iOS13 이후 멀티 윈도우 환경에서 각 Scene을 관리하는 클래스.
  4. 퍼스트파티 & 서드파티
    • 퍼스트 파티 : 애플이 제공하는 툴 (ex. UIKit, URLSession).
    • 서드 파티 : 제3자가 제공하는 툴 (ex. SnapKit, Alamofire, KingFisher).

(b) 디버깅, llldb 개념

  1. 디버깅
    • 소프트웨어의 오류를 찾아내고 수정하는 과정.
  2. print() 문으로 디버깅
    • 코드 내에서 print() 문을 사용해 변수 값을 출력하여 디버깅.
  3. OSLog 로그 찍기
    • `os_log`를 사용해 다양한 로그 레벨로 로그 출력 (default, debug, info, error, fault).
  4. 브레이크포인트 찍기
    • 코드 라인에 브레이크포인트를 설정해 디버깅.
    • 디버그 영역에서 변수 값 확인 가능.
  5. 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 기초 개념

  1. UI (User Interface)
    • 사용자가 앱과 상호작용할 수 있는 모든 시각적 요소.
    • 예시 : 타이틀, 배터리 잔량, 텍스트 입력 창, 이미지 뷰, 버튼, 스크롤 뷰 등.
  2. UX (User Experience)
    • 사용자가 앱을 사용하는 동안 느끼는 경험.
    • 버튼 배치와 같은 작은 차이가 사용자 경험과 앱의 매출에 영향을 미침.
  3. UIKit 개념
    • iOS 앱에서 필요한 UI 요소를 제공하는 애플의 프레임워크.
    • 예시 : UIButton, UILabel, UITextView, UIScrollView, UIImageView 등.
  4. 프레임워크(Framework)
    • 작업을 위한 틀을 제공해주는 도구.
    • UIKit은 iOS 개발자가 UI를 개발할 수 있는 틀을 제공.
  5. UIKit vs SwiftUI
    • SwiftUI : iOS 13 이상에서 사용 가능한 최신 UI 프레임워크, 선언적 프로그래밍.
    • UIKit : 명령적 프로그래밍, 더 오랜 역사와 많은 자료 보유, iOS 13 이하 버전 지원.
    • SwiftUI는 상태가 변경되면 자동으로 UI를 업데이트, UIKit은 직접 UI 상태 변화를 처리.
  6. Cocoa Framework
    • 애플 운영체제용 애플리케이션 제작 프레임워크.
    • iOS용 프레임워크를 Cocoa Touch라고 하며, UIKit과 Foundation이 포함됨.
  7. import Foundation vs import UIKit
    • import Foundation : UI와 무관한 코드를 작성할 때 사용.
    • import UIKit : UI 관련 코드를 작성할 때 사용.
    • 파일의 import 구문에 따라 코드의 의도와 범위를 유추 가능.
  8. Safe Area
    • 아이폰 기기마다 다를 수 있는 특성을 고려해 안정적으로 앱의 콘텐츠를 노출시키기 위한 보이지 않는 영역.
  9. AutoLayout & Constraint
    • AutoLayout : 기기 사이즈에 맞춰 자동으로 사이즈를 조정.
    • Constraint : 뷰와 뷰 사이의 제약조건.
      • `left/right/top/bottom` : 좌/우/위/아래 제약 조건.
      • `leading/trailing` : 앞/뒤 제약 조건, 지역화된 조건에 따라 좌우가 달라짐.
  10. Margin, Padding
    • Margin : 주변 요소와 거리를 두기 위한 영역.
    • Padding : 콘텐츠와 경계 사이의 여백을 나타내는 영역.
  11. 스토리보드에서 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
'TIL (Today I Learned)' 카테고리의 다른 글
  • [TIL] 2024. 06. 24
  • [TIL] 2024. 06. 21
  • [TIL] 2024. 06. 19
  • [TIL] 2024. 06. 18
DongDong_
DongDong_
  • DongDong_
    how-dev
    DongDong_
  • 전체
    오늘
    어제
    • 분류 전체보기 (102)
      • TIL (Today I Learned) (96)
      • DEV (0)
        • 알고리즘 (0)
        • SWIFT (0)
      • 사전캠프 데일리 미션 (5)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 글작성
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
DongDong_
[TIL] 2024. 06. 20
상단으로

티스토리툴바