suvera-dev πŸ₯¦

AppJam, Havit iOS 개발 회고 본문

Private/Retrospect

AppJam, Havit iOS 개발 회고

suvera 2022. 2. 1. 11:15

 

SOPT의 λ§ˆμ§€λ§‰ ν™œλ™, AppJam이 끝이 났닀

λ‚˜λŠ” 3μ£Όλ™μ•ˆ ν•΄λΉ—μ΄λΌλŠ” μ„œλΉ„μŠ€λ₯Ό κ°œλ°œν–ˆλ‹€ 

 

λ°°μš΄μ λ„ 많고, κΈ°μ–΅ν•˜κ³  싢은 것듀이 λ§Žμ•„μ„œ κΈ€λ‘œ 남겨두렀고 ν•œλ‹€

개인적인 νšŒκ³ λŠ” 미뀄두고 .. κ°œλ°œμ— κ΄€ν•œ 것뢀터 정리해야겠닀.. 

 

1. κ΅¬ν˜„ν•˜λ©΄μ„œ 정리해놓고 μ‹Άμ—ˆλ˜ λ‚΄μš© - ν•˜λ‚˜μ”© ν¬μŠ€νŒ… ν•΄μ„œ 이 글에 링크둜 λ‹¬μ•„λ‚˜κ°ˆ μ˜ˆμ •.. 

2. κ°œλ°œν•˜λ©΄μ„œ μ–΄λ €μ› λ˜ 점 

3. λ¦¬νŒ©ν† λ§ + λ¦΄λ¦¬μ¦ˆν•˜λ©΄μ„œ κ΅¬ν˜„ν•  것듀

 

 

μ•±μžΌ, ν•΄λΉ—, 그리고 μ• μ¦μ˜ μΉ΄ν…Œκ³ λ¦¬ λ·°. 

λ‚˜λŠ” μΉ΄ν…Œκ³ λ¦¬ κ΄€λ¦¬ν•˜λŠ” λΆ€λΆ„κ³Ό λ§ˆμ΄νŽ˜μ΄μ§€λ₯Ό 맑게 λ˜μ—ˆλŠ”λ°, μ•±μžΌ λ‚΄μ—μ„œλŠ” λ§ˆμ΄νŽ˜μ΄μ§€λŠ” ν›„μˆœμœ„λΌ λ¨Όμ € μΉ΄ν…Œκ³ λ¦¬λ·°λ₯Ό κ΅¬ν˜„ν•˜κ²Œ λ˜μ—ˆλ‹€.

κΈ°νšμ—μ„œ ν”Œλ‘œμš°μ •λ¦¬λ„ ν™•μ‹€ν•˜κ²Œ 잘 λ˜μ–΄μžˆμ—ˆκ³ , λ””μžμ΄λ„ˆλ“€λ„ μ—΄μΌν•΄μ€˜μ„œ 뷰도 휘리릭 λ‚˜μ™”λ‹€.

 

전체적인 ν”Œλ‘œμš°λŠ” λ‹€μŒκ³Ό κ°™λ‹€ 

전체 μΉ΄ν…Œκ³ λ¦¬λ·°  ( μΉ΄ν…Œκ³ λ¦¬ μΆ”κ°€ 및 κ°œλ³„ μΉ΄ν…Œκ³ λ¦¬λ‘œ 이동 ) - μΉ΄ν…Œκ³ λ¦¬ μˆ˜μ •λ·° ( μΉ΄ν…Œκ³ λ¦¬ μˆœμ„œ λ³€κ²½ Drag & Drop ) - κ°œλ³„ μΉ΄ν…Œκ³ λ¦¬ μˆ˜μ • 및 μ‚­μ œ λ·° 

 

μ²˜μŒμ—λŠ” λ·°κ°€ 간단해 λ³΄μ—¬μ„œ 금방 λλ‚˜κ² λ‹€ ! ν–ˆλŠ”λ° 데이터 μ „λ‹¬μ—μ„œ μ•½κ°„ λˆˆλ¬Όμ„ 머금고 .. 큼큼 

