iOS 뉴비입니다.

[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 하나에 모두 넣기엔 너무 방대해져서, 어떤...

[번역]Swift API Design Guidelines

July 17, 2016 Code

Swift를 좀 더 Swifty하게 작성할 수 있도록 API Design Guideline을 번역하였습니다. 공식 문서는 여기에서 보실 수 있고, 번역본은 여기에서 보실 수 있습니다. 번역에서 오탈자나 어색한 문장이 있다면 여기로...

[iOS]ScrollView의 Bounce를 아래에서만 동작하기

July 1, 2016 Code

얼마전에 개발을 하다 아래에만 바운스 기능이 동작하도록 요구사항을 전달받아서 간단하게 처리해보았습니다. ScrollView의 contentOffset의 y값이 0보다 큰 경우에 bounces를 활성화시켜 아래에서만 바운스가 동작하도록 만들었습니다. func scrollViewDidScroll(scrollView: UIScrollView) { scrollView.bounces...

[ReactiveX][RxSwift]Unit Test 2 – Subject

June 8, 2016 Code

이전에 다루었던 Subject를 유닛 테스트하려고 합니다. Subject는 Observer와 Observable 두 역할을 수행할 수 있습니다. Subejct는 Observer 역할로서 하나 이상의 Observable을 구독하며, Observable 역할로 아이템을 내보낼 수 있습니다. 다음...

[ReactiveX][RxSwift]핫 옵저버블과 콜드 옵저버블

May 31, 2016 Code

다음은 ReactiveX에서 정의한 Hot and Cold Observables과 RxSwift에서 특정을 정리한 글을 번역한 자료입니다. 핫 옵저버블과 콜드 옵저버블 핫 옵저버블은 만들어지는 즉시 아이템을 발행하기 시작합니다. 그리고 Observable을 구독하는 Observer는...

[ReactiveX][RxSwift]Delegate 패턴을 Rx로 바꾸기

May 24, 2016 Code

이 글은 이해가 낮은 상태에서 참고용으로 작성하였습니다. 잘못된 내용이 있을 수 있습니다.   RxCocoa를 사용하다보면, Delegate로 사용해야 할 메소드가 확장되어 사용되는 것을 볼 수 있습니다. 예를 들면, UITableView의...

[Shell][Python][ImageMagick]하얀색을 투명으로 바꾸기

May 10, 2016 Code

이미지를 전달받았을 때, 배경색이 투명으로 바꿔야할 경우가 있습니다. 여러가지 방법이 있지만, 그 중 두 가지 방법을 쓰려고 합니다. 첫번째는 ImageMagick을 이용한 방법입니다. convert input.png -fuzz 10% -transparent white...

[ReactiveX][RxSwift]flatMap, flatMapFirst, flatMapLatest

May 7, 2016 Code

flatMap Rx에서 Observable에서 발행한 아이템을 다른 Observable로 만들며, 만들어진 Observable에서 아이템을 발행합니다. RxSwift에서 제공하는 예제를 살펴보면 좀 더 쉽게 이해할 수 있습니다. let sequenceInt = Observable.of(1, 2, 3)...