2022의 게시물 표시

ChatGPT 사용해보기 (SwiftUI 코드 물어보기)

이미지
  ChatGPT 사용해보기 (SwiftUI 코드 물어보기) 안녕하세요. 물먹고하자 입니다 :) iOS 관련 기술들을 메일로 받아보는데, 거의 매일매일 "ChatGPT" 가 언급이 되더군요. 사실 Chat 라이브러리인가? 이러고만 생각햇는데, 챗봇 이더군요 (그것도 막강한..)   샘플작업   마무리 궁금한점을 물어봐도 대답해주고, 심지어 한글로 SwiftUI 로 List 샘플 만들어달라니 만들어주더군요. 개인적으로 최근 SwiftUI로 코드를 전환을 하고 있어서 처음부터 만들어야 하는 경우가 있는데, 샘플코드 따고 수정하는 형식으로도 좋을것 같아요. (공부목적) 중간에 네트워크 연결끊김이 자꾸뜨는건 아직 무료로 테스트하다보니 끊어버리는 느낌이네요. 오늘은 이만 즐거운 코딩되세요~ 끝.

[iOS] 수출 규정 준수 정보 TestFlight 그룹설정 문제 및 베타 만료 문제

이미지
  [iOS] 수출규정 TestFlight 그룹설정 문제 및 베타 만료 문제 안녕하세요. 물먹고하자 입니다 :) 12/07일 (수요일) 까지는 딱히 큰 문제 없이 TestFlight를 사용하고 있었는데, 12/08일 (목요일) 부터 TestFlight 그룹 이 설정이 안되더군요?! (황당) 해당 이슈해결하고, 또 다른 문제있었던거 공유드립니다.   수출 규정 준수 정보 체크 암호화 문의변경 최근 1~2주 사이에 수출 규정 준수 정보가 변경 이 되었습니다. 기존에 2개 만 물어봤는데, 4개의 항목 으로 늘었고, (경고로 info.plist에 직접 암호화 사용여부를 명시해 달라고합니다.) 12/07일 (수요일) 전까진 해도 "해당하지 않음" 선택했을시 문제 없이 사용할 수 있었습니다. 12/08일 (목요일) 부터는  테스트할수 있는 그룹이 설정되지 않습니다. (1차 멘붕) 애플 가이드 문서를 찾아보니, info.plist 암호화 명시 키값이 추가되었습니다. ITSAppUsesNonExemptEncryption 추가됨. 뭐.. 그래 알겠어 정보는 그렇고, info.plist 에 App Uses Non-Exempt Encryption : NO 로 설정 하고 다시 TestFlight를 올립니다. 그 뒤로는 수출 규정 준수정보를 물어보지 않고, 바로 TestFlight 업로드 되었다고 됩니다.   갑자기 발생한 TestFlight 베타만료 문제 위에까지는 info.plist에  App Uses Non-Exempt Encryption : NO 추가해야하는 필수 정보였고, 12/08(목) 기준으로 TestFlight 서버자체가 이상했습니다. 방금 올린 앱이 TestFlight에서 90일 남은 기간 인데, 설치 후 TestFlight앱만 들어가면 무조건 베타 만료 가 되었습니다. 갑자기 사용 불가능?! 해당이슈는 해외에서도 12/07(수요일) 저녁시간때부터 동일한 문제가 발생하고 있었고, 12/09(금요일) 아침 기준으로 TestFlig

iOS 16, iPhone 14 Pro 홈 및 잠금 화면 배터리 광탈(?) 해결법