μΉ΄ν…Œκ³ λ¦¬ μˆ˜μ • λ·°μ—μ„œ μˆœμ„œ λ³€κ²½ κΈ°λŠ₯을 λ„£μ–΄λ²„λ¦¬λ©΄μ„œ GET은 전체 μΉ΄ν…Œκ³ λ¦¬μ—μ„œλ§Œ ν•œλ²ˆ ν•΄μ˜€κ³ , μˆ˜μ • 뷰둜 듀어갔을 λ•ŒλΆ€ν„°λŠ” 

ν΄λΌμ—μ„œ μˆ˜μ •, μ‚­μ œ, μˆœμ„œλ³€κ²½μ„ 직접 ν•΄μ€˜μ•Όν–ˆκΈ° λ•Œλ¬Έμ—... 그리고 이것저것 μžμž˜ν•œ κΈ°λŠ₯듀도 μΆ”κ°€ν•˜λ‹€λ³΄λ‹ˆ.

금방 λλ‚˜μ§„ μ•Šμ•˜λ‹€ ν—€ν—€ λ¬΄μŠ¨ μžμ‹ κ°μ΄μ—ˆλ˜κ±ΈκΉŒ ? 

 

각 뷰에 ν•΄λ‹Ήν•˜λŠ” κΈ°λŠ₯ 정리 

1. 전체 μΉ΄ν…Œκ³ λ¦¬ λ·° 

- μΉ΄ν…Œκ³ λ¦¬ λͺ©λ‘ 보여주기 ( GET : μΉ΄ν…Œκ³ λ¦¬ ID, μΉ΄ν…Œκ³ λ¦¬ Title , μ•„μ΄μ½˜ 이미지 URL, μ•„μ΄μ½˜ 이미지 ID )

- 전체 μΉ΄ν…Œκ³ λ¦¬ λ„€λΉ„κ²Œμ΄μ…˜ λ°” 

- κ°œλ³„ μΉ΄ν…Œκ³ λ¦¬ 선택 μ‹œ ν•΄λ‹Ήν•˜λŠ” 컨텐츠 뷰둜 이동

- μˆ˜μ • λ²„νŠΌ λˆ„λ₯Ό μ‹œ μΉ΄ν…Œκ³ λ¦¬ μˆ˜μ •λ·°λ‘œ 이동 

- μΉ΄ν…Œκ³ λ¦¬ μΆ”κ°€ λ²„νŠΌ λˆ„λ₯Ό μ‹œ μΉ΄ν…Œκ³ λ¦¬ μΆ”κ°€ν•˜λŠ” λͺ¨λ‹¬ μ°½ λ„μš°κΈ° 

- νƒ­λ°”μ—μ„œ λ“€μ–΄μ˜€λŠ” λ·°, λ©”μΈμ—μ„œ λ“€μ–΄μ˜€λŠ” λ·°λ₯Ό λΆ„κΈ°μ²˜λ¦¬ν•˜μ—¬ λ©”μΈμ—μ„œ λ“€μ–΄μ˜¬ 경우 νƒ­λ°” 숨기기 

2. μΉ΄ν…Œκ³ λ¦¬ μˆ˜μ • λ·°

- λ„€λΉ„κ²Œμ΄μ…˜ λ°” : λ’€λ‘œκ°€κΈ° , μ™„λ£Œ ( PATCH : μˆœμ„œ λ³€κ²½ ν›„ λ³€κ²½λœ μΉ΄ν…Œκ³ λ¦¬ ID λ°°μ—΄ λ„˜κ²¨μ£ΌκΈ° )

- λ“œλž˜κ·Έ μ•€ λ“œλž : μˆœμ„œ λ³€κ²½ ν›„ μ €μž₯ 

- μ…€ λ‚΄λΆ€ μ—°ν•„ λ²„νŠΌ λˆ„λ₯Ό μ‹œ κ°œλ³„ μΉ΄ν…Œκ³ λ¦¬ μˆ˜μ •ν•˜λŠ” 뷰둜 이동 

