iOS 개발일지
0824 새싹 37회차 정리 본문
iOS 앱 개발자 데뷔 과정 37회차
#0. Memo
- App Sandbox
미국에서 어린 아이의 안전을 위해 모래통 (sandbox) 에서만 놀도록 하는데서 유래한 보안 모델이다.
iOS는 앱 하나당 전부 Sandbox화 되어있어, 다른 앱에 대한 접근이 불가능하다.
- Bundle Container
앱의 번들로 파일, info.pilist, Resource 등을 그룹화
Compile Source(.swift) 가 바이너리 형태의 실행 파일로 변환
- Data container ( = AppData 폴더) Documents
개발자가 접근 가능한 디렉토리는 Documant, Library, tmp, System Data 이므로 Document의 서브디렉토리를 통해 관리
사용자가 앱을 통해 생성한 문서, 파일, 음악 등의 컨텐츠 등을 저장하며, 설정에 따라 사용자가 직접 파일을 추가하거나 삭제 가능
따라서 Document 내부에는 삭제, 변경되어도 무방하고 사용자가 다루는 컨텐츠와 관련된 파일들만 저장
- Data container ( = AppData 폴더) Library
사용자 데이터 파일과 임시 파일을 제외한 모든 파일을 관리
사용자 노출을 피하고 앱의 기능이나 관리에 필요한 파일 저장
#1. Checklist
- pass data - protocol
다양한 데이터 전달 방법 중, 이번에는 프로토콜을 사용해 데이터를 전달해보자.
[5주차 마무리] 에서 한번 다뤘었지만, 한번 더 짚고 넘어가려고 한다.
.
.
.
.
.
.
.
.
- Generic
Generic을 활용해 화면 전환 코드를 아래처럼 열거형과 스위치로 구현해놓으면, 이후 사용이 매우 간단해진다.
한 가지 주의해야 할 점은, 파라미터와 T를 잘 구분해서 사용해야 한다는 것이다.
T는 정해지지 않은 타입을 나타낼 뿐이고, 실질적으로 present 혹은 push 될 VC는 파라미터로 전달받은 viewController이다.
한 번 기억하면 잘 헷갈리지는 않을 것 같지만, 헷갈리더라도 컴파일 에러가 발생하니 금방 찾을 수 있다.
사용해야 할 때도 헷갈리면 안 될 것이 있는데, ImageSearchViewController()의 인스턴스를 vc로 초기화했다.
이 상태에서 trasition의 매개변수에 vc가 아닌 ImageSearchViewController() 를 전달하면 그건 vc와는 다른 인스턴스가 된다.
당장 컴파일 에러가 발생하지 않고, 화면전환이 이루어지더라도 문제가 발생할 수 있으니 헷갈리지 않도록 하자.
- FileManager
아이폰의 앱마다 자기만의 공간을 가지고 있는데, 이 공간을 관리하는 매니저가 FileManager 라고 할 수 있다.
FileManager를 통해 파일 생성, 읽기, 삭제 등 파일의 저장에 관한 작업을 수행할 수 있다.
그리고 이러한 기능을 하는 함수들을 모아 extension 으로 분리하면, 코드의 가독성이 좋아지고 관리하기도 용이하다.
# 그 외
- 유저 이벤트 무시 / isUserInteractionEnable
만약 통신이 완료되기 전에 유저가 셀을 선택한다면, 선택된 셀에 대한 정보를 전달하는 코드에서 에러가 발생할 수 있다.
이러한 문제를 방지하기 위해, 앱이 이벤트를 받을 준비가 될 때까지 사용자 이벤트를 무시할 수 있다.
viewDidLoad에서 isUserInteractionEnabled를 false로 설정해 차단한 뒤, 준비가 완료된 후 true로 전환한다.
'SeSAC iOS 데뷔과정 2기' 카테고리의 다른 글
0826 새싹 39회차 정리 (0) | 2022.08.26 |
---|---|
0825 새싹 38회차 정리 - 백업/복구 (feat. UIDocumentPickerViewController) (0) | 2022.08.25 |
0823 새싹 36회차 정리 (0) | 2022.08.24 |
0822 새싹 35회차 정리 - Realm (0) | 2022.08.23 |
0821 새싹 7주차 마무리 (0) | 2022.08.21 |