Apple🍎
-
init(frame:), init(nibName: , bundle:), NSCodingApple🍎/iOS 2025. 2. 2. 19:49
아래처럼 BaseViewController, BaseView를 만드는 도중, 둘의 init 이 서로 다른 형태인것을 보며 어디에 어떤걸 써야하는지 헷갈려서 작성하는 글이다..class BaseViewController: UIViewController { override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) { super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil) ... } init() { super.init(nibName: nil, bundle: nil) // XIB를 사용하지 않음 } @..
-
[iOS]Pagination & CollectionView prefetchItemsAt 사용Apple🍎/iOS 2025. 1. 16. 16:41
PaginationCollectionView, TableView의 경우, ScrollView를 상속받기 때문에 많은 데이터를 스크롤로 보여주기 좋은 방식이다.스크롤 방식에 필요한 데이터를 API 통신으로 한번에 받아오는 경우, 시간과 리소스 문제가 클 수 있다.그러므로 스크롤의 위치나 페이지로 넘기는 방식을 통해 끊어서 데이터를 요청하는 방식을 “Pagination”이라고 한다.Pagination 종류Offset based paginationCursor based pagination1. offset based pagniation오프셋 번호를 기반으로 보여주는 것1번: 1 ~ 1002번: 101 ~ 2003번: 201 ~ 300Ex. query=스파이더맨&display=100&start=1서버의 데이터 변..
-
[UIKit] 뷰 생명주기(View Life Cycle)Apple🍎/iOS 2025. 1. 2. 13:03
뷰 관리 & 계층적 구조 (by UIViewController)UIKit에서의 뷰 관리는 UIVIewController를 사용한다. 뷰의 계층적인 구조를 뷰 컨트롤러가 담당해 관리하기 때문에, 관리에 관련된 메서드나 속성을 UIVIewController(이하 줄여서 VC라고 하겠다)에 적용해 관리한다.일반적으로 화면에 보여지는 것은 하나의 ViewController가 가진 View만 표시된다.VC는 컨테이너 역할이므로 다른 View를 가진 다른 VC를 보여줄 수도 있고, 현재 VC에 다른 컨텐츠(View 객체들, UIButton,,)를 담을 수도 있다.보통 ViewController에는 Root View가 존재한다. window를 갖고 있는 곳이 RootViewController이며 View 를 로드할 ..
-
[UIKit/스토리보드] IBOutlet weak & Collection은 왜 weak가 아닐까?Apple🍎/iOS 2024. 12. 30. 10:03
요새 Storyboard 기반으로 공부를 하다보니 “IBOutlet에 붙는 weak, 그리고 collection에는 왜 weak가 안붙는지?..”가 궁금해져서 찾아보게 됐다!참조 관계 파악View Controller를 살펴보면 아래와 같이 구성되어 있다.View Controller > View > View 객체(UIImageView, UILabel,,,) 의 계층 구조로 설계되어있다.IBOutlet은 ViewController - View객체를 이어주는 연결을 하는데,여기서 weak를 붙이는 이유는 아래와 같은 참조관계를 먼저 알아야한다.모든 ViewController는 View가 있어야하기 때문에, 강하게 참조한다.VC → View그리고, View안에도 button, label 등 View 객체가 있어..
-
[iOS] Kingfisher & AppStorage로 이미지 다운로드 속도 개선하기Apple🍎/iOS 2024. 11. 24. 23:51
이력서와 프로젝트에 작성했던 부분인데, 최근 면접을 준비하다가 내가 한 방법이 맞는지 잘 모르겠다.다른 분들은 어떻게 하는지 궁금하기도 해서 쓰는 글URLSession & Kingfisher내가 맡은 부분은 인스타그램처럼 홈 화면에 매번 떠있는 저 프로필 이미지를 가져와야한다.URLSession으로 Firebase Storage 에 담긴 회원 프로필 이미지 url을 다운받아 보여주는 역할을 한다.Kingfisher의 경우 이미지 캐싱 라이브러리이기 때문에, URLSession보다 빠르게 다운로드가 가능하다.Instrument - profile - network 로 테스트 해본 결과,약 2초 걸리는 이미지 다운로드가 1.3초까지 줄여지는 것이 확인된다. 많이 줄여졌지만, 이 과정에 대한 의문점이 생겼다.프..
-
[SwiftUI] Hashable, Equatable, IdentifiableApple🍎/iOS 2024. 11. 10. 23:33
struct에 Hashable이 선언된 곳 안에 또다른 데이터 타입으로 Hashable 상속을 안해주면 Equatable error 가 뜬다.Type 'Hike' does not conform to protocol 'Equatable’이라는 에러로 시작해 글을 쓰게 됐다. 맨날 대충 찾아보고 긁어넣었던 이것들은 무엇일까?Hashable이란?hash 값을 생성할 수 있는 유형.즉, String, Int, Double, Float, Bool, Set 값들이 전부 해시값으로 바꿀 수 있는 것들이다.따라서 Hashable 프로토콜을 채택한 집합은 전부 이 유형을 갖고 있어야한다.설정 안한 열거형을 정의했을 때 자동으로 해시 가능성을 얻는다. 이러한 hash값을 사용하는 이유는, 탐색의 속도가 빨라서이다.해시 테..
-
[iOS/SwiftUI] NavigationStack을 왜 사용하는가?Apple🍎/iOS 2024. 9. 4. 01:48
NavigationStack으로 link를 타면서 화면 전환을 하다가,,,화면 전환을 하면서 action을 취해야하는 순간이 있었는데 이를 찾다가 .navigationDestination을 봤고....Router 구조체를 만들어서 navigation을 정리하는 것을 보며NavigationStack은 도대체 왜 나타나게 된건지,어떻게 제대로 사용하는 건지를 찾아보게 됐다.NavigationStack & Link로 사용하면 안되는건가?원래는 아래와 같이 NavigationLink만 사용해도, 원하는 화면으로 이동 가능하다.import SwiftUIstruct ContentView: View { var body: some View { NavigationStack { VSt..
-
[iOS] ARC란 무엇인가 & 메모리 누수Apple🍎/iOS 2024. 8. 23. 19:08
Swift - ARC 한글문서를 참고해서 정리한 문서입니다.2024.08.23 - [iOS] 메모리 구조앞의 글에서 "하지만 ARC도 강한 참조면 메모리 해제 못한다구?!" 에 이어서 ARC를 알아보자!ARC(Automatic Referecne Counting)란?객체의 생명주기와 관계를 모델링한다.이게 뭔 소리야..? 싶겠지만 앞에서 본 heap영역에 올라간 객체(클래스)의 생명주기, 관계를 모델링 해주는 역할이라고 생각하면 어떨까?대부분 Swift의 메모리 관리는 생각할 필요 없이, ARC가 알아서 클래스 인스턴스로 사용된 메모리를 할당/해제 해준다.(유의: 참조 카운팅은 클래스의 인스턴스에만 적용! 구조체,열거형은 참조 타입이 아닌 값 타입이므로 참조로 저장되거나 전달되지 않는다.)ARC의 작동 원..