TIL - 2021.03.28 (Sun)

Youngwoo Lee·2021년 3월 28일
0

TIL

목록 보기
15/29
post-thumbnail

지난 일주일 복습하며 헷갈리던 것 정리

extension

  • 멤버를 추가하는 것은 가능하지만, Overriding(재정의)하는 것은 불가능
  • Adding Properties
    • 연산 프로퍼티만 추가할 수 있다(저장 프로퍼티는 불가능하다!!)
    • 연산 프로퍼티만 추가할 수 있기에, 프로퍼티 감시자는 extension에서 구현 불가
    • 연산프로퍼티의 경우는 초기화가 필요없지만 저장프로퍼티의 경우 init으로 초기화가 필요해서 기존 class의 init이 추가되는 저장프로퍼티를 포함하지 못하기에 막아둔 듯 하다

월요일 Kahoot

KVONotification Center은 타입 사이의 결합도를 낮출 수 있다

UML

연관관계(Association) vs 의존관계(Dependency)

연관관계
다른 객체의 참조를 가지는 인스턴스 변수를 가지고 있을 때 두 클래스는 연관 관계라고 합니다. 아래 그림은 Phone 클래스가 Button 클래스를 참조하는 연관 관계를 보여줍니다.

(Phone -> Button)

class Phone {
  	// buttons 프로퍼티의 타입이 Button 클래스
    let button: Button
}

class Button {
    
}
  • 중요) 생성된 인스턴스에 대한 참조를 유지한다는 것이 특징


의존관계

한 클래스가 다른 클래스를 참조하는 관계입니다. 한 클래스의 내부 프로퍼티에 저장하지 않고 사용하는 관계를 의존 관계라고 합니다. 아래 그림은 User 클래스가 Scheduel 클래스를 의존하는 관계를 보여줍니다.

class Schedule {
    func date() {
      
    }
}

class User {
    func createSchedule() -> Schedule {
        Schedule()
    }
  
    func useSchedule(schedule: Schedule) {
        schedule.date()
    }
}
  • 중요) 즉 의존 클래스의 인스턴스 변수를 유지하지 않는다

    • 한 클래스의 메소드가 다른 클래스를 인자로 받아 메소드내에서 사용

    • 한 클래스의 메소드 내에서 다른 클래스를 생성하고 생성된 클래스의 메소드를 사용한다 (메소드 내에서만 사용하고 메소드 반환시 의존 클래스 인스턴스도 함께 사라진다

      -> 즉 로컬 변수로만 사용)

Protocol

  • 프로토콜 내에서 프로퍼티는 이름, 타입, get, set 만 명시 (항상 var로 선언)

  • 클래스 전용 프로토콜의 경우 class AnyObject 키워드를 프로퍼티에 상속?, 채택시킴

  • Delegation

    • 위임은 클래스나 구조체가 다른 타입의 인스턴스로 책임의 일부를 넘기는 디자인 패턴이다
    • Delegation된 기능을 제공할 수 있도록 Delegation된 책임을 캡슐화하는 프로토콜을 정의하는 것으로 구현
    • Delegation은 특정 액션에 응답하거나 해당 소스의 기본 타입을 알 필요없이 외부 소스에서 데이터를 검색하는 데 사용할 수 있다.
    • UITableViewDelegate를 생각하면 조금 더 이해가 쉬운 것 같다
  • 클래스 상속과 프로토콜 : 클래스에서 상속과 프로토콜 채택을 동시에 하려면 상속받으려는 클래스를 먼저 명시하고 그 뒤에 채택할 프로토콜 목록을 작성합니다. 반드시 클래스 먼저 명시해야된다!!!

  • Required라고 써 있으며 클래스 내에 반드시 메서드를 구현해야 한다

  • Optional이라고 써 있으면 클래스 내에 필요하면 메서드를 구현함

마무리 못한 주제

  • Generic
  • AssociatedType
  • initialize 좀 더 정리

주간 회고

아직 많이 부족함을 깨닫고 장기전을 준비하자...
지혜롭고, 계획적으로 준비하자. 너무 다급해하지 말자...

profile
iOS Developer Student

0개의 댓글