본문 바로가기

전체 글133

[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.
[Swift🍎] RxSwift에서 bind와 driver의 차이 1.  BindObservable을 UI요소에 바인딩 할 때 사용하며 데이터 스트림을 직접적으로 UI와 연결할 수 있다주요 특징1.  간단한 코드로 UI 업데이트를 할 수 있다     → OnNext만 가지고있기 때문에 단순히 생성되는 값을 넘기고 싶을 때 유리하다2.  스레드 처리: 일반적으로 메인 스레드에서 동작하지 않으며 직접적으로 스레드를 지정해 주어야 할 수 있다3.  에러 처리: 에러 처리를 포함하지 않는다     → onNext만 가지고 있어서 error&completed 가 발생하지 않는 무한한 이벤트를 방출할 수 있다     → 옵저버블이 eroor를 방출하면 해당 옵저버블은 종료되며, 따로 에러를 처리하거나 UI에 반영할 수 없다4.  메모리 관리: bind는 Disposable을 반환.. 2024. 10. 14.