---
# System prepended metadata

title: 47번 회의실 피어세션

---

# 47번 회의실 피어세션

## 🖥 참여자
- S026 송민관
- S029 심영민
- S030 양어진
- S053 조기현

## ⏱ 진행 시간

시간 : 9월 18일 13:30 ~ 15:30

## 📖  세션에서 고민한 내용
- 전체적인 설계
- PieGraph 그리기
    - 라벨 위치에 관해서..
- CollectionView
    - Autolayout Constraints 설정하는 방법
- SceneDelegate
- IBOutletCollection의 식별
    - 태그 접근? : 리뷰어님이 유지보수 측면에서 좋지 않다고 함.
    - Identifier 접근?
- NSCoding과 Codable을 통한 아카이브 
    - 클래스 내의 구조체 Codable + 클래스 NSCoding을 통해 상속 관계를 유지하면서도 클래스 내의 구조체 데이터까지 잘 저장할 수 있다.

## 공유/토론한 내용
- class diagram
    - https://app.diagrams.net/
- Combine vs RxSwift 
- collection view 사용법
    - Collection View Cell의 크기는 `sizeForItemAtIndexPath`에서 설정하는데, 이때 정한 크기를 리턴해줄 수 있다.
- class와 struct를 섞어 복잡한 계층을 만들었을 때, userDefault를 사용하는 방법
- factory patter
    - 객체 생성 로직을 분리할 수 있다. consumer가 직접 생성하지 않아도 됨.

## 배운 내용

- Notification.Name 을 Extension 하여 어디서나 사용할 수 있도록 하기
    ```swift
    extension Notification.Name {
        static let buttonDidTap = Notification.Name("buttonDidTap")
    }
    ```
- Split View 설정하는 방법
    - orientation 을 여러 모든 방향에 대해 가능하도록 설정

- Combine의 Sink 와 addObserver의 차이?
    - Sink를 사용하면 따로 addObserver와 target함수 지정 필요없이 코드 블럭에 원하는 내용을 구현할 수 있다.
    - Sink를 사용하면 현재 미션에서 한 Notification과 결합하여 사용하는 것 외에도, 어떤 publisher든 결합(구독)이 가능하다.
    - Subscriber 프로토콜을 채택한 클래스를 구현해서, 모든 구독을 모을 수 있다. Subscriber 프로토콜은 받을 때 원하는 데이터 양을 조절하고, 에러 처리, 데이터 완료 후 complition까지 가능하게 해준다.