-
1001-iOS앱개발 기초> 앱구조 이해iOS/iOS기초(네이버edwith*obj-c) 2022. 2. 24. 00:18
앱의 시작은 main함수 (main.m)
main함수에서 UIApplicationMain이 호출 -> 앱의 기본 설정을 확인 (.plist) -> MainWindow.xib를 메모리로 가져옴
NSStringFromClass([AppDelegate class]) ; -> @"AppDelegate" 라는 클래스를 의미: 시스템에서 실행해서 시스템의 메시지를 처리하는 역할
** 스토리보드 이전 방식
1. info.plist파일에서 앱 실행시 storyboard가 아닌 MainWindow.xib가 켜지도록 설정을 변경
2. File's Owner지정: MainWindow.xib 를 누가 메모리로 load 되게 했는지? --> class에 UIApplication 지정
3. AppDelegate:
* Delegate패턴 - UIApplication의 다양한 시스템 메시지(ex. push메시지, 사용자가 홈버튼을 눌러서 앱이 백그라운드 상태로 전환, 메모리 경고 등) 를 처리할 대상으로 지정하는 것
4. IBOulet추가: MainWindow.xib에서 window를 땡겨오기
- AppDelegate는 화면에 window를 보여줘야 하기 때문에 Outlet으로 window를 땡겨와야 함
5. AppDelegate.m 파일에서 추가 초기화
didFinishLanchingWithOptions: 앱이 실행되고 모든 로딩이 끝났으니 필요한 처리를 추가하는 부분
- window가 화면에 표시되게끔 makeKeyAndVisible추가
<앱 구조 정리>
iOS 앱은 단일 window (MainWindow.xib) 위에 여러개의 view가 올라가는 구조
- view란 화면에 보이는 구성요소 (lable, button 등)
<UI view 설계>
1. window 위에 3개의 sub view (image view, label, switch) 를 올림 --> super view인 window가 life cycle을 관리
2. window에 추가한 3개의 view를 제어하기 위해 먼저 3개 view를 담아놓을 그릇을 멤버변수에 선언
--> 인터페이스 빌더가 인식하도록 IBOutlet으로 연결 --> 드래그로 연결
3. 구현부에서 초기화 작업
** protocol 개념 : 클래스의 상속과는 관계없이 AppDelegate는 UIApplicationDelegate 프로토콜을 conforming
UIApplication이 요구하는 다양한 시스템 메신저들 (초기화 끝, 초기화 추가적으로 해, 곧 forgroud/background로 갈거야 ~ 등) 이 UIApplicationDelegate라는 프로토콜에 선언이 되어있음
-> AppDelegate가 그 중에서 필요한 것만 가져와 쓰는 것임 (UIApplication이 Appdelegate에게 전달)
: UIApplicationDelegate문서 중 일부 -> 다양한 시스템 메신저들이 정의되어있음
didFinishLanchingWithOptions: 앱이 실행되고 모든 로딩이 끝났으니 필요한 처리를 추가하는 부분
여기에 멤버변수의 초기상태를 구현해줌
'iOS > iOS기초(네이버edwith*obj-c)' 카테고리의 다른 글
1003-iOS앱개발 기초> Property with Collection Object (0) 2022.03.04 1003-iOS앱개발 기초> MVC Overview 2 (0) 2022.03.03 1003-iOS앱개발 기초> MVC Overview (0) 2022.03.03 1001-iOS앱개발 기초> Target Action 실습 (0) 2022.03.03 1001-iOS앱개발 기초> Target Action (0) 2022.02.24