Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Eddy, Beck] Step3 - Download Image Concurrently #3

Open
wants to merge 8 commits into
base: develop
Choose a base branch
from

Conversation

SangHwi-Back
Copy link
Collaborator

작업 목록

  • doodle.json 파일을 프로젝트에 옮겨와 불러옴
  • json파일을 원하는 데이터 형태로 디코딩 할 수 있도록 decoder 함수 구현.
  • DoodleManager 모델에서 비동기로 이미지 데이터까지 호출할 수 있도록 기능 구현.
  • 이상의 작업을 전부 테스트 가능하도록 테스트 코드 작성.
  • DoodleViewController 컬렉션 뷰에 로드 된 이미지를 표시하도록 기능 구현.
  • 각 셀마다 UIMenuController를 이용한 UIMenuItem 추가.

고민과 해결

Decoder 구현

(고민) json의 모든 데이터들은 String이었고, 이대로 저장하게 된다면 뷰 컨트롤러나 모델에서 해당 데이터들을 변환하는 작업들이 이뤄질 수 밖에 없었습니다. 이는 코드가 복잡해져서 유지보수성이 많이 떨어지는 상황이었습니다.

(해결) 짝 프로그래밍을 통해 같이 디코더의 기능을 구현하고 필요한 여러 데이터 형태로 디코딩이 가능하도록 하였습니다(Doodle.swift).

Model의 역할

(고민) 최초 디코딩 되어 메모리에 적재되는 데이터는 Doodle 객체를 담는 배열입니다. 하지만 뷰 컨트롤러에서 사용하는 데이터는 이미지 URL을 복사하여 Data의 형태로 다운로드 한 것인데, 이 작업을 뷰 컨트롤러에서 할지 모델에서 할지 고민해보았습니다.

(해결) 작업은 모델에서 진행하기로 하였습니다. 뷰 컨트롤러는 유저 이벤트가 발생하고 Serial Queue에서 진행해야 할 작업이 많은 부분이기 때문에 여기서 비동기/동기 작업을 하는 것은 UI를 망가뜨릴 수 있다고 서로 합의하였습니다.

비동기 작업 시 미리 데이터를 받아오고 진행하여 비동기 작업 진행을 최소화 하는 것도 전략이라는 것을 알 수 있었습니다.

@SangHwi-Back SangHwi-Back requested review from godrm and removed request for BumgeunSong March 25, 2022 07:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants