전체 글

iOS 개발

[iOS 개발] iOS 앱 용량 줄이기

이번에 회사에서 앱을 출시했는데, 이전 앱과 용량이 거의 2.5배 차이가 나게 되었다거의 비슷한 기능이고, 에셋이나 코드량도 별로 차이가 없는데 뭔가 이상해서 용량을 한번 살펴보고자 했다 앱 용량을 확인했더니(앱 용량 확인은 아래 첨부한 링크 방법 사용)폰트가 용량을 어마어마하게 차지하고 있었다..기존에, 국가별로 다른 폰트를 적용할 거란 내용이 있어서 미리 폰트를 넣어뒀는데, 이게 거의 70mb 이상을 차지하고 있었다.다행히 해당 기획이 취소되어 해당 폰트들이 필요가 없어서 삭제를 해서 용량을 줄일 수 있었다.근데 좀 의문이 든게 처음에는 .otf , .ttf 등 확장자 때문에 용량이 확 차이가 나는 건 줄 알았다.사진만 보더라도 Pretendard는 otf 타입이고 1.6MB 용량을 차지하는 반면,P..

iOS 개발/UIKit

[UIKit] FlexLayout & PinLayout 적용

회사에서 시간이 남아서 리팩토링 할 코드가 뭐가 있을지 고민하던 중 이전에 들어본 FlexLayout, PinLayout에 대해 궁금증이 생겨서 찾아보게 되었다.(현재 진행하고 있는 기존 프로젝트들은 Snapkit, Then을 활용해 레이아웃을 구성하고 있다.) FlexLayout과 PinLayout과 관련된 자료를 조사해보던 중 해당 라이브러리가 UIStackView 보다 8배에서 12배 더 빠르다는 장점이 있다는 것을 알게 되어 시간이 남는 김에 이를 적용해보고자 했다. 우선, 해당 코드는 자료 검색하고 한두시간 만에 만든 화면이라 이런식으로 레이아웃을 구성한 것이 맞는지는 모르겠다...// Snapkit을 활용한 기존 코드override func addViews() { super.add..

CS

[CS] iOS CS Lv.0단계 질문 및 답안 정리

컴퓨터 구조와 관련하여 CPU, RAM, 저장장치의 역할과 상호 작용에 대해 설명해주세요.캐시 메모리의 개념과 종류, 역할에 대해 설명해주세요.캐시 메모리 개념캐시 메모리는 CPU의 처리 속도와 주 기억 장치의 접근 속도 차이를 줄이기 위해 사용합니다. 데이터 지역성을 활용하여 메인 메모리에 있는 데이터를 캐시 메모리에 불러와 두고, 프로세서가 필요한 데이터를 캐시 메모리에서 먼저 찾도록 하면 시스템 성능을 향상할 수 있습니다. 캐시 메모리 종류CPU 캐시 메모리GPU 캐시 메모리SSD 캐시 메모리Digital Signal Processor 캐시 메모리TLB CPU 아키텍처의 종류(예: ARM, x86)와 특징에 대해 설명해주세요.x86Intel 기반 32bit CPU 입니다.현존 하는 PC 프로그램 대..

iOS 개발/UIKit

[UIKit]양쪽 cornerRadius가 다른 cell 구현

그림과 같이 분리선을 기준으로 왼쪽 사각형의 좌측 모서리는 cornerRadius 16, 오른쪽 모서리는 cornerRadius 8을 줘야 되는 디자인이 있었다. 특정 모서리에만 cornerRadius를 주는 것은 그리 어렵지 않아서 이것도 그냥 내장함수같은 게 있겠지? 했으나(내가 못 찾았을지도..) 그런 함수는 존재하지 않았다.. 그래서 일단 구글링을 통해 필요한 함수들을 UIBezierPath + Extension,  UIView+Extension에 각각 추가해줬다.extension UIView { func roundCorners(leftTop: CGFloat = 0, rightTop: CGFloat = 0, leftBottom: CGFloat = 0, rightBottom: CGFloat = ..

끄적끄적

firebase 디버깅 이슈

pod 'FirebaseRemoteConfig' pod 'Firebase/Core' 를 pod install 했더니 디버깅이 되지 않는 이슈가 있었다. pod 'Firebase/Core'를 제거하고 pod 'FirebaseRemoteConfig'만 pod install 했더니 오류 해결..

끄적끄적

[끄적끄적] 순환 참조 발생 부분

private func layout() -> UICollectionViewCompositionalLayout { return UICollectionViewCompositionalLayout { [weak self] sectionIndex, _ in guard let self = self else { return nil } switch sectionIndex { case 0: var itemHeight: CGFloat = 0 if self.viewModel.getDownloadableCouponList().isEmpty { itemHeight = 18 // MARK: - 수정 필요 } else { itemHeight = 112 } . . . } 저번에도 한번 발견했었는데 이 부분에서 강한 참조가 일어나 V..

회고

[회고] 8개월차 iOS 개발자 2023년 회고

연말이고 하니 오랜만에 회고나 한번 써볼까 한다(사실 3개월마다 쓸라켔는데 마지막 회고부터 4 5개월 지난것 같다) 입사한게 엊그제 같은데 벌써 8개월이 넘었다. 다양한 사람들과 다양한 프로젝트들을 하면서 실력이 급상승했다고 느끼긴 하지만, 그에 반해 아직 갈 길이 많이 남았다는 생각도 동시에 든다. 일단 지금은 내가 이전 회고부터 계속 노래불렀던 기획이 대략 2개월 전에 나와서 새로운 앱을 개발하는 일을 하고 있다. 솔직히 이전까지 간단한 UI 수정이나 모델 수정 후 통신 로직 좀 손보는게 다였던 나로써, 나보다 1년 일찍 들어온 사수 개발자 분과 함께 단둘이 앱의 모든 기능을 구현해야 된다는게 조금은 두려웠다. 그러나 다행히 좋은 개발자 분을 만나서 그 분이 먼저 작성한 코드를 보고 익혔고, 그 덕분..

끄적끄적

[끄적끄적] Keychain 관련 고민

[초기조건] 아이폰 15 / dlqkawns 아이디로 간편비번을 설정했던 사용자 [아이폰 15 기기 자체에 저장할 값] dlqkawns 아이디 파이어베이스 UUID: 비번 [같은 기기/ 같은 아이디로 로그인] 기기 자체에 dlqkawnsUUID: 123 이런 형태로 저장되어있음 앱 삭제(기기 자체에 A: 123은 여전히 저장) 앱 재설치(미로그인 상태) 기존 dlqkawns으로 로그인 Dlqkawns UUID를 파이어베이스에서 가져옴 기기에 저장된 dlqkawnsUUID: 123과 파이어베이스에서 가져온 UUID 비교 동일하면 해당 아이디는 간편비번이 존재하는 것 [같은 기기/ 다른 아이디로 로그인] 3까지 동일 다른 아이디 ufintec로 로그인 Ufintech UUID를 파이어베이스에서 가져옴 기기에..

bamtorii
bamtori