[TIL / 25.02.25] 자료구조, 메모리 구조, ARC에 대해 간략하게!
·
iOS/Swift
1. 자료구조1.1 배열(Array)데이터를 순차적으로 저장하는 자료구조인덱스를 사용해 특정 요소에 접근특징 : 빠른 조회 (O(1)), 삽입/삭제 시 성능 저하(O(n)).예시var numbers = [1, 2, 3, 4, 5]numbers.append(6)print(numbers) // [1, 2, 3, 4, 5, 6] 시간 복잡도를 연관지어 보는건 처음이라 왜 O(n)이 되는지 알아봤는데 삽입 혹은 삭제 시 최악의 경우 그 갯수만큼 값을 밀어야 하거나 당겨와야하기에 O(n)이 된다고 한다. 1.2 큐(Queue)선입선출(FIFO, First In First Out) 구조.데이터를 한쪽에서 삽입하고, 반대쪽에서 제거.사용 사례: 프린터 작업 대기열, BFS 탐색.예시struct Queue { priv..
[TIL / 25.02.21] SkeletonView 적용 및 생명주기 관련 문제 해결
·
iOS/Swift
1. 오늘 진행한 작업 전체적으로 데이터가 로드되어 나오는 페이지에 대해선 스켈레톤뷰를 입히기로 결정했다. SkeletonView란 데이터가 로드 되는 등 페이지 로딩 상황에 애니메이션을 제공함으로써 사용자에게 진행되고 있음을 느끼게 해줄 수 있도록 하는 뷰다.  이를 구현하려면 SkeletonView라는 라이브러리를 설치해 사용해야 한다. 사용법을 간단히 말하자면,import SkeletonView 를 통해 스켈레톤뷰를 사용하는 모듈에 임포트해주고스켈레톤뷰를 적용하고자 하는 뷰에 사용가능하도록 설정 -> 보여주고자 하는 타이밍에 show -> 데이터 로드 완료되거나 스켈레톤 뷰를 끄고 싶을 때 hide2. 겪었던 문제와 해결 테이블뷰의 모든 요소에 스켈레톤뷰를 적용했음에도 헤더 영역에는 적용되지 않는 ..
[TIL / 25.02.17] 뷰 맨 앞으로 보내기
·
iOS/Swift
1. 오늘 진행한 작업기존 사이드메뉴를 보여주다가 왜 Safe Area까지 뻗어나가지 않는지에 대해 물어보길래, 타 어플들도 찾아보면서 어떤지 보았는데 대다수가 Safe Area 영역까지 뻗어있는 것을 확인했다. 디자인 나온대로 구현하다가 safeArea를 뚫지 않는 게 당연하다고 생각하고 있었는데, 아니었다. 결론적으로, 이 뚫려있는 사이드메뉴를 구현하면서 기존엔 홈에서만 적용되어있던 사이드메뉴를 지난 포스트에서 올렸던 탭바가 들어가는 뷰에서도 적용해보았다.  2. 겪었던 문제와 해결 2.1첫번째로 사이드메뉴가 자꾸 safeArea를 무시하지 못하는 상황이었는데, 제약조건으로도 safeAreaLayoutGuide.snp.topMargin으로 해보라는 의견도 있고 여러 의견 모두 시도해보았는데 되지 않고..
[TIL / 25.02.14] 열거형 Enum을 이용한 메뉴 구성
·
iOS/Swift
1. 오늘 진행한 작업아직 디자인이 나오지 않은 부분인데, 사이드메뉴에서 로그인이 되지 않은 게스트 상태일 때 어떻게 띄울지도 구현을 해야했다.로그인이 되지 않았다면 기존 포스트에서 나오던 기능들의 대부분을 쓸 수 없기에 테이블 뷰 내 cellForRowAt 구성도 바꿔주어야 했는데, 이 로그인 여부는 프로젝트에서 jwt를 쓰고 있기에 액세스 토큰의 존재 여부로 확인하기로 했다. 2. 겪었던 문제와 해결 로그인을 했을땐 메뉴가 네 개, 로그인을 하지 않았을땐 메뉴가 한 개인데 이를 어떻게 Delegate, DataSource 측에서 관리시켜주지? 가 가장 큰 문제였다.이런 상태에 따라서 달라지는 테이블뷰는 처음 구현해보는데 그냥 메뉴의 이름으로 구분을 할 수는 없을까? 하다가 나온 결론이 enum 타입이..
[TIL / 25.02.13] 다중 섹션 및 헤더가 포함된 사이드 메뉴 구현
·
iOS/Swift
1. 오늘 진행한 작업지난 포스트에서 사이드메뉴에 대한 토대를 마련했다면, 이번 포스트에선 그 안에 들어가는 메뉴들에 대한 UI를 구현해보았다.화면에서 보았듯, 포인트를 이렇게 잡았다. 1. 일정 UI 구조의 반복되는 컴포넌트가 두 형태를 가짐(내 블로그 같은 Label 위주의 메뉴, Developers 하단에 있는 여러 컴포넌트가 종합되어있는 카드 셀)2. 메뉴의 개수 혹은 Developers의 멤버 수가 많아질수록 전체 뷰의 높이는 더 커져야 함.3. 스크롤할 수 있어야 함. 제일 먼저 스크롤할 수 있어야 하는 부분 때문에, 상위 ScrollView를 두고 안에 컴포넌트들을 배치할까 했으나 동적 높이를 컨트롤하기엔 효율적이지 못함 -> 스크롤뷰를 상속받고 내부 요소 주입만 해주면 알아서 높이 지정이 ..
[TIL / 25.02.11] 사이드메뉴를 구현해보자 . . . !
·
iOS/Swift
1. 미리보는 결과 옆에서 펼쳐지는 메뉴를 지금껏 햄버거바라고 했는데,, 찾아보니깐 사이드 메뉴라고 하더라구요?!이를 라이브러리를 써서 구현하는 방법도 있으나 이 방법은 이미지난 포스트에서 다뤘던 것처럼 상단 탭바에서도 썼기에,, 직접 구현하는 방법은 많이 어려운가해서 찾아보고 있었는데 https://world-of-larooly.tistory.com/88 Swift Side Menu UI 만들기 (with Code)이번에 만들 UI는 명칭이 좀 다양한데요. 사이드바, 메뉴바, 햄버거 메뉴, 슬라이드바 등등 부르는 이름이 다양한데 일단 편의상 사이드 메뉴(Side Menu) 라고 부르겠습니다. 또한 만드는 방법이 다world-of-larooly.tistory.com 요 선생님 코드 참고해서 만들어보았습니..
[TIL / 25.02.10] 헤더를 이용한 테이블뷰를 구성, 셀과 헤더 높이 자동 계산
·
iOS/Swift
네 전에 만들었던 뷰를 재사용할 수 있어서 이렇게 구현 후에 가져왔습니다. 일단 포스트들의 섹션 전에 있는 검색, 태그 섹션에 있어서 각자 다른 UI를 가지기에 원래 스크롤뷰로 해야겠거니...! 했는데이 경우엔 포스트가 몇개가 오느냐에 따라 스크롤할 수 있는 영역의 높이 자체도 다르고 그걸 계산해서 지정해주기에도 무리가 있으니테이블뷰의 특성을 활용하면 되겠다고 판단했습니다. 보시면 포스트 구간에서는 스크롤을 해도 저런 포스트들의 셀들이 끝없이 나올거잖아요? (정해진 갯수만큼이겠지만!)이러한 특성을 고려해 반복되지 않는 구간인 "All Post" 타이틀 까지의 영역을 헤더로 구현하고 그 아래엔 셀들을 넣어주면 되겠다~고 생각하며 구현했습니다. let blogTableView = UITableView(fra..
[TIL / 25.02.07] 라이브러리 사용해서 상단 탭바 구현하기 2
·
iOS/Swift
https://subkyu-ios.tistory.com/6 [TIL / 25.02.06] 라이브러리 사용해서 상단 탭바 구현하기 1개발 팀 애들끼리 개발 관련 포스트를 쓸 수 있게 블로그를 만들고 있는데 난 거기서 iOS를 담당한다.예전부터 한참 애썼던 탭바.. 탭바 자체는 솔직히 그냥 만들수있는데 하단에 같이 나오는 뷰subkyu-ios.tistory.com지난 포스트에서 탭바 하위 스택에 탭에 연관된 뷰를 렌더링하는 자리인 페이지뷰가 최상단부터 영역을 차지하는 문제가 있었음 !이를 해결하고자 생각했던 게1. 탭바 하단부터 레이아웃을 둘 수 있도록 방법을 찾자2. 1번이 안되면 해당 페이지뷰에 들어가는 뷰의 레이아웃을 탭바 하단부터 자리할 수 있도록 구현하자.였는데 클로드로는 해답을 찾지못했고, gpt..
[TIL / 24.02.05] 함수의 기초 복습해봅시다 !
·
iOS/Swift
1. 함수1.1 함수의 선언 방법Swift에서 함수는 특정 작업을 수행하는 코드 블록이며, 아래는 일반적인 함수 선언 형태이다.func 함수이름(매개변수이름: 타입) -> 반환타입 { // 실행할 코드 return 결과값}func 키워드를 사용하여 함수를 선언.매개변수(입력값)를 받을 수 있으며, 여러 개의 매개변수를 지정할 수도 있습니다.함수는 특정 작업을 수행한 후, 결과를 반환할 수도 있습니다.- 매개변수가 없는 함수매개변수를 받지 않고, 호출하면 항상 같은 결과를 출력하는 함수.func sayHello() { print("안녕하세요!")}sayHello() // "안녕하세요!" 출력 - 매개변수가 있는 함수함수를 호출할 때 특정 값을 전달하여 다양한 결과를 출력할 수 있다.func greet(na..
iOS 스타터 노트
·
내일배움캠프
1. 내가 iOS 스타터 트랙에 참여한 계기는 무엇인가요?- 졸업작품을 Swift로 개발했고 후에 지망 분야도 iOS인데, 마스터와 스타터 트랙을 두고 고민을 했습니다. 앞으로 배워야할 것들은 마스터 트랙에 훨씬 많으나, 마스터 트랙에 합류하게 되면 기초가 부족해 따라가지 못할 것이 염려되어 스타터 트랙에서 기초를 확실하게 다지면서 기존 실력으로 여유가 생기는 부분에선 마스터 단계에서 다루는 심화 파트를 함께 공부할 수 있도록 해야겠다 생각하여 스타터 트랙에 참여하게 되었습니다.2. 나는 프로그래밍에 대해 어느정도의 사전지식이 있나요?- CS 지식을 과에서 다루긴 하였으나 이를 잘 기억하지 못하고 있고, swift로 복잡하지 않은 UI 정도는 구현할 수 있습니다. 동시에 네트워킹 메서드 작성까지 가능합니..