iOS 뉴비입니다.

[iOS] Enterprise 규모 앱 환경 구성 – 2

January 3, 2019 Dev

이번 글에서는 기존의 프로젝트에서 Layer들을 어떤 순서로 나눠야 하는지 기술해보려고 합니다. 1. 라이브러리 모듈 일반적으로 프로젝트는 CocoaPods, Carthage 또는 Git Submodule로 외부 라이브러리를 가져다 사용하고, 라이브러리를 사용하는 곳에서...

[iOS] Enterprise 규모 앱 환경 구성 – 1

December 17, 2018 Dev

이전에 개발했을 때는 프로젝트가 크질 않아, 개발자 수도 적고, 프로젝트에 많은 라이브러리들이 포함되어 있었습니다. 또한, 윗 개발자분들한테 그렇게 배우기도 했었고요. 현재 담당하고 있는 프로젝트는 기존에 혼자서 담당하거나 둘...

[Swift4.1] JSONDecoder의 KeyDecodingStrategy

September 20, 2018 Dev

Swift 4.1에서 JSONDecoder에 keyDecodingStrategy 이 추가되었습니다. 이 속성은 JSONDecoder가 어떤 키 전략을 따를지에 따라 Data로부터 Decoding을 가능하도록 해줍니다. KeyDecodingStrategy은 세가지 case가 있는데, useDefaultKeys, convertFromSnakeCase 그리고 custom(@escaping ([CodingKey]) ->...

[iOS] Custom Mock Network Request

September 4, 2018 Dev

Unit Test를 할 때, 네트워크는 어떻게 테스트해야 하나 문제에 봉착합니다. 진짜 네트워크 요청을 해야하는건가 아니면 데이터만 테스트 해야하는가 이렇게 말이죠. 둘 다 테스트를 할 수 있다면 어떨까요? 네트워크...

[iOS] 접근성 정리

September 2, 2018 Dev

비장애인에게는 화면이 보이므로 원하는 정보를 받을 수 있지만, 장애인에게는 정보를 제공하기가 어렵습니다. 이를 VoiceOver Screen을 이용하여 접근성을 제공합니다. iOS 접근성 정리 주로 사용하거나 사용할 것들을 우선 정리하였습니다. Accessibility...

[iOS][Network]Mock 데이터로 서비스 개발하기 – OHHTTPStubs

August 12, 2018 Dev

iOS 개발 중에 가장 번거로운 부분이 있는데 바로 서버와의 통신입니다. 서버에 요청하고 비동기로 응답값을 받아 처리해야하는데, 문제는 서버와 실제 통신을 해야 한다는 점입니다. 클라이언트는 다양한 경우를 만들어 서버에...

[Xcode][LLDB]Debugging With Xcode, LLDB and Chisel

August 5, 2018 Dev

iOS 개발시 LLDB를 이용하여 디버깅을 하지만, 낮은 수준의 명령어들을 지원하기 때문에 조금은 불편한 점이 있습니다. 관련하여 Facebook에서 Chisel이라는 프로젝트를 통해 python을 이용하여 높은 수준의 명령어를 지원합니다. Install 일반적으로...

[Xcode][LLDB]Debugging With Xcode and LLDB

June 17, 2018 Dev

iOS 개발을 좀 더 잘하기 위해, 편하게 버그를 추적하기 위해 LLDB를 이용한 디버깅 방법을 기록합니다. Execution Commands Continue - 정지된 프로그램 실행을 재개함. (lldb) continue (lldb) c Step...

[Mac][VSCode] 터미널에서 VSCode를 실행하기

June 3, 2018 Dev

터미널에서 특정 폴더로 이동 후, VSCode를 실행하고자 할 때 code [Path]로 실행합니다. 만약 code가 없다면 ⇧⌘P를 눌러 Command Palette에서 Shell Command: Install 'code' command in PATH 를 통해...

[Swift4][ReactiveX] 에러 쉽게 다루기

May 6, 2018 Dev

Rx에서 가장 까다로운 녀석이 Error를 다루는 것이 아닌가 생각합니다. 특히나 UI에 연결한 스트림이 Error이 발생하면 스트림이 깨집니다. 처음 Rx를 다룰 때, 이 것을 생각하지 못하고 막 작성하다가 갑자기...

[Swift4] LazySequence

May 3, 2018 Dev

Swift에서 시퀀스를 다룰 때, lazy를 어떻게 써야하는지 몰라 사용을 거의 안했습니다. 하지만 적절한 곳에서 lazy를 사용한다면 연산을 덜 하면서 원하는 결과를 얻을 수 있습니다. LazySequence lazy는 다음과 같이...

[Swift4] KeyPath Observe 사용하기

April 18, 2018 Dev

KeyPath를 이용한 Get Set Swift에서는 KeyPath를 String 형태가 아닌 KeyPath 클래스를 이용하여 정적으로 접근할 수 있습니다. struct A { var b: Int = 0 } 다음과 같은 구조체...

[Git]현재 Branch의 변경사항 파악하기 – merge-base

April 10, 2018 Dev

이번에 Pull Request를 올리면서 Gitlab Trigger를 통해 Lint를 돌리는 스크립트를 만들었습니다. 현재 Lint를 돌렸을 때, 변경사항들이 너무 많아 한번에 일괄 수정하는 것은 무리가 있는 것으로 판단하여 현재 Branch의...

[Swift4]Codable, 현실의 Codable 그리고 Extension

October 12, 2017 Code

Codable Swift4에서 Codable이라는 프로토콜이 추가되면서 JSON 처리를 손쉽게 해줍니다. { "a": "aa", "b": "bb" } 위와 같이 정의된 데이터인 경우, 다음과 같이 타입을 정의할 수 있습니다. struct Sample1:...

[Swift]Name Mangling

July 23, 2017 Code

Name Mangling은 단어 그대로 이름을 조각조각냄으로써 고유한 이름을 가짐 여부 문제를 해결합니다. 컴파일러로부터 만들어진 코드는 링커를 통해 다른 부분과 연결되는데, 링커는 각 프로그램 개체의 많은 정보가 필요합니다. 이는...