전체 파일 구조
디렉토리와 파일 외의 궁금했던 아이콘에 대한 정리.
- 파란색 앱 아이콘 (Where42):
Xcode에서 앱의 전체 프로젝트를 나타냄.
- 파란색 손 아이콘 (PrivacyInfo):
파일 참조를 의미하며, 외부에서 참조되는 파일. 프로젝트 내부에 물리적으로 존재하지 않고 다른 위치에 있는 파일을 참조할 때 사용. 여기서는 PrivacyInfo라는 외부 파일을 참조함.
- 기어 아이콘 (XCConfig):
빌드 설정 파일(XCConfig)을 의미. 프로젝트 빌드와 관련된 설정을 관리하는 데 사용되며, 여기서는 Shared, Debug, Release로 나뉘어 각각 다른 빌드 구성을 관리하고 있음.
- 노란색 아이콘 (where42) :
실제로 빌드된 앱을 의미.
- 표 아이콘 (GoogleService-Info, Info):
이 아이콘은 프로퍼티 리스트 파일(.plist)을 나타냄.
- 파란색 파일 아이콘 (Assets):
앱에서 사용하는 이미지, 색상, 아이콘 등을 관리하는 리소스 파일.
용어 정리
- 프로퍼티 리스트 파일(.plist)란? 데이터의 구조화된 표현을 저장하는 파일 형식. 주로 설정이나 구성 데이터를 저장하는 데 사용되며, XML 또는 바이너리 형식으로 데이터를 저장.
- 프로퍼티 리스트 사용 예:
- 사용자 설정 저장
- 앱 초기 구성 데이터 저장
- 간단한 데이터베이스 대용
기본 분석
설정 파일들 외의 코드를 알아보자.
main()에 해당하는Where42App.swiftView: 실제 유저 눈에 보이는 부분ViewModel: View와 Model 사이에서 중간자 역할을 하며, 비즈니스 로직을 처리하고 View가 표시할 데이터를 제공Model: 앱의 핵심 데이터를 정의하고, 데이터베이스나 API와 같은 외부 데이터 소스와의 상호작용을 담당API: 백엔드 서버와 연결하는 부분
Where42App.swift
swift
@main
struct Where42App: App {
@UIApplicationDelegateAdaptor var delegate: WhereAppDelegate
var body: some Scene {
WindowGroup {
Where42()
}
}
}
@main: 앱의 시작점임을 명시@UIApplicationDelegateAdaptor: AppDelegate를 SwiftUI 앱 내에서 사용할 수 있도록 연결함.- View의 Where42로 연결됨.
Info.plist 분석
• ITSAppUsesNonExemptEncryption: 이 값은 false로 설정되어 있어, 이 앱이 암호화를 사용하지 않거나, 암호화가 규제되지 않는다는 의미.
• BaseURL: 이 값은 환경 변수 $(BASE_URL)로 정의되어 있어, 이 앱이 API 호출 시 사용하는 기본 URL이 설정 파일에서 동적으로 결정된다는 것을 나타냄. 이 값은 API 통신이 이루어질 때 중요한 역할을 합니다.
• NSAppTransportSecurity: NSAllowsArbitraryLoads 값이 true로 설정되어 있어, 앱이 모든 도메인에 대해 네트워크 요청을 할 수 있도록 허용하고 있음. 즉, 보안 전송이 아닌 HTTP 요청도 허용된다는 뜻.
• UIAppFonts: GmarketSansTTFMedium.ttf, GmarketSansTTFBold.ttf, GmarketSansTTFLight.ttf 세 가지 폰트를 사용하고 있음. 앱의 UI에서 폰트가 어떻게 설정되는지 확인할 수 있는 부분.
• UIBackgroundModes: fetch 값이 설정되어 있어, 이 앱이 백그라운드에서 데이터를 가져오는 기능을 지원. 이를 통해 앱이 백그라운드에서도 데이터를 갱신할 수 있음을 알 수 있음.