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 |
---|
댓글