전체 글54 [iOS 앱 개발]객체의 프로퍼티 변화를 감지하는 방법 - KVO 패턴 적용 방법 객체의 프로퍼디 변화를 감지하는 방법 UserDefault에 값을 저장하고, 저장된 값을 Label에 표시하는 앱을 만들면서 한 가지 고민이 생겼습니다. 그것은 UserDefault가 현재 ViewController에 정의된 객체가 아닌 외부에 있는 객체라는 것입니다. 그래서 UserDefault의 값을 추적하고 변화된 값을 현재 ViewController에 있는 Label에 반영하는 방법에 대해 고민하게 되었습니다. 앱 개요 우선 어떤 앱을 만들었는지 설명을 해보겠습니다. 앱의 요구사항 5가지의 감정 버튼을 누르면 값이 1씩 추가된다. 버튼을 길게 누르면 PullDownButton이 나오고 다양한 클릭 횟수와 리셋 기능을 추가해준다 추가된 값은 UserDefault에 저장해준다. 통계 탭에 UserDe.. 2023. 7. 26. [iOS 앱 개발] ImageView에 터치 기능 추가(@IBOutlet Collection) 이미지를 버튼으로 만드는 방법 UI를 만들다 보면 버튼보다는 이미지를 넣어서 버튼처럼 동작하게 만들어야 할 때가 있다. UIImageView는 기본적으로 터치를 인식할 수 없다. @IBOutlet weak var imageView: UIImageView! override func viewDidLoad() { super.viewDidLoad() let tapGesture = UITapGestureRecognizer( target: self, action: #selector(imageTap(_:)) ) imageView.addGestureRecognizer(tapGesture) imageView.isUserInteractionEnabled = true } @objc func imageTap(_ sender:.. 2023. 7. 23. [Swift] ReactorKit 기본 개념 👉 ReactorKit 개념 ReactorKit은 RxSwift를 기반으로 한 iOS 애플리케이션 아키텍처 패턴 중 하나로, View, ViewModel, Reactor로 구성됩니다. 이 패턴은 모든 사용자 입력과 시스템 입력에 대한 반응을 제공하며, 뷰와 상태 사이의 강력한 연결을 제공합니다. 이 패턴은 또한 깨끗하고 모듈화 된 코드를 작성할 수 있도록합니다. ReactorKit을 사용하는 이유 ReactorKit은 뷰와 뷰모델 사이의 결합도를 줄이고 코드를 모듈화하여 작성할 수 있도록 함으로써 애플리케이션의 구조를 단순화시킵니다. 또한 리액티브 프로그래밍을 사용하므로 코드의 가독성과 유지 보수성이 향상되며, 비즈니스 로직을 명확하게 분리할 수 있습니다. ReactorKit은 뷰모델과 리액터의 분리로 .. 2023. 7. 19. [RxSwift] Observable과 Operator 개념 파헤치기 [1] Observable Rx 코드의 기반 T 형태의 데이터 snapshot을 '전달' 할 수 있는 일련의 이벤트를 비동기적으로 생성하는 기능 하나 이상의 observers가 실시간으로 어떤 이벤트에 반응 세 가지 유형의 이벤트만 방출 RxSwift은 비동기 이벤트 기반 프로그래밍을 지원하여, iOS 앱 개발에서 매우 유용하다. 이러한 비동기 이벤트 기반 프로그래밍에 가장 중요한 요소 중 하나가 Observable이다. next, error, completed Observable은 RxSwift에서 가장 기본적인 개념 중 하나이다. Observable은 이벤트를 발생시키는 객체로, 이벤트는 3가지 종류가 있다. enum Event { case next(Element) // 시퀀스의 다음 요소 case erro.. 2023. 7. 13. [iOS앱 개발] Rxswift + MVVM + Firebase 로그인(Google, Apple 로그인) Login-RxSwift-MVVM Firebase + Google + Apple 로그인 구현 목적 RxSwift + MVVM 기능 학습 SnapKit + Then 기능 학습 SnapKit + Then 조합으로 UI구현 텍스트와 텍스트크기를 프로퍼티로 따로 관리해 준다. UI객체는 Then으로 구현해 준다 AutoLayout은 SnapKit으로 구현해 준다. Text와 Size를 구조체에 별도로 생성하고 관리해 준다. struct DV { enum TextSize { static let loginTextViewHeight: CGFloat = 48 } enum LabelText { static let emailInfoLabel = "이메일주소 또는 전화번호" static let passwordInfoLabe.. 2023. 7. 13. [프로그래머스][LV.3][Swift] 여행경로(DFS & BFS) https://school.programmers.co.kr/learn/courses/30/lessons/43164 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 여행경로 DFS 문제 설명 주어진 항공권을 모두 이용하여 여행경로를 짜려고 합니다. 항상 "ICN" 공항에서 출발합니다. 항공권 정보가 담긴 2차원 배열 tickets가 매개변수로 주어질 때, 방문하는 공항 경로를 배열에 담아 return 하도록 solution 함수를 작성해 주세요. 제한사항 모든 공항은 알파벳 대문자 3글자로 이루어집니다. 주어진 공항 수는 3개 이상 10,000개 이하입니다... 2023. 7. 2. [Swift] Class에서 Final, Private를 쓰면 정말 성능이 향상될까? Class의 성능을 향상하기 위해서는 final 및 private을 사용하는 것이 권장됩니다. Swift의 Class와 Protocol은 모두 참조 타입(reference type)입니다. Class는 상속과 오버라이드가 가능해 컴파일 타임에서 적절한 타입을 추론할 수 없어 런 타임에서 결정되게 됩니다. 런 타임에서 Class는 V-Table, Protocol은 W-Table을 사용하여 Dynamic Dispatch를 수행합니다 앱 생성 시 대개 ViewController를 상속받아서 UIViewController 클래스와 함께 Dynamic Dispatch가 작동하도록 코드를 작성합니다. Dynamic Dispatch는 Static Dispatch에 비해서 성능이 뒤떨어질 수밖에 없는데요. 애플에서는 .. 2023. 6. 30. [프로그래머스][LV.2][Swift] N개의 최소공배수 (유클리드 호제법) https://school.programmers.co.kr/learn/courses/30/lessons/12953 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 두 수의 최소공배수(Least Common Multiple)란 입력된 두 수의 배수 중 공통이 되는 가장 작은 숫자를 의미합니다. 예를 들어 2와 7의 최소공배수는 14가 됩니다. 정의를 확장해서, n개의 수의 최소공배수는 n 개의 수들의 배수 중 공통이 되는 가장 작은 숫자가 됩니다. n개의 숫자를 담은 배열 arr이 입력되었을 때 이 수들의 최소공배수를 반환하는 함수, solutio.. 2023. 6. 28. 이전 1 2 3 4 5 6 7 다음