일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 | 31 |
- ARC
- 코딩테스트입문
- 시험에자주나오는것만
- mrc
- firebase
- ios면접
- IOS
- Safari Inspector
- TDD
- unittest
- HackersRank
- 프로그래머스
- 앱의생명주기
- iOS앱 디버깅
- hackerrank
- alamofire
- Bubble Search
- 카카오맵클론
- RC
- SWIFT
- Swift디자인패턴
- ReactorKit UnitTest
- 반응형프레임워크
- RxSwift
- UIKit
- Swift코딩테스트
- Di
- firestore
- AutoLayout
- algorithm
- Today
- Total
목록전체 글 (93)
샘성의 iOS 개발 일지
목적 원하는 모듈을 생성할 때마다 필요한 파일을 하나하나 세팅해주는 번거로움 해결하기. → 모듈에 필요한 코드를 템플릿 파일에 미리 작성해두고 tuist scaffold 명령어를 실행하면 자동으로 해당되는 모듈에 대한 파일 및 코드가 작성 됨. 준비물Tuist 폴더 안에 Templates 폴더 생성Templates 폴더의 하위 폴더로 '원하는 모듈 이름' 폴더 생성하기'원하는 모듈 이름' 폴더 안에 '원하는모듈이름.swift' 파일 직접 생성하기 파일 구조... └── Tuist └── Templates └── Domain └── Domain.swift # Domain 모듈에 대한 템플릿 전체 설정 └── Packa..
서로 연관되거나 의존적인 객체들의 조합을 만드는 인터페이스를 제공하는 생성자 패턴 팩토리 메서드 패턴과의 차이점? [디자인 패턴] 팩토리 메서드 패턴객체 생성을 캡슐화 하여 ‘팩토리 클래스’를 통해 생성하도록 하는 생성 디자인 패턴 구조CreatorProduct 객체를 생성하는 메서드 정의 (protocol / class)Concrete CreatorConcrete Product를 생성하기 위한 구iossammy.tistory.com 팩토리 매서드1 팩토리 - 1 객체 생성구체적 객체 생성 과정을 하위 클래스에 구현하도록 하는 것이 point→ 메서드 레벨에서의 구체화된 인스턴스의 생성 및 구성에 대한 의존성 감소추상 팩토리1 팩토리 - 연관된 여러 종류의 객체 생성연관된 여러 종류 객체의 묶음을 구체적..
객체 생성을 캡슐화 하여 ‘팩토리 클래스’를 통해 생성하도록 하는 생성 디자인 패턴 구조CreatorProduct 객체를 생성하는 메서드 정의 (protocol / class)Concrete CreatorConcrete Product를 생성하기 위한 구체화 된 메서드를 가진 객체ProductCreator을 통해 생성될 수 있는 객체의 추상화 된 공통 Interface 선언 (protocol)Concrete Product:Product에서 선언된 Interface가 구체화 된 실제 객체 Swift 예제 코드// Productprotocol Bread { var name: String { get }}// Concrete Productstruct CreamBread: Bread { var name..
Inspector 사용 이유 앱 내에 띄운 WebView를 디버깅 할 때 Inspector를 사용한다. 해당 웹뷰가 띄워진 과정, 요청한 데이터 등을 확인할 수 있어 앱 내에서 웹뷰를 띄울 때 유용하게 사용된다. 예를 들면 필자는 네이버 로그인을 웹뷰로 구현하는 도중, 웹에서는 콜백 데이터를 넘겨주지만 앱에서는 해당 콜백 데이터를 받지 못하고 계속 흰색 빈 화면이 띄워지는 문제를 겪고 있었다. Xcode 디버깅으로는 웹 내 작업을 정확히 파악하기 힘들어 Inspector를 활용한 경험이 있다. 웹뷰 디버깅을 위한 Inspector 활성화 방법 iOS 16.4 버전부터는 WKWebView의 isInspectable 속성을 true로 설정해야 Inspector를 사용할 수 있다. if #available(i..
개요 저번주에 HIG 스터디에서 Launching 부분을 주제로 공부하였다. 스터디에서 출시한 앱 중 한 앱이 ‘앱을 처음으로 설치 → 실행’ 경우 사용자 정보를 요구한 것이 떠올라 이를 회고하고 리펙토링 하기로 했다. 리펙토링 계획 우선, 해당 앱은 MVC 패턴, CoreData, Podfile, SPM등의 외부 라이브러리가 전혀 들어가있지 않은 상태이다. (심지어 네트워킹도 URLSession으로 함) 정보를 요청하는 화면 제거하기 MainVC에서 유저의 이름 부분을 터치 가능하도록 하기 유저 정보 없을 시에, "User"를 이름 대신 노출 터치시, 이름 등록 및 수정 하는 얼럿창 노출 지역을 나타내는 글자 옆에 버튼 추가하기 기본 날씨 제공 지역은 '서울'로 설정하기 버튼 터치시 CLLocation..
1. 재공학 1-1) 소프트웨어 재공학(Software Reengineering)의 개념 💡 “기존의 시스템을 변경 혹은 재구조화 해서 사용하자.” 소프트웨어 위기를 유지보수의 생산성으로 해결하려는 방법을 뜻함 1-2) 재공학의 장점, 목표, 과정 장점 개발 시간 및 비용 감소 품질 향상 (기존에 존재하는 것을 다시 만든 것이니까) 신뢰성 향상 (기존에 사용했기 때문에 검증됨) 구축 방법에 대한 지식의 공유, 프로젝트 실패 위험 감소 목표 최우선 목표는 소프트웨어 유지보수성 향상이다. 복잡한 시스템을 다루는 방법 구현, 다른 뷰의 생성, 잃어버린 정보 복구 및 제거 재사용을 수월하게 해서 소프트웨어의 수명을 연장시키자. 과정 분석(사용 가치 여부 분석) → 구성(구조 리펙토링) → 역공학(기존에 있는 것..
1. 소프트웨어 💡 컴퓨터를 동작시키고 어떤 일의 처리 순서와 방법을 지시하는 명령어의 집합인 프로그램 (e.g. 앱) 1-1) 소프트웨어 특징 상품성: 상품이 되어 판매가 가능 복잡성: 개발하는 과정이 복잡하고 관리가 어려움 변경 가능성: 프로그램 업데이트 가능 오류 개선 및 업그레이드 복제성: 복제가 용이하여 쉽게 복사 및 유통 가능 앱 하나 만들면 여러명이 다운 받을 수 있음 1-2) 시스템의 개요와 기본 요소 시스템의 개요 컴퓨터로 처리 가능한 자료를 입력, 저장, 처리, 가공해 출력할 수 있도록 하는 정보 체계 기본 요소 (5가지) 입력, 처리, 출력, 제어, 피드백 1-3) 소프트웨어 위기 소프트웨어의 개발 속도가 하드웨어의 개발 속도를 따라가지 못해 사용자들의 요구사항 감당 못 하는 문제가 ..
문제 설명: There is a large pile of socks that must be paired by color. Given an array of integers representing the color of each sock, determine how many pairs of socks with matching colors there are. Example n = 7, ar = [1, 2, 1, 2, 1, 3, 2] There is one pair of color 1 and one of color 2. There are three odd socks left, one of each color. The number of pairs is 2. Function Description Complete th..