3. κ°œλ³„ μΉ΄ν…Œκ³ λ¦¬ μˆ˜μ • 및 μ‚­μ œ λ·°  

- λ„€λΉ„κ²Œμ΄μ…˜ λ°” : μˆ˜μ •λ²„νŠΌ ( PATCH :  ν•΄λ‹Ήν•˜λŠ” μΉ΄ν…Œκ³ λ¦¬ ID의 λ³€κ²½λœ 제λͺ©κ³Ό μ•„μ΄μ½˜ 이미지 ID λ„˜κ²¨μ£ΌκΈ° )

- κ°œλ³„ μΉ΄ν…Œκ³ λ¦¬ 제λͺ©κ³Ό μ•„μ΄μ½˜ λ°›μ•„μ„œ κΈ°λ³Έ κ°’μœΌλ‘œ 지정해두기

- 제λͺ© μˆ˜μ • μ‹œ, 글씨 색상 μ§„ν•΄μ§€λ©΄μ„œ μˆ˜μ • κ°€λŠ₯ν•˜κ²Œ 

- μ•„μ΄μ½˜ λ³€κ²½ κΈ°λŠ₯ 

- μ‚­μ œ λ²„νŠΌ ( DELETE )

 

4. λ§ˆμ΄νŽ˜μ΄μ§€ UI μž‘μ—…

- λ°°κ²½ κ·ΈλΌλ°μ΄μ…˜ 

- λ°”ν…€ λ·° μΆ”κ°€ 

- 기타 UI μž‘μ—… 

 

κ°œλ°œν•˜λ©΄μ„œ μ–΄λ €μ› λ˜ 점 

μΉ΄ν…Œκ³ λ¦¬ μˆœμ„œ λ³€κ²½ ν›„, 전체 μΉ΄ν…Œκ³ λ¦¬ νƒ­μœΌλ‘œ λŒμ•„μ™”μ„ λ•Œ reload κ°€ μ œλŒ€λ‘œ λ˜μ§€ μ•ŠλŠ” 문제점이 μžˆμ—ˆλ‹€. 

μ„œλ²„ μ—°κ²°ν•œ ν•¨μˆ˜μ—λ„ μ—¬κΈ°μ €κΈ° 바꿔보고... λ””μŠ€νŒ¨μΉ˜ν νƒˆμΆœ ν΄λ‘œμ € λ…Έν‹° κΉŒμ§€ μ¨λ΄€λŠ”λ° . λ‹€λ₯Έ 탭에 κ°”λ‹€κ°€ λŒμ•„μ™€μ•Όλ§Œ 반영이 λμ—ˆλ‹€.

근데 μ§„μ§œ μš°μ—°νžˆ μ•ˆλ“œ μžΌλ―Όμ΄κ°€ κ°‘μžκΈ° 뭐 생λͺ…μ£ΌκΈ° μ–΄μ©Œκ΅¬ ν•˜λŠ” 말을 λ“£κ³  

LifeCycle을 막 μ°Ύμ•„λ΄€λ‹€.. 잘 λͺ°λžμŒ .. 

 

viewDidLoad 

viewWillAppear 

viewDidAppear 

viewWillDisappear 

↓ 

viewDidDisappear

 

λ·°λŠ” μ΄λŸ¬ν•œ 생λͺ…μ£ΌκΈ°λ₯Ό κ°€μ§€λŠ”λ°, μ²˜μŒμ— getν•΄μ˜€λŠ” λ©”μ„œλ“œλ₯Ό viewWillAppear μ—μ„œ ν˜ΈμΆœν–ˆμ—ˆλ‹€. 

즉, λ·°κ°€ λ‚˜νƒ€λ‚  λ•Œ 그리고 μˆ˜μ • 뷰에 κ°”λ‹€ 왔을 λ•Œλ„ λ³€κ²½ 사항이 μžˆμœΌλ‹ˆ get을 ν•΄μ™€μ•Όν•œλ‹€κ³  μƒκ°ν–ˆλ‹€.

 