이미지
   iOS 16, iPhone 14 Pro 홈 및 잠금화면 배터리 광탈(?) 해결법 안녕하세요 물먹고하자 입니다 :) iOS 개발일을 하다보니 최신 iOS, iPhone Pro 를 매년 바꾸고 있는데, 올해 AOD, 다이나믹 아일랜드, 홈화면 위젯 등등 많은 편의기능이 추가되었내요. 그런데, 아무리 그래도 그렇지 사용하지 않을때 배터리가 광탈(?) 되는 이상현상이 발견되더군요.   이상현상 iPhone 14 Pro (AOD 미사용, 위젯 미사용, 방해금지모드사용중) 제가 사용중인 iPhone 14 Pro 모델인데, 자기전에 유튜브보고, 모든걸 종료하고 나서 갑자기 새벽부터 "홈 및 잠금 화면"  배터리를 잡아먹기 시작하더군요 해봤자 1~5%면 이해가 되는데, 오후 11시 ~ 새벽3시 까지 40~50%가 없어지더군요. 일단 제가 사용하고 있던 환경중에 AOD : 미사용 (눈부셔서 안씀) 위젯 : 배터리 광탈현상 때문에 일부로 없애고 쓰고 있음 잘때는 방해금지모드 특이케이스로는 iPhone 16.x Beta를 사용하다가 16.1 부터 정식버전 사용중 iPhone 13 Pro (AOD 미사용, 위젯 미사용) 이거는 와이프가 쓰고 있는 iPhone 13 Pro 모델인데, 자기전에 인스타보다가 그이후  배터리 이용내역이 없더구요  (이게 정상인데,) 일단 새벽에 열심히 찾아보니 생각보다 저랑 같은 현상 들이 많더군요. iOS 클린부팅 방법 애플에서 제공하는 클린부팅(강제종료) 방법인데, 개발적으로는 간혹 데이터의 캐쉬, 메모리 누수, 특정핸드폰만 나오는 이상현상에 사용하는 방법이긴해요. (솔직히 이제는 스마트폰 잘 안끄고 살잔아요) 이후 테스트 재진행 iPhone 14 Pro (AOD 미사용, 위젯 미사용, 방해금지모드사용중) 해당 클린부팅 이후 다음날 (추가적으로 2일째 진행중) "홈 및 잠금 화면" 배터리 먹던게 사라졌습니다. ...... 애플에서 이런버그 잘 안나왔던것 같은데, 배터리 이슈여서 생각보다 불편해서

[Swift] async, await 알아보기 (@escaping closure 대응샘플)

이미지
  [Swift] async, await 알아보기 안녕하세요. 물먹고하자 입니다 :) 오늘은 async, await 를 알아보려고 합니다. 동작방식은 기존 Closure 와 동일하지만, 코드라인이 확실히 보기 좋은 장점 이 있습니다. 샘플링된 코드로 비교 하면서 내용 공유드립니다.   시작전 참고 자료 - https://developer.apple.com/documentation/swift/updating_an_app_to_use_swift_concurrency // WWDC 2021 공식 동영상 자료 - https://developer.apple.com/videos/play/wwdc2021/10132/ // apple 공식 GIt async-await 설명자료 - https://github.com/apple/swift-evolution/blob/main/proposals/0296-async-await.md#introduction   async, await  도입을 하려는 이유 보통 클로져 1번만 사용하는 경우에는 딱히? 도입해야할 이유는 없지만, 업무중에 클로져 > 클로져 > .... > 클로져 인경우에는 코드가 더러워(?) 지는 현상 발생합니다. 어차피 순차적으로 진행해야 하는데, 들여쓰기 반복적으로 나오면 개발당사자는 알고는 있지만, 몇 개월뒤에 보면 욕나오더라고요 (당사자가 봐도 더러워요... ㅠㅠ) 실제 업무때 예시)로 쓰기 딱 좋은 부분 극단적 이긴한데, 제가 맡고 있는 업무에중 로그인을 하기위해서 5번의 통신 처리를 해야합니다.  (실제로는 저렇게 한번에 클로져를 쓰진 않지만, 정리하기 딱 좋은 예제) 주석상으로만 봐도 1. 들여쓰기 부분 , 2. 실패처리 부분 의 차이가 크게 보입니다. (안 고칠 이유는 없는것 같아요)   async, await 도입전 알아야하는 것 async, await 사용하기전 필수적으로 알아야하는 항목들이 있습니다. 1) async, await 2) Task(switch, do-catch

구글 블로그 드랍다운 메뉴 추가하기

