본문 바로가기

전체 글132

[스터디8일차] Diffable Data Source 1.  Diffable Data Source란?TableView, CollectionView를 그리기 위한 데이터를 관리하고 UI를 업데이트 한다기존 방식과 달리 데이터의 변경 사항을 자동으로 계산하고 애니메이션을 적용해 UI업데이트를 수행한다핵심은 변경된 데이터만 효율적으로 업데이트 한다는 점이다    2.  DataSource Protocol과의 차이TableView, CollectionView를 그리기 위해서는 DataSource가 필요하다기존에는 DataSource Protocol을 채택하고, 프로토콜에 구현되어 있는 메서드를 사용하는 방법을 사용했다 데이터 업데이트 방식에서의 차이기존의 DataSource Protocol는 reloadData()를 호출하여 데이터를 전체적으로 갱신한다이렇게 하면.. 2024. 11. 13.
[Chapter01] 컴퓨터 구조의 큰 그림 1.  명령어와 데이터컴퓨터는 0과 1로 표현된 정보만 이해한다0과 1로 표현되는 정보는 데이터와 명령어가 있다컴퓨터가 이해하는 숫자, 문자, 이미지, 동영상 같은 정적인 정보를 데이터라고 한다 하지만 이 둘 중 컴퓨터를 실질적으로 작동시키느데 더 중요한 정보는 명령어이다명령어는 데이터를 움직이고 컴퓨터를 작동시키는 정보이기 때문이고, 데이터는 명령어를 위해 존재하는 일종의 재료이기 때문이다  2.  컴퓨터의 부품컴퓨터를 이루는 핵심 부품 4가지만 이해하고 있어도 작동 원리를 파악하기 쉽다- 중앙 처리장치(CPU)- 주기억창지(메모리)- 보조기억장치- 입출력장치 2-1.  메모리현재 실행되는 프로그램의 데이터와 명령어를 저장하는 부품이다즉, 프로그램이 실행되려면 반드시 메모리에 저장되어 있어야 한다메모리.. 2024. 11. 12.
[스터디7일차] 객체지향 & 프로토콜 1.  객체지향 프로그래밍(OOP)1-1.  객체지향의 기본 개념객체(Object)와 메시지(Message)로 구성된다객체지향에서는 소프트웨어를 하나의 독립적이고 유기적인 객체의 집합으로 보고, 이 객체들이 서로 상호작용하여 문제를 해결해나가는 구조를 만들어 나간다객체는 외부에서 접근 가능한 인터페이스를 통해 상호작용하고, 외부에서는 객체 내부의 상태나 구현 방식을 알 필요 없이 오직 인터페이스를 통해서만 상호작용한다   1-2.  객체(Object)와 메시지(Message) 란?객체란 데이터와 이를 조작하는 동작(메서드)를 하나의 단위로 묶은 것이다메시지란 서로 독립적인 존재인 객체가 상호작용할 수 있게 하는 도구다(객체 ↔ 메시지 ↔ 객체) 1-3.  객체지향 설계의 5대 원칙(SOLID 원칙) 1).. 2024. 11. 12.
[Swift🍎] tableView, collectionView 식별자 간단하게 관리하기! 프로젝트 할 때마다 collectionView, tableView 식별자 만들고, 다시 갖다쓰는 과정이 번거로웠는데해결할 수 있는 간단한 방법을 알아냈다!!!!!! 👏🏻👏🏻   방법 1.  - 비추먼저 가장 기본적인 방법부터 설명하자면 식별자를 문자열로 설정하는 방법이 있다tableView.register(UITableViewCell.self, forCellReuseIdentifier: "MyTableViewCell")let cell = tableView.dequeueReusableCell(withIdentifier: "MyTableViewCell", for: indexPath)cell.textLabel?.text = "Hello Swift" tableView.register 등록 시 식별자를 문.. 2024. 10. 31.
[Swift🍎] RxSwift로 UITableView에 bind 하기 RxSwift와 MVVM을 활용해 TableView에 데이터 집어넣기기록용! 📝  먼저 MVVM 패턴에 대해서 간단하게 다시 짚어보기 [스터디5일차] MVVM 패턴MVVM이란?Model - View - ViewModel의 약자로 UI와 비즈니스 로직을 분리한다각각 특정한 역할을 담당하며 독립적으로 동작할 수 있게 만들어져 코드의 가독성이 높아지고 유지보수와 테스트를 쉽게 한solby.tistory.comModel : 데이터 구조 표현 및 처리ViewModel : View - Model 사이에서 데이터를 주고받는다(데이터를 가공)View : 사용자에게 보여주는 UI요소 처리(bind)  RxSwift로 TableView 생성하는 예시1.  Modelstruct Item { let title: St.. 2024. 10. 31.
[스터디6일차] 테스트 코드👩🏻‍🔧 💡 테스트 코드는 개발한 코드의 동작이 의도한 대로 수행되는지 검증한다 테스트 코드 작성 시 오류를 빠르게 발견해 유지보수가 쉬워지며 코드의 품질을 높혀 소프트웨어의 안정성을 높일 수 있다크게 단위 테스트(Unit Test)와 통합 테스트(Integration Test), UI 테스트로 나뉜다   1.  테스트 코드의 분류 1-1.  단위 테스트(Unit Test)소프트웨어의 가장 작은 단위를 테스트한다 (일반적으로 함수나 메서드 단위)단위 테스트의 주요 목적은 코드의 각 부분이 정확하게 작동하는지 확인하는 것이며, 주로 의존성 없는 코드(로직이나 계산)에 대해 독립적으로 검증하는데 사용된다 1-2.  통합 테스트(Integration Test)여러 컴포넌트나 시스템이 함께 작동할 때 발생할 수 있는 .. 2024. 10. 30.
[스터디5일차] MVVM 패턴 MVVM이란?Model - View - ViewModel의 약자로 UI와 비즈니스 로직을 분리한다각각 특정한 역할을 담당하며 독립적으로 동작할 수 있게 만들어져 코드의 가독성이 높아지고 유지보수와 테스트를 쉽게 한다 1.  Model데이터 구조를 표현하여 데이터를 처리한다.  → MVC와 동일예를 들어, 사용자의 정보를 가져오거나 서버*에서 데이터를 받아온다   *파이어베이스같은 데이터베이스, 또는 네트워크(ex. 연락처앱의 PhoneBook 구조체) 2.  ViewViewModel을 관찰하여 사용자에게 보여지는 UI 요소를 처리한다(데이터 바인딩)(ex. UIButton, UITableView, UIViewController..)데이터를 직접 접근 및 처리하지 않고 보여주기만 한다3.  ViewMode.. 2024. 10. 25.
[스터디4일차][RxSwift] RxCocoa 1.  RxCocoa란?RxSwift와 함께 사용되는 라이브러리로 UI와 관련된 작업을 반응형으로 처리할 수 있게 한다  2.  RxCocoa의 주요 기능2-1.  UI 바인딩여러 UI요소들(UIButton, UILabel, UITextField...) 과 데이터 사이의 바인딩을 쉽게 처리한다Observable로 변환하여 상태 변화를 쉽게 감지하고 처리한다활용 예시let textField = UITextField()let label = UILabel()textField.rx.text.orEmpty .bind(to: label.rx.text) .disposed(by: disposeBag)*텍스트필드 값 업데이트 시 즉시 반영 let switchControl = UISwitch()let butto.. 2024. 10. 22.
[Swift🍎] RxGesture로 간편하게 View에 클릭이벤트 넣기 종종 StackView와 같이 터치 인터페이스와 관련없는 View 속성에 버튼을 넣고 싶은(넣어야 하는) 경우가 생긴다 보통 UITapGestureRecognizer를 사용해서 탭 제스처를 추가하는데,마침 이번 프로젝트에서는 RxSwift를 활용하고 있어서 더 간편하게 사용 가능한 RxGesture를 사용해 보았다  사용 방법1.  Xcode의 File > Add Package Dependency 메뉴를 선택하고 아래의 URL을 입력  →  https://github.com/RxSwiftCommunity/RxGesture GitHub - RxSwiftCommunity/RxGesture: RxSwift reactive wrapper for view gesturesRxSwift reactive wrapper.. 2024. 10. 17.
[Swift🍎] UIColor를 CGColor에 할당해야 하는 경우 사이드 프로젝트 진행 중 아래와 같이 UIColor를 CGColor로 할당해야 하는 경우가 있는데, 그 이유가 궁금해서 찾아보았다  먼저 두 가지 모두 색상을 나타내는 객체이지만 사용되는 환경과 목적에 따라 변환 유무가 결정된다  UIColor (UIKit 색상 객체)UIKit에서 제공하는 UI의 대부분의 시각적 속성에서 사용할 수 있다(ex. UIView, UILabel, UIButton...)OS와 iPad에 주로 사용되며, 다양한 기기 간 자동 색상 조정 및 다크모드 지원 같은 기능을 내장하고 있다let view = UIView()view.backgroundColor = UIColor.red  CGColor (Core Graphics 색상 객체)레이어 관련 속성에서 색상을 설정할 때 필요하다레이어.. 2024. 10. 16.