#Morning Algorithm
프로그래머스 바탕화면 정리
- 해결
- 1시간
- String Array를 String.element 하나씩 탐색
for (i, str) in array.enumerated() {
for (j, element) in str.enumerated() {
// element == array[i][j]
}
}
- 최대 최소를 저장할 땐 min/max(저장값, 비교값)를 사용해보자
#AutoLayout 세션
- Hugging(default: 251)
- 어느 한쪽이 커져야 할까?
- 동적으로 크기나 위치를 설정할 때, 의존하는 것과 의존당하는 것중 하나의 Intrinsic Size 동적으로 설정하게 됨
-> 이 때, Hugging Priority가 높은 쪽의 Intrinsic Size를 유지하고 낮은 쪽을 늘림
- Compression(default: 750)
- 어느 한쪽이 작아져야 할까?
- 공간이 모자라 한쪽의 Intrinsic Size를 줄여야 함
-> Compression Priority가 높은 쪽의 Intrinsic Size를 유지하고 낮은 쪽을 줄임
# 강의
한번에 TableView 여러 셀의 삽입, 삭제, 이동의 애니메이션들을 실행할 때 애니메이션들을 한번에 실행(뷰에 한번 그리기)
- performBatchUpdates() : insert, move, delete를 하나의 단위로 묶어서 한번에 drawing 업데이트(delete 우선 실행됨)
Expandable Cell
- cell 내부에서 prepare(), prepareForReuse() 구현을 통해 재사용 될 때 이벤트를 반영하도록 하고
셀 터치시 reloadRows(at: , with:) 메서드 실행 (tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)에서)
#객사오
- 설계를 할땐 상태가 아니라 행동에 포커스(행동이 상태를 결정한다) - 책임 주도 설계
- 객체 지향은 현실 세계의 추상화나 모방 수준을 넘은 은유다(실재에서 불가능한 소프트웨어 행동을 하는 객체를 만들수 있다)
-> 현실의 모방이아닌 새로운 소프트웨어 세계를 설계해라