ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 1001-iOS앱개발 기초> 앱구조 이해
    iOS/iOS기초(네이버edwith*obj-c) 2022. 2. 24. 00:18

    앱의 시작은 main함수 (main.m)

    main함수에서 UIApplicationMain이 호출 -> 앱의 기본 설정을 확인 (.plist)  -> MainWindow.xib를 메모리로 가져옴

    NSStringFromClass([AppDelegate class]) ;  ->  @"AppDelegate" 라는 클래스를 의미: 시스템에서 실행해서 시스템의 메시지를 처리하는 역할

     


    ** 스토리보드 이전 방식

    xib파일이 화면 하나에 대한 기록을 가지고 있음

    1.  info.plist파일에서 앱 실행시 storyboard가 아닌 MainWindow.xib가 켜지도록 설정을 변경

     

    2. File's Owner지정: MainWindow.xib 를 누가 메모리로 load 되게 했는지? --> class에 UIApplication 지정

     

     

    3. AppDelegate: 

    * Delegate패턴 - UIApplication의 다양한 시스템 메시지(ex. push메시지, 사용자가 홈버튼을 눌러서 앱이 백그라운드 상태로 전환, 메모리 경고 등) 를 처리할 대상으로 지정하는 것

    UIApplication의 메시지들이 담당자인 App Delegate에게 전달됨

     

    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를 담아놓을 그릇을 멤버변수에 선언

    AppDelegate.h

    --> 인터페이스 빌더가 인식하도록 IBOutlet으로 연결  --> 드래그로 연결

     

     

    3. 구현부에서 초기화 작업

     

    ** protocol 개념 : 클래스의 상속과는 관계없이 AppDelegate는 UIApplicationDelegate 프로토콜을 conforming

    UIApplication이 요구하는 다양한 시스템 메신저들 (초기화 끝, 초기화 추가적으로 해, 곧 forgroud/background로 갈거야 ~ 등) 이 UIApplicationDelegate라는 프로토콜에 선언이 되어있음

    -> AppDelegate가  중에서 필요한 것만 가져와 쓰는 임  (UIApplication이  Appdelegate에게 전달)

     

     

    : UIApplicationDelegate문서 중 일부 -> 다양한 시스템 메신저들이 정의되어있음

     

     

     

    didFinishLanchingWithOptions: 앱이 실행되고 모든 로딩이 끝났으니 필요한 처리를 추가하는 부분

    여기에 멤버변수의 초기상태를 구현해줌

     

    댓글

Designed by Tistory.