[SeSAC 2달차 회고] iOS 개발자가 하고 싶어?

Madeline👩🏻‍💻·2024년 3월 15일
2

회고 모음

목록 보기
1/5
post-thumbnail

이번주 회고

1. What I did?

1) 개인앱 출시 프로젝트

"로또일기"는 사용자의 로또 구매 경험과 당첨되면 하고 싶은 일을 기록하고, 로또 번호 생성, 당첨 결과 조회, 판매점 위치 등을 알려주는 앱이다.

주요 기능 소개
당첨 번호 한눈에 보기: REST API를 통해 최신 로또 당첨 번호를 조회
로또 일기: 로또를 구매하기 전, "당첨되면 하고 싶은 일"을 글과 이미지로 기록
맞춤 알림 설정: 당첨 결과 발표 시간에 맞춰, 또는 원하는 시간에 알림
로또 정보: 추천 번호, 로또 판매점 지도

기획부터 디자인, 개발까지 혼자 하느라 힘들긴 하지만,
(또 포폴용이라 애정이 많이 안가지만)
그래도 해야지.

  • KakaoMapsSDK를 사용해볼라고했는데, 레퍼런스는 1도 없고, 샘플 코드는 코코아팟이 필요해서 코코아팟도 설치 완..

🍺 Pouring이라니 이녀석들 재치있군ㅋㅋㅋㅋ

2) 개발일지를 쓰기 시작했다.

개인 앱 출시 프로젝트에 대해 개발 공수 산정이란 것도 처음 해봤다. 현업에 가기 위한 준비는 내 예상보다 더 멀고 험한 것 같다. 이정도만 하면 되겠지 하고 안일하게 생각했다가는 취준 기간만 길어질 걸 알기에,,
아무튼 개발 공부에서 중요한 것 중 하나가 개발 공수 산정이더라.

🎅🏻: 00씨, 이거 언제까지 할 수 있어요?

라는 질문에 대답하기 위해서 인데,
iOS개발은 특히 다양한 분야의 사람들과 협업하고 소통을 잘할 수 있어야 하기 때문이고, 또 무작정 빨리 할 수 있다고 했다가 미루는 사람보다, 본인 실력과 개발 환경을 잘 파악하고 비슷하게 예측할 수 있는 사람을 더 좋아하기 때문이다.
(이제는 "처음이라 못해도돼" 상태에서 정말 벗어나고 싶지만,,)

우선 개발할 수 있는 Iteration 8 기간(스프린트와 유사)에 대한 큼지막한 계획을 세워봤다.
각 Iteration은 4일정도이다.

3) 개발 공수 산정

Iteration 1~5: 개발기간
Iteration 6~8: 출시 준비, 심사 기간, QA 테스트, 버그잡기, ...

그리고 각 Iteration 별로 할 수 있는 일들을 마찬가지로 크게 잡아보았다.

✏️

Iteration1: 기획, UI 디자인, 카카오맵 Trial

Iteration2: 로또 API 받아오기, 메인뷰UI, Realm 데이터베이스 준비, 다이어리 UI, 나머지 뷰 UI 기획&디자인

Iteration3: 카카오맵뷰, 서브뷰 UI & 로직(QR코드 인식), 로또 날짜 기준 회차 계산 로직(월화수)

Iteration4: 설정뷰UI & 로직, 당첨판매점 정보 웹크롤링 (목금토일), Compositional Layout + Diffable 활용해서 UI

Iteration5: 일기 Realm CRUD, 기획 디자인 수정, 카카오맵 search API, DG차트

Iteration6: 출시 준비, QA

4) 👩🏻‍🚒 트러블 슈팅 기록

  1. url에 https안쓰고 http쓰면 생기는 일:
    https://velog.io/@maddie/iOS-https%EC%95%88%EC%93%B0%EA%B3%A0-http%EC%93%B0%EB%A9%B4-%EC%83%9D%EA%B8%B0%EB%8A%94-%EC%9D%BC

  2. LLDB 섬띵 에러

LLDB is likely reading from device memory to resolve symbols"? Is there anything I can do to reduce or avoid this wait?

https://jangsh9611.tistory.com/26
위 블로그 보고 해결
(그냥 느린데 계속 기다릴거냐는 별거 아닌 에러였음)

  1. View 와 ViewController 분리

MVVM이랍시고 열심히 정리하고 잘 쓰는 줄 알았는데,
https://velog.io/@maddie/iOS-MVVM%EC%9D%B4-%EB%AD%90%EC%95%BC
View와 ViewController도 분리해야 되더라고. 나 빼고 다들 잘 하고 있었나?ㅎ
그래서 이 부분도 리팩토링할 예정이다.

  1. 접근 제어자를 잘 쓰자 !

2. What I learned?

1) Diffable + CompositionalLayout

기존 iOS12까지 사용하던 방식인
DataSource + FlowLayout + section/cell
에서, iOS13부터 사용하는 모던 컬렉션뷰 형식인
Diffable + CompositionalLayout + contentConfiguration, backgroundConfiguration
의 사용법에 대해 배웠다.

또 시스템 셀인 ListCell, 또는 커스텀셀을 사용할때의 차이점과, 섹션 나누는 법을 배웠다.

특히 여러 메서드의 호출 순서가 중요했다.

// MARK: 6. 호출 순서도 중요하다! 주석: 안쓰면 나는 오류
        setConstraints() // 🚨 illegal
        configureDataSource() // 🚨Fatal error: Unexpectedly found nil while implicitly unwrapping an Optional value
        updateSnapshot() // reload

먼저 Constraints와 레이아웃을 잡은 뒤에,
Diffable로 Cell Registration을 해주고, 그 다음에
스냅샷을 통해 뷰에 적용시켜줘야 한다.

2) 👿 보라색에러는 대충 메인스레드 시키라는 뜻이다.

👿 Synchronous URL loading of https://picsum.photos/id/0/5000/3333 should not occur on this application's main thread as it may lead to UI unresponsiveness. Please switch to an asynchronous networking API such as URLSession.

네트워크 호출은 비동기로 이루어져야 한다.
Alamofire도 알아서 비동기로 처리한다.

그리고 UI관련된 코드는 main 스레드가 하라고 하자.

3. TODO

이제 Iteration 2개(일주일)정도 남은 시간 안에 개인앱 출시 프로젝트를 마무리해야 한다.
또 미리미리 면접 대비겸 개념을 잘 정리해둘 필요가 있겠따.

profile
🍎 Apple Developer Academy@POSTECH 2기, 🍀 SeSAC iOS 4기

0개의 댓글

관련 채용 정보