이미지
  구글 블로그 드랍다운 메뉴 추가하기  안녕하세요. 물먹고하자 입니다 :) 구글블로그로 옮긴지 오래 되었는데, 글쓰거나 본문안에 HTML 넣는 부분은 좋은데.. 디자인(테마)가 너무 구려요 (ㅠㅠ 디자이너 없는 느낌) 구글무료 테마 + 다른곳에서 구해오는 방법도 있는데, 나중에 마음에 안들거나 호환성 문제가 검증이 된게 아니다 보니 안쓰게 되더라구요. 그래서 오늘은 블로그 페이지를 직접 바꿔보기 위한 단계로 드랍다운 메뉴 넣는 방법 알아보겠습니다. Dropdown Link 1 Link 2 Link 3   준비과정 현재화면 중 기본으로 제공되는 메뉴가 아닌, 드랍다운으로 정리하고 싶음. 우선 HTML의 DropDown Menu 를 구성하는 코드 알아보기 https://www.w3schools.com/howto/howto_css_dropdown.asp 사이트가 너무 잘되어있네요 HTML 자료 필요시 찾아보기 편하겠어요 테마 맞춤설정 > CSS 영역의 값 CSS 값들 추가. 레이아웃에 HTML/자바스크립트 구성에 DIV로 태그 추가.   마무리 예전부터 언제하나 했는데, 요즘 블로그 사이트들이 이쁜게 너무 많다. 이놈의 구글블로그는 테마랑 폰트가 마음에 안드는데, 구성이라도 조금씩 바꿔봐야할 것 같다. 오늘은 간략하게 끝. 즐거운 시간 보내세요~

[Swift] Array chunks 사용하기 (Array 갯수별로 나누기)

이미지
  [Swift] Array chunks 사용하기 (Array 갯수별로 나누기) 안녕하세요. 물먹고하자 입니다 :) 업무하다가 이미 만들어진 Array를 30개씩 나눠서 묶을 일 이 있었는데, 왠지(?) 기본적으로 제공해주는게 있을 것 같아서 찾다가 좋은걸 찾아서 공유드립니다.    샘플자료    결과 2개씩(5묶음), 8,2(각각 1묶음) 정상적으로 나눠짐 샘플소스 찾아서 예상한대로 ex) 2개씩 나눠서 묶음 간결하게 잘되어있는걸 확인했었다. stride(from:to:by:) 는 몰랐지만, 갯수만큼 건너띄기 그리고, 찾다보니 충격적인 Apple Git 정보 들 (WWDC 2021에 발표했다고함.) SPM 받을때 아예 Apple Swift Packages 란이 별도로 있음. 지금까지 Apple의 별도로 라이브러리를 제공해준적이 없는것 같은데, 신기하네요 심지어 한개도 아니고, 이번에는 swift-algorithms 의 chunks 함수를 통해 Array를 갯수만큼 나누는걸 사용 해 보았습니다. 내부 소스도 참고용으로 볼 수 있어서 좋내요    마무리 요즘 예전코드를 최신화 하면서, 왠지 있을것 같은것 들을 하나하나 찾아보고 있는데,  하나를 찾으면 그안에 두개씩 새로운 Func, Class 들이 보이고 찾고 찾고 찾다가 글을 쓰질 못하고 있는것 같습니다. (ㅋㅋㅋ....) 업무하면서 썼던 기술들은 전부 정리를 하고 싶은데, 시간이 빡세긴하내요. 이번에 apple 에서 제공하는 Git 소스발견으로 이 글쓰다가 한 4시간 동안 Git소스 보고  있었던것 같아요. 그래도 Git으로 제공해주니, 어떤식으로 소스정리하고 사용하는지 코드랑 패턴이랑 참고하기 좋을 것 같습니다. (공부할게 산더미) 오늘은 이만. 즐거운 코딩 되세요~ 끝.

[Swift] Result Type 알아보기. (Enum Result)

이미지
  [Swift] Result Type 알아보기. (Enum Result<Succes, Failure>) 안녕하세요. 물먹고하자 입니다 :) 오늘은 Result 라는 Apple 기본 Enum type 을 알아보려고합니다. 사실 딱히 사용하고 있지 않았었는데,  swift async await 적용준비하다가 응답이 두개인 closure 일때 (?) 가 뜨더군요 그래서 알아봤는데, 생각보다 편하게 되어있어서 사용해보고, 내용공유드립니다.   사전조사 Apple Document : https://developer.apple.com/documentation/swift/result iOS 8.0 이상 부터 사용가능하고, Enum Type 으로 case로 success, failure 를 제공 한다. Writing Failable Asynchronous APIs : https://developer.apple.com/documentation/swift/writing-failable-asynchronous-apis 샘플코드도 제공해주네요. (생각보다 잘 정리되어있음.) Result<Success, Failure> 를 사용은 안했지만, 어디서 많이 봤다고 생각한게 Alamofire Response 받을때 사용하고 있었다. (하하하... ^^ 확실히 라이브러리들 사용하고 있는 패턴 보면 도움이 많이된다.) Alamofire Sample https://github.com/Alamofire/Alamofire/blob/master/Documentation/Usage.md#response-handler    샘플코드 위의 참고할만한 정보들은 찾았고, 기존에 있는 것과 비교하면서 샘플코드를 작성해 보겠습니다. 샘플 코드에서는 결과는 동일하게 맞춤 선언부 예시로 잡은부분은 Success, Fail 구조로  closure 방식 과 Result<Success, Failure> 방식 준비했습니다. 1. closure 사용방식 가장 많이 흔하게

