2021년 2월 22일 월요일
- Info.plist : Privacy - Camera Usage Description 과 Privacy - Photo Library Usage Description 추가
- 메모 목록 화면 구성
- Navigation VIew Controller 추가
- Prototype Cells : 2
- 두 개의 Prototype Cells 제작
- 오토 레이아웃 설정
- 메모 작성 화면 구성
- 메모 상세 화면 구성
- Controller 파일들 추가
2020년 2월 27일 토요일
- MemoData 파일 추가 : 데이터 모델 작성
- ARC : 특정 변수를 몇 군데에서 사용하고 있는가를 계산하는 시스템
- weak 타입으로 선언된 아웃렛 변수는 참조하더라도 카운트가 증가하지 않기 때문에 사용 도중에 해당 변수가 제거되고 메모리 회수 가능
- 언제 필요한가? - (1) 메모리가 부족할 때
- iOS에서는 메모리 부족 현상이 나타나면 ViewController에 정의된 didRecieveMemoryWarning() 메소드가 호출된다. 보통 이 메소드가 호출되면 메인 뷰가 nil이 되도록 처리하는데, 이렇게 되면 메인 뷰 내부에서 Weak타입으로 선언된 모든 변수는 카운트가 0이므로 함께 삭제된다 -> 이렇게 메모리 확보
- 만약 strong으로 변수를 선언했다면 변수의 카운트가 아직 0이 아니라면 메인 뷰가 nil이 되더라도 해당 변수는 삭제되지 않고 메모리에 그대로 남아있다. -> 메모리 누수 현상
- 언제 필요한가? - (2) 순환 참조 오류가 발생할 때
- 두 개 이상의 객체가 서로를 강하게 참조하고 있어서 객체들이 메모리에서 해제될 수 없는 상황
- 이 때 두 변수 중 어느 하나가 Weak 타입으로 참조되어 있다면 시스템은 순환 오류를 해결하기 위해 weak 타입으로 참조된 변수를 우선 해제한다. 그러면 참조 사이클이 끊어지면서 나머지 변수도 참조 카운트가 0이 되어 차례대로 메모리에서 해제된다.
- 언제 필요한가? - (1) 메모리가 부족할 때
- strong 타입으로 선언된 아웃렛 변수를 어디선가 참조하면 ARC에서 추적 가능하고 레퍼런스 카운트가 +1 처리
- weak 타입으로 선언된 아웃렛 변수는 참조하더라도 카운트가 증가하지 않기 때문에 사용 도중에 해당 변수가 제거되고 메모리 회수 가능
- 메모 작성 화면의 아웃렛 변수 선언 및 button action 추가
- MemoCell 클래스 구현
- MemoListVC 클래스 구현 -> 메모를 작성하고 목록에 반영하는 작업
- MemoReadVC 클래스 구현 -> 메모 상세 화면 구현
- 시작 화면 설정 및 앱 아이콘 추가
- https://makeappicon.com/ : 이 링크에서 해상도별 아이콘 변환 가능
2020년 2월 28일 일요일
- frame의 좌표 기준은 슈퍼 뷰이다. 슈퍼 뷰의 기준점을 원점으로 하여 자신의 좌표를 계산한다.
- 하지만 bounds에서 좌표 기준은 자기 자신이다. 즉, 슈퍼 뷰의 기준점이나 화면 전체의 원점과는 상관없이 항상 자기 자신을 좌표의 기준으로 삼는다. 이 때문에 bounds속성에서 x, y좌표의 값은 일반적으로 항상 (0,0)을 가리킨다.
- 뷰 내부에 서브 뷰를 추가하기 위해 (0,0)의 좌표가 필요하거나 뷰 내에서 터치 이벤트가 발생한 위치를 판별해야 할 때 사용하는 경우가 많다.