본문 바로가기
iOS/iOS 프로그래밍

iOS 애플리케이션 구조와 개발 아키텍처

by shinyou1024 2020. 5. 20.

MVC

애플리케이션 코드를 처리하는 로직과 데이터를 프레젠테이션하는 코드와 분리한다

MVC를 이루고 있는 객체들

  • Model : 사용되는 데이터를 캡슐화
  • View : 사용자 인터페이스 표현 및 관리
  • Controller : 애플리케이션의 로직

뷰의 입력을 모델이 반영 & 모델의 변화를 뷰에 갱신

ViewController

  • Model과의 상호작용 : 노출한 메서드와 프로퍼티를 이용
  • View와의 상호작용 : Target-Action 패턴 (Outlet과 Action)

Target-Action 패턴

  • 목적 : 이벤트 발생 시 어떤 일이 발생할 지 지정
  • 즉, 사용자가 뷰 객체에 이벤트를 가했을 때 컨트롤러 객체의 어떤 메서드가 호출되는지를 정의

Action

뷰 객체가 뷰 컨트롤러 객체의 특정 메서드를 호출하는 것

  • 인터페이스 빌더 내에서 만들어진 객체와 뷰 컨트롤러 클래스의 코드가 연결됨
  • 즉, MVC 패턴의 View와 Controller가 서로 연결된다
  • IBAction 키워드로 액션 메서드를 선언한다

Outlet

뷰 컨트롤러 객체의 메서드가 직접 뷰 객체의 속성을 제어하는 것

  • 예) 뷰 컨트롤러에서 UILabel 객체의 문자열을 설정할 때

    이를 위해 아울렛은 먼저 IBOutelt 키워드로 선언되어야 함

  • IBOutlet : 접근이 필요한 뷰 객체를 참조하는 인스턴스 변수

Subclassing

새로운 클래스를 만들 때 기존 클래스로부터 상속받고 기능을 확장할 수 있다

  • 부모 클래스의 모든 기능 사용 가능
  • 추가 속성, 메서드를 통해 기능 확장 가능

이미 존재하는 클래스가 요구 사항을 만족시키기는 하지만 부족한 부분이 있을 때 주로 사용

  • 이미 존재하는 기능은 복사할 필요 없이 부족한 기능만 간단하게 추가 가능!

UIKit 프레임워크는 UIViewController 클래스를 가진다

  • 다른 서브클래스 들에서 이 클래스를 상속받아서 새로운 속성, 메서드를 추가할 수 있다

Delegation

객체가 다른 객체에게 하나 또는 여러 개의 작업 수행을 위임하는 것

  • 서브 클래싱을 사용하지 않고도 객체가 다른 모습을 갖게할 수 있다

예시 : UIApplication 클래스

UIApplication 클래스 : iOS 환경에서 앱을 관리하고 작동하게 하는 역할

  • 모든 iOS 앱은 하나의 인스턴스만을 가져야 한다

UIApplication 객체의 대부분의 작업은 백그라운드에서 수행됨

  • UIApplication이 여러 메서드를 델리게이션함으로써 개발자가 원하는 독특한 기능을 추가할 수 있다
  • AppDelegate.swift 파일에서 발견 가능

'iOS > iOS 프로그래밍' 카테고리의 다른 글

iOS 카카오 로그인 연동 (Swift)  (0) 2020.05.24

댓글