# 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까지 가능하게 해준다.