전체 글
-
[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초까지 줄여지는 것이 확인된다. 많이 줄여졌지만, 이 과정에 대한 의문점이 생겼다.프..
-
RESTful API란 무엇인가?Computer Science🖥️ 2024. 11. 15. 22:57
면접 단골 질문에, 채용 공고에도 많이 써있는 이 API는 왜 써있는 걸까?내가 프로젝트 하면서 보던 API들이랑은 뭐가 다른건가? 의 궁금증에서 시작된 글 시작~!RESTful API란?:REST(Represetational State Transfer) 아키텍처 스타일을 따르는 APIREST는 웹의 기본 프로토콜인 HTTP를 기반으로, 클라이언트와 서버 간의 통신을 효율적으로 하기 위해 정의된 아키텍처 설계원칙이다.이러한 REST 아키텍처의 설계 원칙은 크게 6가지를 가진다.이 원칙을 잘 지킨 API를 우린 RESTful API 라고 부른다.REST 원칙 Uniform Interface(일관된 인터페이스)Stateless(무상태성)Caching(캐싱 가능성)Client-Server(클라이언트-서버 구조..
-
[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값을 사용하는 이유는, 탐색의 속도가 빨라서이다.해시 테..
-
HTTP vs HTTPS (with SSL, 대칭키, 공개키)Computer Science🖥️/Network 2024. 10. 24. 18:38
이 둘에 대해 매번 찾다가 결국 암호화 방식까지 궁금해서 다 찾게 되었다.매번 대칭키, 공개키를 볼때마다 찾는 것 같아서 ㅎ… 정리하려고 한다.HTTP vs HTTPSHTTP(Hyptertext Transfer Protocol)는 텍스트 기반 프로토콜로, 주로 웹 브라우저 & 서버 간에 데이터를 전송할 때 사용하는 어플리케이션 계층의 프로토콜이다.HTTP의 통신이 상대를 확인하지 않고 요청을 주고 받는 특징을 가졌기 때문에 보안에 취약한데..이를 해결하기 위해서 HTTP + SSL 로 통신 내용을 암호화 하는 방식인 “HTTPS 프로토콜”이 나오게 된다.SSL이란 ?SSL(Secure Sockets Layer)가 발전되게 TLS로 버전업되면서 이름이 바뀌었다.SSL은 위와같이, HTTP - TCP의 직접..
-
누적합Algorithm PS👩🏻💻/개념 2024. 9. 16. 12:27
누적합은, 보통 이중 반복문(배열 문제)으로 시간 초과가 될때 구간합을 O(1)로 줄여주는 경우가 많아서, 종종 쓰인다. 누적합 사용 유형구간 합 구하기: 배열에서 여러 번 특정 범위의 합을 구하는 경우, 배열의 누적합을 미리 계산해 두면 각 구간의 합을 빠르게 구할 수 있습니다.예시: 주어진 배열에서 여러 번 "i번째 원소부터 j번째 원소까지의 합"을 구하는 문제.최소/최대 구간 합: 배열에서 특정 길이의 구간 중 가장 큰 합 또는 가장 작은 합을 구하는 문제에서, 누적합을 활용하면 구간 합을 효율적으로 계산할 수 있습니다.예시: "배열의 부분 배열 중 합이 가장 큰 구간을 찾아라"와 같은 문제.차이 배열: 누적합을 활용하여 배열에서 구간별로 값을 추가하거나 뺄 때, 전체 배열을 매번 갱신하지 않고도 ..