근데 λ¬Έμ œλŠ”... λ‚΄κ°€ μ„œλ²„κΉŒμ§€ 생각을 λͺ»ν–ˆλ‹€λŠ” κ²ƒμ΄μ—ˆλ‹€..

 

μˆœμ„œλ³€κ²½ ν›„, μ™„λ£Œ λ²„νŠΌμ„ λˆŒλŸ¬μ„œ μΉ΄ν…Œκ³ λ¦¬ id 배열을 λ„˜κ²¨μ£ΌλŠ”λ°

κ·Έκ±Έ μ„œλ²„μ—μ„œ λ°›μ•„μ„œ κ·Έ μˆœμ„œλŒ€λ‘œ λ‹€μ‹œ 정렬을 μ‹œν‚€λŠ”λ° μ‹œκ°„μ΄ κ±Έλ €μ„œ

get ν•΄μ˜€λŠ” μ‹œμ μ— 아직 μˆœμ„œκ°€ 변경이 μ•ˆλ˜μ–΄μžˆλŠ” μƒνƒœμ˜€λ˜ κ²ƒμ΄μ—ˆλ‹€ !

κ·Έλž˜μ„œ viewDidAppear μ—μ„œ getν•΄μ˜€λŠ” λ©”μ„œλ“œλ₯Ό ν˜ΈμΆœν–ˆλ”λ‹ˆ ν•΄κ²°λ˜μ—ˆλ‹€ !

λ·°κ°€ λ‚˜νƒ€λ‚œ μ‹œμ μ— μ‹€ν–‰λ˜μ–΄μ„œ μˆœμ„œκ°€ λ°”λ€ŒλŠ”κ²Œ 눈으둜 보이긴 ν•˜μ§€λ§Œ 

κ·Έλž˜λ„.. reload 된게 μ–΄λ””μ•Ό.. ν•˜λ©΄μ„œ.. 

 

κ·Έ 외에도 λ§ˆμ΄νŽ˜μ΄μ§€κ°€ κ³ μ •λ˜μ–΄μžˆμ–΄μ„œ μ˜€ν† λ ˆμ΄μ•„μ›ƒ μž‘λŠ”λ° 끙끙.. 

λ‚˜ μ™œ 아직도 μ˜€ν† λ ˆμ΄μ•„μ›ƒ λͺ»ν•΄?? μ°Έ λ‚˜. 

자 이제 SEλž‘ 아이폰8은 쑰용히 μ‚¬λΌμ§€μž.. μ–΄ ??

 

λ¦¬νŒ©ν† λ§ 및 μ•žμœΌλ‘œ 곡뢀할 것

- 아직 κΈ°λ³ΈκΈ°κ°€ λΆ€μ‘±ν•˜λ‹€. 후루룩 λ°°μ›Œμ„œ κ·ΈλŸ΄μˆ˜λ„ μžˆμ§€λ§Œ 이제 두렡지 μ•Šμ•„.. λ‹€ 덀벼..  ν…Œμ΄λΈ”λ·° μ»¬λ ‰μ…˜λ·° 데이터전달 μŠ€μœ„ν”„νŠΈλ¬Έλ²• μ˜΅μ…”λ„ 뭐 μ΄λŸ°μΉœκ΅¬λ“€ ?? ( 이제 λ¬ΌμŒν‘œλ§Œ 보면 μ˜΅μ…”λ„ μƒκ°λ‚˜λŠ” .. )

- μ›λž˜ 처음 λͺ©ν‘œ 쀑 Rxλž‘ MVVM , μ½”λ””λ„€μ΄ν„°κΉŒμ§€ 써보기둜 ν–ˆμ—ˆλŠ”λ° κ²°κ΅­ λ‹€ 버렸닀 γ…‹γ…‹γ…‹γ…‹γ…‹γ…‹γ…‹γ…‹γ…‹γ…‹ ( 근데 λ‚œ 이럴걸 μ˜ˆμƒν–ˆμ§€ ! λ‚œ 아무것도 λͺ¨λ₯Έλ‹¨ 말야!  )

- RxCocoa 밖에 λͺ» μ“°κ³  .. 더 κ³΅λΆ€ν•˜κ³  와야지 ! 

