iOS 뉴비입니다.

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

[Swift3][RxSwift]UITableViewCell에서 Rx 사용하기

January 19, 2017 Code

UITableViewCell에서도 간혹 Rx 방식으로 코드를 작성해야 하는 경우가 종종 있습니다. 하지만 UITableViewCell은 항상 재사용을 하기 때문에 어떻게 사용해야 할지 살짝 난감하기도 합니다. 따라서 재사용하는 특성을 이용하여 DisposeBag을 새로...

[Swift]컴파일 시간을 아주 많이 줄이기

January 15, 2017 Dev

Swift를 현업에서 사용하다보면, 고통 받는 시간이 있습니다. 컴파일 시간입니다. Objective-C는 1~2분이면 빌드가 끝나고 시뮬레이터에서 동작하거나 ipa 파일을 뱉어 냅니다. 하지만 제가 진행하고 있는 프로젝트의 초기에는 8분, 그리고 현재...

[iOS][Trick]UILabel에 margin 주기 – UIButton을 이용하기

January 9, 2017 Dev

개발하다 보면 UILabel에 margin을 필요로 하는 상황이 생깁니다. 하지만 UILabel은 text에 따라 크기가 늘어나거나 줄어들고, margin을 줄 수 있는 방법이 없습니다. 그렇다고 상속 받기도 애매합니다. xib 또는 Storyboard에서...

[Swift3]Phantom Type

December 30, 2016 Code

Phantom type(팬텀 타입) Phantom Type은 저장 공간을 가지고 있지 않은 숨겨진 제네릭 매개 변수가 포함된 매개 변수화된 데이터로, 이 용어는 하스켈에서 확인할 수 있습니다. Swift에서는 Phantom Type을 어떻게...

[Swift3]The Swift Array Design 요약

October 16, 2016 Code

다음은 Swift의 The Swift Array Design를 요약 정리하였습니다. 목표 Swift에서 Array는 다음 목표를 가집니다. C 배열과 같은 성능 Cocoa에 NSArray로 전달시 O(1)이어야 하며, 별도의 메모리 할당이 없어야 함....

[Swift3]향상된 연산자 선언 – precedencegroup

October 13, 2016 Code

Xcode 8로 Swift 자료를 만들다가 연산자 선언 관련해 기존 방법을 사용하지 말고 precedence group을 사용하여 선언하라고 경고 메시지를 보고 Swift 3 제안서를 살펴보았습니다. 그리고 연산자 우선순위 관련한 제안서...

[iOS][Swift 2.2]UIViewController에서 UITableView를 분리하여 가볍게 만들기

September 21, 2016 Code

들어가기 전 일반적으로 iOS는 MVC 패턴을 사용하기 때문에 UIViewController가 UITableView를 가지며, UIViewController는 UITableView의 프로토콜인 UITableViewDelegate, UITableViewDataSource를 따릅니다. UITableView 프로토콜을 UIViewController가 따르면 코드의 양이 엄청 불어나기 때문에 가독성이 떨어지게...

ABI – Application Binary Interface

August 16, 2016 Code

Swift 4를 시작했음을 보고 관련된 내용을 살펴보는데 ABI라는 처음보는 단어가 나와 찾아보았습니다. ABI는 Application Binary Interface(응용 프로그램 이진 인터페이스)의 줄임말로 응용 프로그램과 운영체제 또는 응용 프로그램과 라이브러리, 응용프로그램의...

[Swift]@IBOutlet의 Forced Unwrapping Optional(!) vs Optional(?)

August 11, 2016 Code

얼마 전 개발 진행하면서 코드로 UI를 개발하던 부분들을 Storyboard로 이전하다가 예상치 못한 부분이 있었습니다. 바로 @IBOutlet 입니다. 아이폰, 아이패드에 대응하여 개발하다가 Storyboard 하나에 모두 넣기엔 너무 방대해져서, 어떤...