객체지향 프로그래밍(OOP)의 주요 개념
·
면접 질문 정리
1. 객체지향 프로그래밍(OOP)객체지향 프로그래밍(OOP)은 객체 및 이들간의 관계, 상호작용 등을 기반으로 프로그램을 설계하는 방법론 및 프로그래밍 패러다임데이터를 중심으로, 해당 데이터를 처리하는 기능(메서드)를 하나의 단위(클래스)로 묶어 코드의 재사용성, 유지보수성, 확장성을 높이는 데에 목적이 있다. 2. 객체지향 프로그래밍(OOP)의 핵심 개념 4가지1. 추상화 (Abstraction)불필요한 세부사항은 숨기고, 핵심 개념만 모델링하는 것.메서드들이 어떻게 작동하는지 같은 디테일은 생략, 그 본질을 들여다보는 것.ex) 자동차 - start(), drive() 어떻게 drive가 이뤄지는지는 중요하지않음 2. 캡슐화 (Encapsulation)데이터와 데이터를 다루는 메서드를 하나의 클래스 ..
[모업 MOUP] 프로젝트 첫 출시 회고
·
회고
우선, 우여곡절이 많았지만 최종 프로젝트로 개발한 앱 MOUP이 앱스토어에 출시되었다.https://apps.apple.com/kr/app/moup-%EB%AA%A8%EC%9D%B4%EB%A9%B4-%EC%97%85%EC%9D%B4-%EB%90%9C%EB%8B%A4/id6747497191 ‎MOUP - 모이면 업이 된다‎모이면 업이 된다 — MOUP 알바생의 근무 시간, 날짜, 월급을 자동으로 계산하고, 루틴(체크리스트) 기능으로 업무를 더 쉽게 관리할 수 있는 앱입니다. 주요 기능 - 급여 계산 - 일정 관리 - 캘린apps.apple.com 앱 소개 및 나의 역할 위 섹션에서 볼 수 있듯 모업은 모이면 업이 된다 라는 슬로건을 가지는 앱이다. 알바생이 근무 시간, 날짜, 월급을 입력하고 근무를 등록하..
[25.06.24] MOUP 트러블슈팅 - Listener와 Rx의 timeout
·
iOS/Swift
1. 문제 상황홈 내 테이블뷰에 들어갈 데이터를 불러오는 과정에서 combineLatest를 호출한다.extension HomeViewController: UITableViewDelegate { func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? { guard let headerView = tableView.dequeueReusableHeaderFooterView(withIdentifier: HomeHeaderView.identifier) as? HomeHeaderView else { return UIView() } Observable...
[TIL / 25.05.27] 날씨 앱 main 페이지 구조 트러블슈팅
·
iOS/Swift
1. 문제 상황현재 기획 상 위 아래로 한페이지씩 pageable하게 구현함. mainPageViewController(UIPageViewController) 하위 뷰컨트롤러들에 위 아랫 UIViewController를 연결해둠.근데 첫번째 페이지에서 화면을 아래로 잡아끌면 새로고침이 되어야함. PTR(Pull To Refresh)가 필요한데,, 문제의 현 구조. 대충 구조만 보고 넘겨주세요class MainPageViewController: UIPageViewController { private let disposeBag = DisposeBag() private let viewModel: PageViewModel private let mainViewModel: MainViewModel ..
[TIL / 25.05.18] 의존성 주입 담당 DIContainer를 처음 적용해보았습니다
·
iOS/Swift
DIContainer란?앱의 각 객체들이 어떻게 구성되고 주입될지 정의해주는 중앙 조립소.UseCase, Repository, ViewModel, ViewController와 같은 컴포넌트들을 하나의 컨테이너에서 만들어주기 때문에, 객체 간의 생성 책임을 분리하고 코드 가독성을 높이는 데 도움이 된다. - 객체 간 생성 책임 분리란?누가 누구를 만들지 결정하는 책임을 명확히 나누는 것임. class MainViewController: UIViewController { private let viewModel = MainViewModel( searchUseCase: SearchBooksUseCase( repository: BookRepository(networkServi..
[TIL / 25.05.13] BookSearchApp Lv 3 트러블슈팅 - Core Data 크래시
·
iOS/Swift
시간이 많이 없어 주 정보원은 GPT와의 스무고개뿐이라, 이중 검증이 아직 덜 된 부분이 많구요..!제가 생각하기에 확실하지는 않지만 "이게 맞는 것 같다"싶은 부분들로 글을 쓰겠습니다. 1. Persistent Store 초기화 전 Entity(context:) 사용 시 크래시 발생An NSManagedObject of class ‘BookEntity’ must have a valid NSEntityDescription.이 메시지와 함께 crash가 났는데담기 버튼을 누르면 코어 데이터에 CartBookEntity를 저장하는 로직을 실행하도록 하는 과정에서 문제가 생겼다.관련 코드를 보며 아직 코어 데이터 생태계에 아무것도 몰라서 찾아봐도 무슨 말인지 모르겠고 gpt랑 스무고개를 진행했다. "persi..
[TIL / 25.05.12] BookSearchApp 트러블슈팅 - 일부 배경색이 투명한 현상
·
iOS/Swift
문제 상황 및 도출요구 사항 맞춰서 16 pro 시뮬레이터 기준으로 작업 중이었고 분명 이 기기에선 제대로 떴는데이렇게 오늘 작업이 끝나는구나..인줄 알았습니다.웬 걸? 16.0버전 SE 2세대를 기준으로 돌리니 상단 서치바 영역이 까맣게 아무것도 안뜨는 현상이 발생했습니다. 자 문제 파악을 위해 각 시뮬레이터 두 환경에서 뷰 디버거를 키면 어떻게 보일지 봤는데 아니 글쎄 뒷 배경 UITabBar에 iOS 18 버전 시뮬레이터에선 배경 색이 자동으로 있는채로 렌더링되고, 16버전에선 그냥 clear하더라구요.. 이게 과연 os 버전 차이로 인한 게 맞는지 좀 더 검증해보기로 합니다. 제 폰이 13 프로라서 일단 13 시리즈를 기준으로 잡아봤읍니다.좌측은 13 프론데 iOS 16.0을, 우측은 13 미..
[TIL / 25.05.11] RxSwift.. 처음 공부해볼게요 2
·
iOS/Swift
https://subkyu-ios.tistory.com/45 [TIL / 25.05.08] RxSwift.. 처음 공부해볼게요 1RxSwift란?RxSwift는 Swift에서 비동기 이벤트를 선언형으로 처리할 수 있게 해주는 프레임워크.쉽게 말해, 값의 변화와 비동기 흐름을 스트림처럼 다룰 수 있게 해준다. RxSwift Github에선 Reactive Programmisubkyu-ios.tistory.com 이어서 공부한 내용,,RxSwift의 Operator(연산자)Observable은 데이터가 흘러가는 강물이고, 연산자는 그 흐름을 가공하는 정수처리기라고 생각하면 됨여기서 데이터는 언제 들어올지 모르는 데이터(비동기)고, 그렇다 보니 개수도 얼마나 될지 모르면서 이들을 우리는 매번 그대로 가져다 써..
[TIL / 25.05.08] RxSwift.. 처음 공부해볼게요 1
·
iOS/Swift
RxSwift란?RxSwift는 Swift에서 비동기 이벤트를 선언형으로 처리할 수 있게 해주는 프레임워크.쉽게 말해, 값의 변화와 비동기 흐름을 스트림처럼 다룰 수 있게 해준다. RxSwift Github에선 Reactive Programming in Swift라고 나와 있는데,, 그게 뭐신디요; 반응형 프로그래밍 (Reactive Programming) 반응형 프로그래밍이란, 데이터의 흐름 및 변경사항을 전파하는 데 중점을 둔 프로그래밍 패러다임.이 패러다임을 사용할 경우, 주변 환경 / 데이터에 변화가 생길 때 연결된 실행 모델들이 이 이벤트를 받아 동작하도록 설계하는 방식 a = 10, b = 20이고, c = a + b일 때 c는 30이 될테고 그 뒤에 a를 20을 하던 100000을 하던 c..
[WIL / 25.05.06] 8~9주차 회고 및 To-do
·
iOS/Swift
🦖 Keep일정 고려해 개발 일정을 꼼꼼히 수립했다리베이스 방식을 잘 활용하여 깃 충돌 문제가 없었다업무 분담이 잘 이루어졌다개인 일정 공유가 잘되었다서로 도우면서 하는 모습이 좋았다.🐬 Problem여전히 알고리즘에 소홀했다개발 일정을 잘 못지켰다(….)기획이 조금 꼼꼼하지 못했다 (모델, CoreData 설계, 에러 처리)과제 요구사항을 정확히 인지하지 못하고 개발을 시작했다🦜 Try알고리즘에 신경쓰기과제 요구사항을 자세하게 분석하여 디테일하게 기획하고 개발 시작하기 주제 선정 시, 지도라는 기능이 눈에 들어와 도전해보고 싶어 도전했다. 공식 sdk 문서에서 찾기 어려운 부분이 조금 있었는데 일정 로직과 구현법에 대해선 AI를 활용해 쓰면서 학습했다. 이 과정 속에서 데이터 처리 능력이 아직 부..