분류 전체보기
-
LLDB - 개념 및 소개LLDB 2021. 4. 16. 17:09
안녕하세요. 그린입니다🟢 오늘부터 LLDB를 부셔보겠습니다!! 이번 포스팅은 LLDB란 간략히 무엇인지 왜 사용하는것인지? 개념 및 소개를 하겠습니다🧑🏻💻 LLDB? - Low-Level Debugger라는 뜻으로 LLVM의 디버거 컴포넌트를 개발하는 애플의 서브 프로젝트 - 로우레벨 컨트롤 가능한 모듈로 이뤄져있으며 기계어에 가까운 영역까지 디버깅 가능 (C/C++/Object-C/Swift 지원) - Xcode의 기본 디버거로 내장 - 차세대 고성능 디버거!? - Clang식 파서 및 LLVM 디스어셈블러와 같은 LLVM 프로젝트의 기본 라이브러리를 활용한 재사용 가능한 컴포넌트 집합으로 빌드됨 - 실제 프로그램이 어떻게 동작하는지 이해가 쉬워짐 - LLVM의 프론트엔드에 대응하는 디버거로 간결하고..
-
RxSwiftRxSwift 2021. 4. 15. 16:07
안녕하세요. 그린입니다🟢 이번 포스팅에서는 RxSwift에 대해 기초적인 부분을 학습해보겠습니다🧑🏻💻 우선 이전 포스팅인 SwiftUI에 이어 RxSwift를 학습하기전 왜 이런것에 대해 배워야하는지 뭐가 중요한지 간략히 알아보겠습니다. 그러기 위해서는 우선 MVVM에 대해 알 필요가 있습니다. MVC / MVP / MVVM 1. MVC - 컨트롤러에서 사용자의 이벤트를 받고 모델에 데이터를 요청 및 변형하여 뷰에 업데이트 해주는 아키텍쳐 패턴 - 각각을 분리하여 의존성을 없애려했는데 뷰와 컨트롤러에서도 소통을 하기에 의존성이 생길 수 있어 재사용성이 낮아짐 2. MVP - MVC와 동일한 개념으로 C대신 P가 들어간것으로 프레젠터로 변경 - 뷰와 프레젠터의 의존성 문제가 결국 나타남 3. MVVM -..
-
SwiftUISwiftUI 2021. 4. 14. 22:55
안녕하세요. 그린입니다🟢 오늘의 포스팅은 SwiftUI에 대해 학습해보겠습니다🧑🏻💻 SwiftUI? - 스위프트 언어로 모든 플랫폼에서 앱에 대한 UI와 동작을 선언해주는 프레임워크 - 접근성 및 지역화 등 다양한 기능을 자동으로 지원해줌 (다크모드, 유동적 글자 크기 조정 등) - UIKit, AppKit, WatchKit 프레임워크 객체와 통합해 플랫폼 별 더 많은 기능을 활용할 수 있음 - 캔버스와 코드가 동기화되어 MVVM 아키텍쳐 패턴에 적합 - Xcode12, iOS13 이상부터 지원 가능 - 뷰 프로토콜을 채택하고 바디를 구현해주어 뷰를 사용하게함 - 공간의 개념으로 뷰를 만들면 중앙부터 차지하게됨 (상대적이 아님) SwiftUI 장점? - 한번의 개발로 모든 플랫폼에서 동작이 가능한 앱 ..
-
Early ExitSwift 2021. 4. 13. 10:55
안녕하세요. 그린입니다🟢 저번 포스팅인 옵셔널 체이닝에 이어 관련된 Early Exit, 빠른종료에 대해 학습해보겠습니다🧑🏻💻 옵셔널 체이닝과 옵셔널 바인딩은 이해가 된 상태에서 빠른 종료의 키워드인 guard에 대해 알아보고 if와는 어떤 옵셔널 바인딩에서 차이가 있을지에 대해 배워보겠습니다🙌 Early Exit : 빠른종료로 if문에서는 else 구문이 없어도 되며 만약 else 구문이 있을때는 if와 else 구문 모두 구현을 해주며 분기를 해줍니다. 그러나 guard 구문은 꼭 else 구문이 있어야 됩니다. else 구문에서는 무조건 상위의 코드블럭을 종료시키는 제어문 전환 명령 혹은 그 구문을 탈출시킬 수 있는 비반환 함수 / 메서드 호출이 있어야 합니다. 제어문 전환 명령어 : return..
-
Optional ChainingSwift 2021. 4. 12. 19:33
안녕하세요. 그린입니다🟢 이번 포스팅에서는 Optional Chaining 옵셔널 체이닝에 대해 학습해보겠습니다. 옵셔널 체이닝 (Optional Chaining) : 옵셔널 체이닝이란 옵셔널을 여러번 체인 처럼 사용하는 기술 -> 옵셔널 체이닝을 된 부분에서 값이 하나라도 nil이면 nil을 반환 옵셔널 체이닝의 사용 import Foundation class Camper { var nickName: String var description: Description? init(nickName: String) { self.nickName = nickName } } struct Description { var gender: Gender? var age: Int } class Gender { var gende..
-
GCD & OperationSwift 2021. 4. 9. 15:02
안녕하세요. 그린입니다🟢 이번 포스팅에서는 일전에 다룬바 있는 동시성 프로그래밍에서 GCD & Operation에 학습해보겠습니다. 이전보다 전체적인 개념에 대한 학습은 같지만 조금 더 심화된 내용이라고 보면 될것 같습니다☺️ 우선 동시성 프로그래밍에서 중요한 비동기에 대해 조금 짚고 넘어가보겠습니다. 동시성 프로그래밍을 할때 가장 중요한 부분이 각 스레드별로 비동기적으로 일을 처리하게 해주는 부분입니다. 그래서 각 일을 기다렸다 하지 않고 동시에 처리하도록 만들어줍니다. 왜 작업을 비동기로 처리해야될까? : 비동기로 처리를 해주는 경우는 굉장히 많습니다. 예를들어 네트워크 작업들은 디폴트가 비동기입니다. 흔히 보는 테이블 및 컬렉션뷰에서 이미지를 서버에서 받아 뿌려주는 인스타그램들의 경우도 만약 비동기..
-
iTerm2 설치 및 사용MacOS 2021. 4. 5. 14:18
안녕하세요. 그린입니다🟢 이번 포스팅에서는 iTerm2를 설치 및 커스터마이징하여 사용 적용해보겠습니다🧑🏻💻 예전부터 MacOS에서 기본 터미널을 사용하고 있었는데 다른 분들중에 iTerms2를 사용하여 조금 더 편리하고 사실 예쁜 터미널?로 사용하는걸 보고 언젠가 해봐야지 하고 있던 부분이었습니다..! 이번 기회에 차근차근 설치부터 적용까지 해봤습니다☺️ iTerm2? : iTerm2이 우선 무엇인지 개념적으로 알아야겠죠? 공식 사이트에서는 아래와 같이 기술되어 있습니다. "iTerm2는 무엇입니까? iTerm2는 Terminal을 대체하며 iTerm의 후속 제품입니다. macOS 10.14 이상이 설치된 Mac에서 작동합니다. iTerm2는 당신이 항상 원했던 것을 전혀 몰랐던 기능들로 터미널을 현..
-
Core AnimationiOS 2021. 4. 1. 18:44
안녕하세요. 그린입니다🟢 이번 포스팅에서는 저번 Core Graphics에 이어 Core Animation에 대해 학습하겠습니다🧑🏻💻 Core Animation? : 시각적 요소에 대해 그래픽 랜더링 및 구성을 통해 애니메이션을 만드는 프레임워크 : 시작 및 끝 포인트의 매개변수를 구성하고 애니메이션을 구현하면 Task가 자동으로 일을 수행함! : 드로잉 작업을 그래픽 하드웨어로 전달하여 레이어 객체가 조작할 수 있도록 렌더링 작업을 가속화해 앱 속도 및 품질의 다운없이 높은 프레임과 자연스러운 애니메이션을 보여줍니다👏 -> UIKit와 AppKit와 밀접한 관계!! : 드로잉 시스템 자체가 아닌 앱의 콘텐츠를 Layer를 가지고 관리한다는 점에서 코어 그래픽스와의 차이🌟 : 코어 애니메이션은 뷰가 아..