[Xcode] Xcode 프로젝트 전체파일 코드라인 파악하기 (Xcode Project Total CodeLine)

이미지
  [Xcode] Xcode 프로젝트 전체파일 코드라인 파악하기 (Xcode Project Total CodeLine) 안녕하세요. 물먹고하자 입니다 :) 오늘은 프로젝트의 포함 되어있는 클래스들의 코드라인 합(?) 을 구하는 법 공유드립니다. (업무하다보면 코드만 만드는게 아니라 가끔 보고용도 필요해요...ㅠㅠ)   시작전 그림 설명전 간단한 요약으로 Xcode에서 자체적으로 구해주는 방식이 아닌 터미널에서 사용하는 방식 입니다. 1. 터미널 > 해당 프로젝트 폴더 이동 2. 찾고싶은 파일 확장자 (*.swift, *.m, *.h 등등) 설정한 파일 들을 찾아서 코드라인을 카운트 해줍니다. 3. 주석, 공백 등등 전부다 포함이여서 온전한 Code만은 구하진 못한다. #. Pods은 프로젝트에 포함되어 있어서 카운트가 같이되고, SPM의 소스는 포함되지 않습니다.   예제 (단일건) 프로젝트 이동후 명령어 실행 (단일건) 결과 *.swift 파일들의 코드라인 합이 나옴 (멀티건) 프로젝트 이동후 명령어 실행 (멀티건) *.swift, *.m, *.h, *.xib 등 합산한 결과    마무리 오늘은 간략하게 Xcode Project Total CodeLine 구하는법을 알아보았습니다. 업무하다보면 가끔 필요할때가 있어서 내용은 정리해두었습니다. 즐거운 코딩되세요~ 끝.

[Git] Not possible to fast-forward, aborting. (오류대응)

이미지
  [Git] Not possible to fast-forward, aborting. (오류대응) 안녕하세요. 물먹고하자 입니다 :) 요즘들어 프로젝트 작업중 메인개발 브런치에서 자꾸 Not possible to fast-forward, aborting. 오류메시지가 뜨더군요. 한번만 그러면 그러려니 하고 처리 후 넘어가려고 했는데, 자주 뜨고있어서 대응방법 정리하고자 합니다.   오류메시지 Git Pull 받을때 나오는 에러 메시지 "Not possible to fast-forward, aborting." 해당 Git 폴더 이동 git pull --rebase 설정 후 Pull 받으면 정상   마무리 간단하게 해결할 수 있긴한데, Commit 과 Pull 이 동시에 있을때 자주 뜨는것 같다. (이유는 모르겠음)  오늘은 간단하게 대응방법만 공유드리며, 추가적으로 발생하면 원인분석을 해서 뜨는 이유를 찾아봐야겠다. 즐거운 코딩 되세요~ 끝.

[iOS] PHPhotoLibrary 권한체크 및 해당앱 설정페이지(openSettingsURLString) 이동하기

이미지
   [iOS] PHPhotoLibrary 권한체크 및 해당앱 설정페이지(openSettingsURLString) 이동하기 안녕하세요. 물먹고하자 입니다 :) 오늘은 설정페이지( openSettingsURLString ) 내용이 주된내용인데, 샘플로 PHPhotoLibrary 권한요청 및 현재상태 체크하는법 같이 공유 드립니다. 권한요청 및 해당 앱 설정페이지 이동 샘플영상   샘플소스 Git :  https://github.com/kimjiwook/JW_iOS_Example PHPhotoLibrary 권한요청 하는 방법 상태값 확인에는 현재기준 총 5가지이 존재하며, limited 의 경우 iOS14 이상때 추가된 사진허용인데, 일부만 허용인 상태입니다. 해당앱의 설정페이지로 이동   마무리 간단간단한 정보들은 업무 후딱처리하고 틈틈히 정리하고 있네요. 한번해놓고 잘 안보게되는 부분은 가끔씩 봐야하는데, 이번에도 보다보니 authorizationStatus 요청도 iOS14로 Level도 추가되어있었고 등등 블로그 정리하면서 저도 코드 업데이트 하는 느낌이네요 오늘은 이만 즐거운코딩 되세요~ 끝. 

