iOS 개발을 시작해본다

김태웅·2020년 5월 26일
0

iOS

목록 보기
1/1
post-custom-banner

iOS를 swift를 이용하여 개발해 보려고 한다.
본격적인 개발 전, 내가 개발하는 어플의 기본 정보들을 담고 있는 곳들과 iOS 생명주기에 대해 알아보자.

안드로이드에서 Manifest파일과 비슷한 역할을 하는 곳으로 Info.plist 파일과 프로젝트 최상위 파일이 있는 듯 하다.

Info.plist

내가 개발할 어플의 권한 등의 정보를 모아서 볼 수 있다.

Key-Value 형식으로 저장되며 기본적으로 12개 항목의 정보를 포함하고, 추가/삭제가 가능하다.

- Application requires iPhone environment : 실행 가능한 아이폰 환경
- Application users Wi-Fi : Wi-Fi 사용여부
- Bundle creator OS Type code : 애플리케이션 개발자의 OS 코드
- Bundle display name : 애플리케이션 아이콘에 나타나는 이름
- Bundle identifier : 애플리케이션의 고유 식별자
- Bundle name : 애플리케이션의 실제 이름
- Bundle OS Type code : 애플리케이션 실행 OS 코드
- Bundle version : 애플리케이션의 버전
- Bundle version string. short : 구체적인 애플리케이션의 버전
- Executable architectures : -
- Executable file : 실행 가능한 파일
- Get Info string : -
- Icon already includes gloss and bevel effects : 아이콘 표시 효과 설정
- Icon file : 아이콘 파일
- Initial interface orientation : 기본 화면의 가로/세로형 설정
- Localization native development region : -
- Localized resources can be mixed : -
- Main nib file base name : 기본 nib 파일
- Renders with edge antialisasing : 안티앨리어싱 사용 설정
- Renders with group opacity : 투명도 사용 설정
- Required device capabilities : 사용가능한 장치를 설정
- Status bar is initially hidden : 상태바를 표시 설정
- Status bar style : 상태바 스타일 설정
- Supported external accessory protocols : 확장 프로토콜 사용 설정
- Upgrade other bundle identifier : 업그레이드를 위한 식별자
- URL types : 커스텀 URL 사용 설정

프로젝트 최상위 파일

프로젝트 생성 후 최상위 프로젝트 파일을 클릭하면 어플의 기본 정보들을 설정/확인이 가능하다.

- PROJECT
모든 파일, 리소스, 하나이상의 software를 빌드하는데 필요한 정보의 저장소.
- TARGETS
프로젝트에는 하나 이상의 Target이 포함 될 수 있으며, 각 Target은 하나의 제품(one product)를 생성한다.
- Identity 
버전 및 빌드 번호, 어플 이름 등을 설정할 수 있다.
안드로이드의 패키지명, 버전 번호 등을 설정하는 것과 비슷하다.
- Signing 
사용할 팀, 개발자 라이선스 등을 설정 할 수 있다
App Store에 등록을 하기 위해서 필요한 정보들 이며, ios 개발자 등록을 위해서는 1년에 약 한화로 10만원 정도의 지불이 필요하다.
- Deployment Info
어플이 실행될 수 있는 최소버전 을 target을 통해 설정하거나,
Status Bar Style을 통해 상태 바 스타일을 선택할 수도 있다.

iOS 생명주기

생명주기 ?

앱이 실행되고 동작하다가 종료되기까지 일련의 과정을 뜻하며, 앱이 실행되어 메모리에 올라가고 foreground 및 background에서 동작한다. 메모리가 부족해지거나 사용자가 임의로 종료 시키는 등 앱이 종료되면 메모릴에서 관련 데이터가 삭제된다.

App State

앱은 생명주기동안 다섯 단계의 상태를 거친다.

- Not Running : 실행되지 않았거나, 시스템에 의해 종료된 상태.
- Inactive : 실행 중이지만 이벤트를 받고있지 않은 상태. 예를들어, 앱 실행 중 미리알림 또는 일정 얼럿이 화면에 덮여서 앱이 실질적으로 이벤트는 받지 못하는 상태등을 뜻한다.
- Active : 어플리케이션이 실질적으로 활동하고 있는 상태.
- Background : 백그라운드 상태에서 실질적인 동작을 하고 있는 상태. 예를 들어 백그라운드에서 음악을 실행하거나, 걸어온 길을 트래킹 하는 등의 활동을 뜻한다.
- Suspended : 백그라운드 상태에서 활동을 멈춘 상태. 빠른 재실행을 위하여 메모리에 적재된 상태지만 실질적으로 동작하고 있지는 않는다. 메모리가 부족할때 비로소 시스템이 강제종료한다.

대부분의 상태 전환은 AppDelegate객체의 메소드 호출을 통해 거친다.
Appdelegate는 UIApplicationDelegate, UIResponder을 상속 및 델리게이트 참조 하고 있으며, UIApplicationDelegate에서는 UIApplication 객체의 작업에 개발자가 접근할 수 있도록 아래와 같은 메소드들을 담고 있다.

- application:willFinishLaunchingWithOptions: 어플리케이션이 최초 실행될 때 호출되는 메소드
- application:didFinishLaunchingWithOptions: 어플리케이션이 실행된 직후 사용자의 화면에 보여지기 직전에 호출
- applicationDidBecomeActive: 어플리케이션이 Active 상태로 전환된 직후 호출
- applicationWillResignActive: 어플리케이션이 Inactive 상태로 전환되기 직전에 호출
- applicationDidEnterBackground: 어플리케이션이 백그라운드 상태로 전환된 직후 호출
- applicationWillEnterForeground: 어플리케이션이 Active 상태가 되기 직전에, 화면에 보여지기 직전의 시점에 호출.
- applicationWillTerminate: 어플리케이션이 종료되기 직전에 호출

ViewController 생명주기

AOS에서 하나의 액티비티를 iOS에서는 하나의 ViewController라고 생각하면 비슷하다고 볼 수 있다.
AOS와 마찬가지로 하나의 ViewController마다 상태와 생명주기를 가진다.

viewDidLoad: ViewController가 처음 호출 될 때 
viewWillAppear: ViewController가 화면에 나타나기 직전에 호출 
viewDidAppear: ViewController가 화면에 나타난 직후에 호출 
viewWillDisappear: ViewController가 화면에 사라지기 직전에 호출
viewDidDisappear: ViewController가 화면에 사라진 직후에 호출

안드로이드와 비교하며 쓰려고 했는데 비슷한듯 달라서 쓰지 못했다.
ViewDidLoad는 ViewController를 호출하면 맨 처음 한번만 호출하며(onCreate)
그 이후로는 ViewWillAppear -> ViewDidAppear 의 동작으로 ViewController가 호출되고,
ViewWillDisappear -> ViewDidDisappear 의 동작으로 ViewController가 사라진다.

profile
Everything Counts
post-custom-banner

1개의 댓글

comment-user-thumbnail
2021년 7월 7일

후속글 더올려주셈요!!!!!

답글 달기