분류 전체보기
-
개념 자문자답Swift 2021. 4. 29. 11:28
안녕하세요. 그린입니다🟢 이번 포스팅에서는 Swift와 iOS 개발을 하며 몇가지 헷갈렸거나 하는 일부 개념들에 대한 자문자답을 해보겠습니다🧑🏻💻 MVC의 단점을 보안하기 위해 나온 아키텍쳐 패턴? (MVVM) - MVC: 모델 뷰 컨트롤러 각각을 분리하여 의존성을 없애려 했는데 뷰와 컨트롤러에서도 소통을 하는 의존성이 생길 수 있어 재사용성이 낮아지는 문제 - MVP: MVC와 동일한 개념으로 C대신 P 프레젠터로 변경된것으로 결국 MVC와 마찬가지로 뷰/프레젠터 사이 의존성 문제가 나타남 - MVVM: 위 2개 아키텍쳐 패턴의 단점을 극복하고자 나와 이벤트 흐름이 뷰 -> 뷰모델 -> 모델로 이뤄져있어 Command패턴과 Data Binding을 통해 의존성을 제거 타입 캐스팅 및 디이니셜라이저는 ..
-
ResultSwift 2021. 4. 28. 20:36
안녕하세요. 그린입니다🟢 이번 포스팅에서는 Result 타입에 대해 알아보겠습니다🧑🏻💻 Result? - 성공 / 실패에 대한 정보를 담는 제네릭 열거형 타입 - 옵셔널과 유사하지만 값이 없지가 않음 (실패 케이스에도 오류에 대한 정보 존재) Result 분석 @frozen public enum Result where Failure : Error { /// A success, storing a `Success` value. case success(Success) /// A failure, storing a `Failure` value. case failure(Failure) //... } - @frozen: Objective-C에서 건너온 Enum에 새로운 케이스가 업데이트 되지 않는것을 보장되는 키워..
-
Closure 심화Swift 2021. 4. 27. 18:11
안녕하세요. 그린입니다🟢 이번 포스팅에서는 클로저의 심화편으로 Completion Handler / Escaping Closure / Auto Closure에 대해 알아보겠습니다. Completion Handler - 어떤 상황에서 일이 끝났을때 진행할 업무를 담당 - 컴플리션 핸들러에 클로저를 적용시켜볼 수 있음 Completion Handler에서의 클로저 축약 과정 1. VC.present(secondVC, animated: true, completion: { () in print(“화면 이동”) }) 2. VC.present(secondVC, animated: true, completion: { print(“화면 이동”) }) 3. VC.present(secondVC, animated: true)..
-
LLDB (9) - FormattingLLDB 2021. 4. 26. 11:47
안녕하세요. 그린입니다🟢 이번 포스팅에서는 LLDB에서 출력되는 설명 즉 Description의 정보 형식을 정의할 수 있는데 이에 대해 알아보겠습니다🧑🏻💻 Frame & Thread - LLDB에선 사용자가 프레임 및 스레드에 대한 설명(description)의 정보 형식을 정의할 수 있음 - 일반적으론 브레이크포인트 되어 중단되면 중단 이유 및 위치 설명에 대해 아래와 같이 두줄로 표시 * thread #1, queue = 'com.apple.main-thread', stop reason = breakpoint 1.1 frame #0: test`main at test.c:5 - 출력되는 형식 설정 (setting set) (lldb) settings set thread-stop-format STRI..
-
LLDB - 명령어 (8)LLDB 2021. 4. 25. 15:41
안녕하세요. 그린입니다🟢 이번 포스팅에서도 LLDB 명령어중 정리하지 못한 명령어에 대해 학습해보겠습니다🧑🏻💻 unalias: 별칭이 주어진것을 제거 (lldb) command unalias “별칭준것” thread step-inst: 명령어의 안으로 들어감 (lldb) si thread step-inst-over: 명령어의 한단계를 진행시킴 (lldb) ni thread until 라인or프레임: 해당 라인 혹은 프레임까지 스레드를 진행 thread list: 현재 스레드 리스트를 출력 --> *는 현재 스레드를 나타냄 thread backtrace: 스레드 역추적 -. 함축어: bt thread return : 해당 프레임에서 스레드 즉시 반환 frame variable: 해당 프레임에 선언된 변수..
-
LLDB - 명령어 (7)LLDB 2021. 4. 23. 15:55
안녕하세요. 그린입니다🟢 이번 포스팅에서는 여태 알아본 LLDB 명령어 외의 명령어를 알아보겠습니다🧑🏻💻 ptv: 뷰의 최상위 테이블뷰 정보 출력 (lldb) ptv pcells: 뷰의 최상위 테이블뷰셀 정보 출력 pinternals: 객체 내부 정보 출력 pkp: 키패스로 값 출력 present/dismiss: 뷰컨을 보여주거나 사라지게함 slowanim / unslowanim: 애니메이션을 느리게 / 정상적으로 해줌 paltrace: 서브뷰의 계층구조 출력 (오토레이아웃이 잘못되어 있으면 Ambiguous Layouts라고 뜨는걸 볼 수 있음) alamborder / alamunborder: 잘못된 오토레이아웃의 보더를 설정해주어 알아보기 쉽게 만듬 : 컬러를 지정해주지 않는다면 디폴트 보더색은 빨..
-
LLDB (6) - 오픈소스 스크립트 (Chisel)LLDB 2021. 4. 22. 12:00
안녕하세요. 그린입니다🟢 이번 포스팅에서는 이전 Derek Selander 오픈소스에 이어 Chisel에 대해 학습해보겠습니다🧑🏻💻 Chisel? - iOS 앱 환경에서 디버깅 시 다양하고 유용한 LLDB 명령어들을 지원하기 위한 오픈소스 라이브러리 - 명령어중 OS X는 지원되지 않고 iOS에서만 지원되는것들도 있음 (뷰에 관한것들) Chisel 설치 brew update (홈브류 버전 업데이트) brew install chisel (홈브류를 통한 chisel 설치) ~/.lldbinit 파일 오픈 command script import /usr/local/opt/chisel/libexec/fbchisellldb.py (내용 추가) Chisel Command - pview: 현재 창에 표시되는 모든 ..
-
해시 - 위장Algorithm 2021. 4. 21. 17:42
아래 문제는 프로그래머스에서 제공하는 코딩테스트 > 해시 > 위장 파트의 문제입니다🧑🏻💻 문제 제시 스파이들은 매일 다른 옷을 조합하여 입어 자신을 위장합니다. 예를 들어 스파이가 가진 옷이 아래와 같고 오늘 스파이가 동그란 안경, 긴 코트, 파란색 티셔츠를 입었다면 다음날은 청바지를 추가로 입거나 동그란 안경 대신 검정 선글라스를 착용하거나 해야 합니다. 종류이름 얼굴 동그란 안경, 검정 선글라스 상의 파란색 티셔츠 하의 청바지 겉옷 긴 코트 스파이가 가진 의상들이 담긴 2차원 배열 clothes가 주어질 때 서로 다른 옷의 조합의 수를 return 하도록 solution 함수를 작성해주세요. 제한사항 clothes의 각 행은 [의상의 이름, 의상의 종류]로 이루어져 있습니다. 스파이가 가진 의상의 ..