본문 바로가기

분류 전체보기

(13)
[iOS] XCTest를 활용한 UnitTest 오늘 첫 직장에서 첫 퇴사를 경험했다모두가 아쉬워하고 동시에 응원해주는 걸 보면서 3개월간 열심히 했구나 싶어 뿌듯하고 감사했다내일 당장 또 면접이 있어서 출근 시간보다 일찍 기상해야 하지만,, ㅠㅠ.. 개인 여담이었고,,오늘은 Unit Test 이야기를 정리하고자 한다 Unit TestUnit Test는 개발 단계에서 의도에 맞게 메서드가 기능하는지 검증하는 테스트로주로 XCode IDE에서 XCTest 프레임워크를 사용하여 구현된다 특징: 독립성, 외부 상태 의존 X, 다른 테스트 영향 X 유닛 테스트에는 FIRST 라는 기본 원칙이 존재한다 기본 원칙 FIRSTFast: 빠른 속도로 테스트를 수행할 수 있어야 한다 Independent/Isolated: 테스트들은 서로 독립적으로 실행될 수 있어야 ..
[UIKit] UIKit 기본개념 최근 진행한 과제 전형 때 새롭게 배운 내용들을 정리하려고 한다 UIKit은 여전히 생소하지만 시장을 들여다보니 iOS 개발자로서 안 배울 수 없는 영역이라 느껴 열심히 해보려고 하고 있다,, 주로 UIKit이라고 하면 Auto Layout, Constraints와 같은 키워드가 같이 떠오른다그러고 뷰 그리는 것을 타고타고 올라가면 Frame 과 Bound 라는 개념이 등장하고 CGRect도 있고,, 원래는 SnapKit 라이브러리 사용법을 작성하려다가 기초부터 보자 싶어서 UIKit 기초를 간단히 짚고 넘어가야겠다,, UIKit (User Interface Kit) UIKit은 iOS 어플리케이션에서 사용자 인터페이스(UI)를 구현하고 사용자 이벤트를 관리하는 프레임워크이다 선언형 UI가 데이터 상태에..
[iOS] RxSwift와 Combine 2019년 Apple 에서 발표한 built-in 방식의 combine과third-party로 기존 UIKit에서 잘 사용된 RxSwift를 알아보려 한다 그 전에combine과 RxSwift 자체 목적은 무엇일까?둘 다 Reactive Programming (반응형 프로그래밍) 프레임워크이기에 해당 정의부터 살펴봐야겠다,, Reactive Programming데이터의 흐름과 변경사항의 전파에 중점을 둔 선언적 프로그래밍 패러다임(by 영어 위키백과) 즉, 시간에 따른 데이터의 변화를 고려한 패러다임으로시간과 상태 변화에 반응하는 어플리케이션을 관리하도록 한다 예를 들어, 서버에서 데이터를 받아온 후 UI 업데이트, 오류 처리 등 여러 작업을 한 번의 스트림으로 연결시켜 코드의 복잡성을 크게 줄인다  R..
[iOS] 클린 아키텍처 Clean Architecture!정말 많이 들었고.. 완전하게 이해하진 않아도 조금씩 적용해 봤던 거였는데,최근 과제전형을 진행하면서 제대로 적용하려고 공부했고 이를 잊지 않으려고 정리한다 로버트 C. 마틴  책에 따르면, 소프트웨어에는집단 외부의 행위(Behavior)적 가치와 집단 내부의 구조(Structure)적 가치가 존재한다고 한다 행위적 (Behavior) 가치집단 내 여러 이해 관계자의 기능 명세서나 요구사항 문서를 실제 프로덕트로 구현하는 Programmer의 가치구조적 (Structure) 가치Software 단어에서 Soft라는 본연의 목적에 맞춰 기존 행위를 쉽게 변경할 수 있어야 한다는 Developer의 가치 클린 아키텍처는 구조적 가치에 해당하는 개념으로 객체지향 5대 원칙인 ..
[iOS] View 계층구조 앱 생명주기와 AppDelegate SceneDelegate에 이어서 뷰 계층구조를 공부하고자 한다 window, scene, view 용어가 익숙하지만 스스로 설명하기 어렵다는 점을 인지하면서공부의 필요성을 느꼈다 ㅠㅠ용어 개념을 먼저 보고 계층구조도 자연스럽게 익혀보자,, 총총 용어정리각 용어의 개념은 다음과 같다viewiOS에서 UI를 구성하는 기본 단위는 view 이고, view들은 계층적으로 구성될 수 있다view는 콘텐츠를 담아 스크린에 표시하고 사용자의 입력에 반응하는 객체이다view는 UIView 클래스를 상속한 클래스로 구현된다 windowwindow는 스크린을 채우기 위한 객체로 항상 유저 인터페이스 표현 계층의 최상위에 위치한다view의 일종이지만 직접 컨텐츠를 가지고 있지 않고 대신..
[iOS] AppDelegate와 SceneDelegate AppDelegate는 데이터 구조 초기화, 알림 설정SceneDelegate는 UI와 관련된 상태 변화 정도로만 인지하고 있었는데 이번 기회에 새롭게 배웠다,,  이 둘의 기능은 iOS 13 이전과 이후 많은 변화가 일어났고,그림으로 간단히 알아보자면 다음과 같다 iOS 13 이전AppDelegate 내에서 App Lifecyle과 UI Lifecycle 둘 다 진행하나의 App에 하나의 window 그렇다면.. window는 뭐지..?windowView 계층 구조의 최상위 객체 0.0View 계층 구조도 공부해봐야겠다,,  iOS 13 이후App Delegate는 Session Lifecycle을 Scene Delegate은 UI Lifecycle을 담당하는 구조scene이 추가되면서 하나의 앱이 여..
[iOS] 앱 생명주기(App Life Cycle) 처음 iOS 시작했을 때 부터 면접 기본 질문이자 기초 개념이라고 들어왔는데 계속 두루뭉실하게 알고 있어서 정리하려고 한다.최대한 간단하게,, 머리속에 남은 지식으로만 작성 시작! 앱 생명주기 Life Cycle 단어 그대로 앱의 처음 시작부터 끝날 때까지의 상태를 나타낸다. Not Running > Inactive > Active > Background > Suspended 한국어로 다시 이야기 하면, 실행되지 않았을 때 > 비활성 상태 > 활성 상태 > 백그라운드 실행 > 멈춤 상태  끄읏 0.0  ... 조금 더 들어가자면, 각 상태에 따라 앱이 할 수 있는 일은 다음과 같다.  Not Running앱이 실행되지 않았거나, 시스템에 의해서 종료된 상태앱이 메모리에 존재하지 않기에 어떠한 작업도 수행..
[Technology] SiriKit 음성, 지능 추천, 개인화된 워크플로우를 통해 유저가 그들의 기기와 상호작용할 수 있도록 권한 부여 Overview 시스템에서 제공하는 기본 intenets를 사용할 수 있다. 혹은, intents를 커스터마이징하여 특별한 기능을 수행할 수도 있다. => Adding User Interactivity with Siri Shortcuts and the Shortcuts App intents를 앱에서 직접적으로 프로세싱하거나 Intents 앱 확장을 사용할 수 있다. => Structuring Your Code to Support App Extensions 브랜딩이나 사용자의 요구를 충족한 이후의 Siri와 Maps에서 커스터마이징한 내용들을 보이기 위해서 IntentsUI 앱 확장을 통해 커스텀 뷰 컨트롤..