프로젝트의 폴더 구조를 파악해주는 도구인 Codeface를 소개해 보고자 합니다. 이와 같은 툴이, 기존에도 있었는지는 모르지만, 유용하게 사용할 수 있을 것 같아 소개하도록 하겠습니다. Codeface 설치 우선 공식 사이트에 들어갑니다. https://codeface.io/ Codeface See the Architecture of any Codebase codeface.io 해당 사이트에 들어가면 하단에, 앱스토어 링크가 있으니 설치 해줍니다. 이 도구는, LSPService라는 오픈소스를 기반으로 제공되는 서비스 입니다. 그렇기 때문에, 먼저 LSPService를 설치 해줍니다. 공식사이트 최하단에 있는 LSPService 링크를 누르면, 설치 방법에 대해 나옵니다. 이동한 링크에서, 각자 프로세..
위의 사진과 같이 UIComponent를 추가하고, Auto Layout을 설정하려고 하는데 하단의 'Add New Constraints'가 활성화 되지 않는 현상을 보이는 경우가 있다. 그럴 땐, 우측 사이드바의 'Show The Size Inspector'를 들어가서 'Layout'항목의 값이 'Autoresizing Mask'로 되어있는지 확인 해준다. 만약 그렇게 되어있다면, 'Inferred'값으로 변경 해준다.
Clean Architecture를 공부하면서 헷갈리는 개념이었던 '의존성 주입 (Dependency Injection)'에 대한 정리를 하려고 합니다. 다만, Clean Architecture에 대한 전 과정을 다루는 글이 아니니 이 점 참고부탁드립니다. 또한 완벽한 글이 아니다보니, 잘못된 내용이 있을 수 있으니 많은 지적 부탁드리겠습니다! :) 의존성(Dependency)이란? 흔히, Clean Architecture의 가장 중요한 원칙을 설명할 때 "각 계층(Layer)은 서로 독립적이어야 하며, 한 계층의 변화가 다른 계층에 영향을 주어서는 안된다!" 라고 설명합니다. 여기서 말하는 '계층이 서로 독립적' 이라는 말은, 각 계층의 결합도를 최소화 하는것을 지향해야한다는 말 입니다. 하지만, iO..
이전에 action이 아닌, outlet관련해서 동일한 Error가 발생한 적이 있어서 이번에 글로 남깁니다. 위 에러는, Xib파일에서 ViewController로 직접 Outlet이나 Action을 연결 할 때 생기는 에러입니다. 발생 원인은 정확하게는 모르겠으나, 해결 방법은 둘 다 동일합니다. 우선 VC내부에 직접 Outlet변수 혹은 Action함수를 정의 해줍니다. 그리고 기존과는 역순으로, 사진의 좌측 Action 연결부에서 Xib파일의 Component로 연결 해주면 정상적으로 연결이 됩니다.
인턴쉽을 진행하며, iOS에서의 비디오 처리기술에 대한 공부를 진행하고 있습니다. 그 중 가장 먼저 알아봐야 할, 코덱에 대해 개인적으로 공부하고 정리한 글입니다. 코덱이란? 코덱은 coder-decoder의 약자이다. 오디오 & 비디오 신호와 같은 디지털 데이터를 특정 형식으로 인코딩 및 디코딩 하는 SW & HW 장치 인코딩. 디코딩 개념 [ 인코딩 ] 인코딩이란 전송 or 저장을 용이하게 하기 위해 정보를 한 형식에서 다른 형식으로 변환하는 process 이다. 변환 하고자하는 data의 종류와, 인코딩의 목적에 따라 다른 방식으로 수행 가능하다. ex1) 라디오 신호와 같은 노이즈가 가득한 소통 채널을 통해 text를 전송하는 과정. 데이터를 전송하는 과정에서 노이즈로 인한 오류를 방지하기 위해 ..
최근, 아키텍처 관련 공부를 진행하면서 Input/Output패턴을 공부해 본 경험이 있습니다..! 이러한 Input/Output 패턴을 사용할 때, 정형화 되고 반복된 코드를 줄이기 위해 ViewModelProtocol를 선언하여 해당 프로토콜을 이용하는 방식을 많이 사용합니다. 보편적으로, 아래와 같이 많이 선언하여 사용합니다 protocol ViewModelType { associatedtype Input associatedtype Output func transform(input: Input) -> Output } (물론, MVVM패턴과 RxSwift를 혼용하여 사용하는 경우가 많아 해당 프로토콜에 disposeBag을 선언하기도 합니다) 이때, Input과 Output 앞에 붙어있는 associ..
@discardableResult 이란? discardable을 그대로 해석하면, 버릴 수 있는(폐기할 수 있는) 이라는 뜻 입니다. 즉, discardableResult를 해석하면 '결과값을 버릴 수 있는' 이라는 의미가 됩니다. 따라서 @discadableResult는 함수의 return값을 버려줄 때 사용하게 됩니다. 👉🏻 Return값이 존재하는 함수의 결과를 사용하지 않을 시 나타나는 warning을 지워주는 역할을 합니다. @discardableResult 예시 @discardableResult를 사용하면, 위와같이 노란색 warning 메세지가 사라지는 것을 볼 수 있습니다.
웹뷰를 단순히 불러오기만 하면, iOS에서 많이 사용하는 스와이프 제스쳐를 통해 뒤로가기 & 앞으로 가기 동작은 사용이 불가능 합니다. 이를 사용하기 위해선, 아래의 코드와 같이 작성해주면 됩니다. extension ViewController: WKNavigationDelegate { override func viewDidLoad(){ //MARK: 델리게이트 선언 webView.navigationDelegate = self view.addSubview(webView) if let url = URL(string:"본인이 패키징 할 도메인"){ let request = URLRequest(url:url) webView.load(request) } //MARK: 스와이프 제스쳐로 뒤로가기&앞으로가기 webV..