[iOS] WebKit 개발자모드 디버깅하기

이미지
   [iOS] WebKit 개발자모드 디버깅하기 안녕하세요. 물먹고하자 입니다 :) 오늘은 WebKit 개발자 모드로 디버깅설정 하는 법을 공유드리려고 합니다. 네이티브앱만 개발하다보면 딱히 쓸일은 없지만,  WebKit (하이브리드 기반)을 사용할 일 이 있다면 알고 있으면 도움될 것 같습니다.    문서업데이트 - 2023. 08. 30 : iOS16.4 항목 추가.   설정방법 디바이스 설정과 맥 Safari 설정 두가지를 해야합니다. 1. iPhone / iPad 설정 방법은 동일합니다. 설정 > Safari > 고급 선택 웹 속성 을 활성화 해줍니다. 2. Mac 설정 Safari > 설정 > 고급 > 개발자용 메뉴 보기 활성화 3. Mac <-- 케이블연결 --> iPhone/iPad Safari > 개발자용 > 해당디바이스 > 활성화면 웹 선택 웹에서 자주보면 개발자모드가 앱내 WebKit에 활성화가 됩니다. 디버깅 관련은 Mac Safari 에서 보면 됩니다.    코드부분 2023. 08. 30 확인 갑자기 디버깅이 안되서 찾아보니, 옵션이 하나 추가되었네요. 코드에서도 해당값 true로 설정해줘야합니다.   마무리 오늘은 간단하게 WebKit 개발자모드 디버깅 하는법을 정리해봤습니다. 제가 업무를 맡고있는 팀에서는 네이티브 위주 (웹관련X) 다 보니 하이브리드 컨텐츠를 만들어주는 팀과 안될때 마다 핑퐁 치는게 쉽지 않았는데, (특히, 안드로이드는 되는데요...? 이 말이 제일 싫음) 하이브리드 컨텐츠 만드시는 팀장님하고, 얘기하다가 iOS에서도 디버깅 하는법을 찾아서 도움되는 내용이다 보니 정리하게 되었습니다. (하이브리드팀과 서로 도와가며 친하게 지내야겠습니다.) 오늘은 이만 :) 즐거운 코딩 되세요. 끝.

[SwiftUI 공부] SwiftUI @State, @Binding, @StateObject, @EnvironmentObject, ObservableObject 간단하게 알아보기

이미지
  [SwiftUI 공부] SwiftUI @State, @Binding, @StateObject, @EnvironmentObject, ObservableObject 간단하게 알아보기 안녕하세요. 물먹고하자 입니다 :) SwiftUI를 현 프로젝트에 도입하면서 급급하게 만들다보니 제가 기초를 잘 모르겠더군요 ㅋㅋ iOS 짬밥(?)으로 돌아가는 기본원리는 대략적으로 알지만, 내용정리를 해보고 싶어서 틈틈히 SwiftUI 내용 공유드릴까 합니다.   샘플코드 : @State, @Binding @State (iOS 13.0+, iPadOS 13.0+) 참조 :  https://developer.apple.com/documentation/swiftui/state Struct구조체의 경우 값의 변경이 불가능한데(mutating func을 통해는 가능) @State 값을 통해 변수를 직접변경하고, View 내부에서 사용되는 부분을 자동갱신 목적으로 사용됨. 처음 나왔을때 UI에 실시간 반영되는 형식이 매우 신기했던 기억이 있습니다. 지금은 @Binding 을 사용할때 빼고는 솔직히 잘 안쓰고 있습니다. (@StateObject를 주로사용함.) @Binding (iOS 13.0+, iPadOS 13.0+) 참조 :  https://developer.apple.com/documentation/swiftui/binding @State 값을 다른 특정 View에 대입시키는 방법으로 주소를 공유해서 동일하게 값을 변경할 수 있습니다. 공통적인 View를 분리해서 만들고 값을 공유해서 호출된 View에도 값을 전달할때 사용합니다.    샘플코드 : @ StateObject, @EnvironmentObject, ObservableObject @StateObject (iOS 14.0+, iPadOS 14.0+) 참조 :  https://developer.apple.com/documentation/swiftui/stateobject ViewModel을 선언할때 사용되며,  @Obse

