본문 바로가기

분류 전체보기15

[iOS] ARC_객체 수명, weak와 unowned 차이 Swift에서 struct와 같은 값 타입이 아니라, class와 같은 참조 타입을 사용하면 참조 카운트, Reference Count가 발생하게 됩니다. 이는 애플에서 메모리를 관리하는 방법으로 메모리를 할당하거나, 참조할 때 카운트를 증가시키고 사용을 완료하면 감소시킵니다.Objective -C에서는 이를 개발자가 직접 관리했었고, 그것을 MRC Manual Reference Counting 이라고 부릅니다.그리고 현재 Swift에서는 직접적으로 참조 카운트를 삽입하고 해제하는 코드를 작성할 필요 없습니다. complier가 컴파일 타임에 자동으로 구문 분석을 통해 알아서 관련 코드를 삽입하여 메모리 관리를 해주는데 이를 ARC Automatic Reference Counting이라고 합니다.. 2024. 3. 21.
[iOS] Swift의 컴파일러 _ LLVM ❤️ Swift Compiler _ LLVM LLVM은 2000년 일리노이 대학에서 Chris Lattner 외 몇 명으로 구성된 연구 팀에서 프로그래밍 언어의 정적 및 동적 컴파일을 모두 지원할 수 있는 현대적인 컴파일 전략을 제공하기 위한 연구 프로젝트로 시작되었다. intermediate / binary 기계 코드를 구성, 최적화, 생성하는 데 사용되는 라이브러리로 프로그래머가 작성한 코드를 컴퓨터가 읽을 수 있는 intermediate, binary 코드로 컴파일 하는데 사용된다. 📒 컴퓨터의 하드웨어는 Binary Code만 읽을 수 있다. 때문에 우리가 작성한 코드들을 하드웨어가 읽을 수 있게 바꿔주는 작업을 거쳐야 하는데 이때 Intermediate Representation, 즉 중간표현을.. 2024. 3. 12.
[iOS] Image url 통해 가져와서 view에 띄우거나 갤러리 다운로드하는 방법 2가지 비교 이번에 unsplash의 api를 받아서 json 데이터를 확인해보니 신기한 점이 있었다. image는 따로 url 종류로 주어지고, 해당 url을 다시 받아와서 사용해야 한다는 것! 때문에 image를 다운로드 하여 imageView에 넣어주는 protocol을 하나 만들었다. protocol ImageViewDownloadable { var imageView: UIImageView { get set } } 그리고 extension으로 이 프로토콜을 채택하고 있다면 image를 보여줄 수도 있고, 갤러리에 다운받을 수도 있는 메서드들을 각각 구현하였다. 1. URLSession.shared.dataTask , @escaping closure 그렇게 만든 첫 방법은 dataTask의 @escaping c.. 2024. 2. 14.
[iOS]Unit Test의 사용 이번 과제를 진행하면서 가장 필요성을 절실히 느꼈던 것이 바로 이 test였다. 여기까지는 문제가 없다는 것을, 안전하다는 것을 확신하고 다음 코드를 짜고 싶은 그 마음..!! 그런데 마침 활동학습에서 Unit Test와 TDD가 나왔길래, 정리해보았다. Unit Test Unit Test는 메서드별 기능이 의도한 대로 구현되어 있는지 검증하는 것이다. 소스 코드의 특정 모듈이 의도된대로 정확히 작동하는지 검증하는 절차를 통해 작성한 코드의 안정성을 부여한다. 그렇다면 어떤 Test를 작성해야 할까? FIRST 원칙 Fast 빠르게 Independent / Isolated 독립적으로 Repeatable 반복 가능한 Self-Validating 스스로 검증하는 Timely 적시에 F. 테스트라는 목적에 맞.. 2024. 2. 5.
[iOS] UICollectionViewFlowLayout으로 Pinterest Layout 구현하기 처음 과제로 받은 피그마에 Pinterest로 구현된 View를 보고, Compositional로 도전해야지! 라고 호기롭게 생각했다. 그러나 Compositional의 벽은 높았고.. item과 group, section으로 크기를 주는 것에서 item 크기들을 어떻게 다르게 줘야 할지 감이 안 잡히더라. Section별로는 쉬운데!! 다른 라이브러리들을 까보면, Compositional + Combine의 조합으로 pinterest가 구현되어 있었다. 그러나 RxSwift나 Combine을 아직 잘 모르는데, 과제 기간은 매우 짧았기에 차마 이번에 도전할 자신은 없었다. 이미 collectionView, diffable data source, compositional 등 처음 써보는 것이 산더미..... 2024. 1. 31.
[NSCache&URLCache]왜 이미지 파일이 URLCache에서 메모리가 아닌 디스크에 저장될까? 데이터들은 어디에 저장되고 어떻게 사용될까? 먼저 하드 디스크에 우리의 데이터들이 전부 저장된다. 때문에 하드 디스크는 용량이 매우 크고, 기억을 하는 것에 치중되어 있다. RAM, 메모리는 그러한 하드 디스크에서 앱을 실행하는데에 필요한 중요 데이터들을 들고 있다. 그러나 여전히 내용은 방대하고, RAM은 디스크보단 기억할 수 있는 양이 적고, CPU와 가까워서 빠르지만 어찌 되었건 기억을 하는 것에만 능력이 치중되어 있다. CPU는 RAM에서 받은 데이터들을 이용해 앱을 실행한다. 기억보다는 성능이 중요해, 꾸준하게 성능이 업그레이드 되어 왔다. 때문에 RAM과 CPU는 기억과 성능으로 각자의 목적이 다르기에 서로서로 성능차이가 점점 심하게 나게 된다. RAM이 CPU를 쫓아가지 못해 CPU가 RAM.. 2024. 1. 28.