- μ„œλ²„ URLSession, aysnc /  await μ™„λ²½ν•˜κ²Œ μ΄ν•΄ν•˜κ³  μ“°μž ! μ„œλ²„ λ§ˆμŠ€ν„° ν•˜κΈ° . λ‹€μŒ μ•±μžΌ λ•ŒλŠ” μ„œλ²„ 뢙이기 10초컷

 

μ‹œκ°„μ΄ λœλ‹€λ©΄, λ‹€λ₯Έ μ‚¬λžŒλ“€μ΄ λ§Œλ“  뷰듀도 ν•˜λ‚˜ν•˜λ‚˜ 곡뢀해보고 μ‹Άλ‹€. 

μ•±μžΌμ΄λΌλŠ” μ‹œκ°„ 내에 λ‚΄κ°€ 맑은 λΆ€λΆ„λΆ€ν„° κ΅¬ν˜„ν•΄λ‚΄μ•Ό ν–ˆκΈ° λ•Œλ¬Έμ— λ‹€λ₯Έ μ‚¬λžŒλ“€μ΄ 맑은 λΆ€λΆ„κΉŒμ§€ μžμ„Ένžˆ λ³Ό 수 μ—†μ—ˆλ‹€.

κ·Έλž˜μ„œ μ½”λ“œλ¦¬λ·°λ₯Ό μ œλŒ€λ‘œ λͺ»ν•΄μ€˜μ„œ 쑰금 아쉬웠닀. λ‚΄ λŠ₯λ ₯ 뢀쑱이야... γ…œγ…œ !! 

 

릴리즈 λ•Œ 맑은 것듀

일단 λ‹€λ“€ 쀑간고사 λ“€μ–΄κ°€κΈ° μ „κΉŒμ§€ 릴리즈 ν•˜λŠ” 걸둜 λͺ©ν‘œλ₯Ό μž‘μ•˜λ‹€.

각자 맑은 λ·°μ—μ„œ λ¦¬νŒ©ν•˜κ³ , μΆ”κ°€ κΈ°λŠ₯ κ΅¬ν˜„κΉŒμ§€ ν•΄μ•Όν•΄μ„œ 또.. μ—΄μ‹¬νžˆ 달렀야해 ! 

 

λ‚΄κ°€ 맑은 뢀뢄은 .. 

- μ†Œμ…œ 둜그인 κ΅¬ν˜„

- μΉ΄ν…Œκ³ λ¦¬ 쀑볡 방지

- μΉ΄ν…Œκ³ λ¦¬ 개수 , κΈ€μžμˆ˜ μ œν•œ

- λ§ˆμ΄νŽ˜μ΄μ§€ 버그 ν•΄κ²° 

- λ§ˆμ΄νŽ˜μ΄μ§€ μΆ”κ°€ κ΅¬ν˜„ 

- μ›Ή λ·° 문제 ν•΄κ²° 

- Google Analaytics μ μš©ν•˜κΈ° 

 

일단 이정도..? 와케 λ§Žμ•„ ?? 호호 

그리고 μ›λž˜ λ“€λ‚˜κ±Έμ΄ 끙차 끙차 ν–ˆλ˜ μ  ν‚¨μŠ€κ°€ λ“€λ‚˜κ±Έ λ‘œμ»¬μ—μ„œ λŒμ•„κ°€λŠ” 문제 λ•Œλ¬Έμ— .. ( 큼큼 μ—‘μŠ€μ½”λ“œκ°€ 잘λͺ»ν–ˆλ„€ )

κΉƒν—™ μ•‘μ…˜μœΌλ‘œ λ°”κΎΈκ³  적용 λͺ»ν–ˆλ˜ 코디넀이터 같이 곡뢀 쫌 ν•˜κ³  λ“±λ“±.. 

2월도 μˆœμ‚­μ΄κ² κ΅°μš” !

 