[iOS] Swift 화면 강제 회전 (orientation)

이미지
  [iOS] Swift 화면 강제 회전 (orientation) 안녕하세요. 물먹고하자 입니다 :) 오늘은 맡고있는 다른 프로젝트중 '프레젠테이션뷰' 에  강제 landscape 요청 이 있어서 테스트 해봤습니다. 테스트 겸 작업해본 내용 공유드립니다. 샘플코드 결과 동영상 (회전 푼상태)   샘플소스 프로젝트 설정 회전범위 체크 AppDelegate 회전 허용 범위 설정 ViewController 회전 재설정 코드 추가 새로운 화면 띄울시 강제 화면 회전하여 띄워주기   마무리 코드는 생각보다 심플한데, Xcode Beta로 작업중이라 iOS16 부터 변경 되는 코드가 있는 것 같다. 급하지 않았던 건이라 이정도만 알아보긴했는데, 예전에는 Beta시에 KVC 접근시 앱 크러쉬 현상 이 있었는데, 이제는 그정도는 아닌것 같다. 오늘은 이만! 즐거운 코딩 되세요~ :)

[Xcode] Xcode Beta 앱 업로드 후 심사 오류

이미지
   [Xcode] Xcode Beta 앱 업로드 후 심사 오류 안녕하세요. 물먹고하자 입니다 :) Xcode 14 Beta 3 사용중인데,  심사를 넣으려고 하니 ㅠ 안되는군요 내용 공유드립니다.   오류내용 App Store Connect 페이지 내 심사를 위해 빌드된 버전을 넣었을때 GM 언제 나오려나~   마무리 뭐 다행이(?) 혼자 일하고 있는게 아니다 보니 같은소스를 Beta 아닌 PC로 올리면 되는데, 혼자 일하면 당황할 것 같다. (집에서 어떻하지) 어느정도는 감안하고 있어야겠다. 즐거운 코딩 되세요~ 끝.

[SwiftUI 공부] 그룹웨어 채팅 Objc -> Swift, SiwftUI 적용기

이미지
  [SwiftUI 공부] 그룹웨어 채팅 Objc -> Swift, SiwftUI 적용기 안녕하세요. 물먹고하자 입니다 :) 올해 1월에 프로젝트에 사용할 특수한 View덕에 SwiftUI 공부를 시작하였는데, 진짜.. 급발진해서 그룹웨어 내의 핵심모듈중 하나를 SwiftUI 로 변경했습니다. (시작하면 멈출 수 없어...!!) 중간에 정리를 하면서 했으면 좋겠지만, 문제는 ㅠㅠ UIKit(Objc, Swift)는 빠삭하지만, SwiftUI의 Combine, 라이프 사이클, 기존작동건에 대한 지원여부 등등  100% 이해를 하지 않은 상태에서 시작을 하여 정신줄 놓아지는걸 잡아가면서 진행을 하였습니다. (결과론적으론 98%정도는 성공 ?) 오늘은 코드보다 전환시에 막혔던점 고려해야할 점 등을 공유드립니다! 대화방 (복합적인 말풍선 + 이미지 등등)    변경전 문제점 파악 [문제로 되고있다고 생각하는 점] - Objc 중 옛날코드 (거의.. iOS 8.0 부터 유지되온 코드 ) - CollectionView FlowLayout 사용중 ( iPad Split 지원시 재계산이 안되고 있는 이슈 ) - FlowLayout Custom 라이브러리 사용중 이미 지원끊긴 라이브러리 사용 (대체 필요) - 표현방식 별 Cell x 2[왼쪽, 오른쪽] 총 26개 + 각각의 Xib (하....) - 답글기능이 들어가면서 기존 Cell x 2배가 더 늘게 생김 ... - 앞으로의 유지보수 및 신규기능을 덧붙일 자신감 하락(?) [개선하고자 하는점] - Objc -> Swift 완전 전환 (Model, View, Controller) - 아키텍쳐 변환 MVC -> MVVM - 공통화 영역에 대한 정리 - 불필요 라이브러리 제거 - 표현방식 별 Cell의 유동적인 StackView 도입 - 데이터 처리 및 정리모듈 개선 기존에 있는 Class.jpg ... [.m, .h, .xib]   사전실험 시작에 앞서 SwiftUI 나오기전에 개선 시도를 안한 건 아