[UMC] 4주차 워크북

nini·2022년 6월 17일

UMC

목록 보기
4/13
post-thumbnail

TableView 기본

TableView란?

  • 단일 열에 배열된 행을 사용하여 데이터를 표시하는 뷰
  • 화면에 목록을 표시하기 위한 UI 구성요소

Swift 4가지 기본 특징

  • 프로토콜 지향 언어
  • ArrayList(=Dictionary)
  • DataSource
  • Delegate

프로토콜 지향 언어

객체 vs 프로토콜

  • 객체 지향 언어 = “is a”
  • 프로토콜 지향 언어 = “have a”
    • 기능, 능력, 특징을 중심으로 말한다
protocol <프로토콜명> {
				// 프로토콜 정의
}
  • 프로토콜은 클래스나 구조체가 어떤 기준을 만족하거나 또는 특수한 목적을 달성하기 위해 구현해야 하는 메소드와 프로퍼티의 목록이다. (객체지향에서의 인터페이스와 거의 비슷)
  • iOS는 특정 컨트롤에서 발생하는 각종 이벤트를 효율적으로 관리하기 위해 대리자(delegate)를 지정하여 이벤트 처리를 위임하고, 실제로 이벤트가 발생하면 위임된 대리자가 콜백 메소드를 호출해주는 델리게이트 패턴(Delegate Pattern)을 많이 사용하는데, 이 패턴을 구현하기 위해 이용되는 것이 프로토콜이다.

ArrayList

  • 추가, 수정, 삭제에 용이하다
  • ex) Array : 발표장 & ArrayList : OIKE 한정 판매
  • 순차리스트 : 배열을 기반으로 구현된 리스트
  • 배열 기반 리스트의 단점
    • 배열의 길이가 초기에 결정되어야 한다. 변경이 불가능!
    • 삭제의 과정에서 데이터의 이동(복사)이 매우 빈번히 일어난다.
  • 배열 기반 리스트의 장점
    • 데이터의 참조가 쉽다. 인덱스 값을 기준으로 어디든 한번에 참조가 가능하다.

DataSource

: ViewController에게 데이터를 전달해주는 객체

  • 코드를 화면에 구현시켜줌
  • 데이터를 받아 뷰를 그려주는 역할 → 너는 뭘 어떻게 보여줄거냐? 그것을 해주는 것이 DataSource

Delegate

  • (권한업무 등을) 위임하다
  • Protocol을 통해 기능 구현 → Delegate를 통해 기능 위임 → 위임 받은 Object에서 Protocol 기능 사용
  • 기능을 다른 곳에서도 사용할 수 있도록 만들어주는 객체
  • 객체 지향 프로그래밍에서 하나의 특정 객체가 모든 일을 처리하는 것이 아니라 처리 해야 할 일 중 일부 작업을 다른 객체에 넘기는 것을 뜻함
  • ex) View Controller에서 보자면 TableView의 특정 셀에 있는 여러 개의 버튼 중에 특정 버튼을 눌렀을 경우 해야할 일을 View Controller로 넘겨주기 위해 Delegate 패턴을 사용함
  • 어떤 행동에 대한 "동작"을 제시
  • DataSource는 "보여주는" 것들 담당했다면, delegate는 사용자가 그 보이는 부분 중 어떤것을 클릭하거나 어떤 행동을 했을 때, 그 행동에 대한 동작을 수행하게 됨
  • 이 row를 클릭하면 뭘 할래?

Notification

  • NotificationCenter를 통해 정보를 저장하기 위한 구조체
  • 옵저버들에게 전달되는 구조체로 정보가 담겨있고, 해당 알림을 등록한 옵저버에게만 전달된다.
var name: Notification.Name // name : 알림을 식별하는 태그
var object: Any? // object : 발송자가 옵저버에게 보내려고 하는 객체 & 주로 발송자 객체를 전달하는 데 쓰임
userInfo: [AnyHashable : Any]? // userInfo : Notification과 관련된 값 또는 객체의 저장소

Notification Center (NSNotificationCenter)

  • notification이 오면 observer pattern을 통해서 등록된 옵저버들에게 notification을 전달하기 위해 사용하는 클래스
  • notification을 발송하면 NotificationCenter에서 메세지를 전달한 observer를 처리할 때까지 대기한다. 즉, 흐름이 동기적으로 흘러간다.
    • Notification Center를 통해서 앱의 한 파트에서 다른 파트로 데이터를 전달할 수 있다.
    • Notification이 오면 등록된 observer list를 스캔한다.
    • Notification Center는 어플리케이션 어느 곳에서 어느 객체와도 상호작용을 할 수 있다.
profile
사용자를 고려한 디자인과 UX에 관심있는 개발자

0개의 댓글