결둠은 3μ£Όλ™μ•ˆ λ„ˆλ¬΄ λ„ˆλ¬΄ λ§Žμ€ κ±Έ λ°°μš°λ©΄μ„œ μ„±μž₯ν–ˆκ³ , 쒋은 μ‚¬λžŒλ“€κ³Ό ν•¨κ»˜ ν•΄μ„œ ν–‰λ³΅ν–ˆλ‹€.

μ•±μžΌ 뿐만 μ•„λ‹ˆλΌ μ†νŠΈλ₯Ό ν•˜λ©΄μ„œ, μ œλŒ€λ‘œ 된 ν˜‘μ—… ν”„λ‘œμ νŠΈλ₯Ό ν•  수 μžˆμ—ˆλ‹€. 

ν”„λ‘œμ νŠΈ μ…‹νŒ…, 폴더링, μ»¨λ²€μ…˜, κΉƒλΈŒλžœμΉ˜ μ „λž΅, μ½”λ“œλ¦¬λ·° λ“±λ“± ν˜Όμžμ„œ ν•  수 μ—†μ—ˆλ˜ 것듀을 κ²½ν—˜ν–ˆλ‹€.

그리고 μ˜†μ—μ„œ μ–΄κΉ¨ λ„ˆλ¨Έλ‘œ SwiftLint, CI/CD, TestCode, νŽ˜μ–΄ν”„λ‘œκ·Έλž˜λ°, Rx, MVVM, Coordinator, async/await, SPM λ“±λ“± κ³΅λΆ€ν•˜λ©΄μ„œ μ–΄λ €μ› μ§€λ§Œ.. 도약.. ν•œκ±° κ°™λ‹€ ^^ 

 

그리고 클라 κ°œλ°œμžλŠ” μ§„μ§œλ‘œ 기획 λ””μžμΈ μ„œλ²„ νŒŒνŠΈμ™€ κΎΈμ€€νžˆ μ†Œν†΅ν•˜λ©΄μ„œ μž‘μ—…ν•΄μ•Όν•œλ‹€λŠ” 것을 λŠκΌˆλ‹€ 

ν•΄λΉ— νŒ€μ›λ“€μ΄ λ‹€λ“€ μ„œλ‘œ λ°°λ €ν•΄μ€˜μ„œ κ°ˆλ“± ν•˜λ‚˜ 없이 잘 λ§ˆλ¬΄λ¦¬ν–ˆλ‹€ γ…Žγ…Ž μ„œλ²„ κ°œλ°œμžλ“€λ„ μ–΄λ–»κ²Œ μ€˜μ•Ό μš°λ¦¬κ°€ 더 νŽΈν•œμ§€ 계속 물어봐주고, μš”μ²­μ‚¬ν•­λ„ 잘 듀어쀬닀. κΈ°νšμ—μ„œλ„ μ•±μžΌ 내에선 μš•μ‹¬λ‚΄μ§€ μ•Šκ³ , κ°œλ°œμžλ“€μ„ λ¨Όμ € 생각해쀬닀. 그리고 λ””μžμ΄λ„ˆλ“€μ΄λž‘λ„ μ„œλ‘œ λ¬Όμ–΄λ³΄λ©΄μ„œ μ›ν•˜λŠ” 것듀을 잘 맞좰 λ‚˜κ°”λ˜ 것 κ°™λ‹€.

 

데λͺ¨λ°μ΄ μ „λ‚ κΉŒμ§€ 잠 μ€„μ—¬κ°€λ©΄μ„œ κ³ μƒν–ˆλ˜ 쒋은 μΆ”μ–΅κ³Ό κ²½ν—˜λ“€ ! μžŠμ§€ λͺ»ν•  κ±°μ•Ό.. !!!

μ•žμœΌλ‘œ 더 λ§Žμ€ 것듀을 λ§Œλ“€λ©΄μ„œ λ°°μ›Œλ‚˜κ°€κ³  μ‹Άκ³ , λ‚΄ 첫 μ„œλΉ„μŠ€λ‘œ μ˜μ›νžˆ 기얡될 해빗을 잘 λ§ˆλ¬΄λ¦¬ν•˜κ³  μ‹Άλ‹€ :)

 

 

Comments