Github의 Swift Style Guide 번역
예전에 NYTimes의 Objective-C 스타일 가이드를 번역하였는데, 이번에는 Github의 Swift 스타일 가이드를 번역하였습니다. 이전 번역에 비하면 좀 더 나아지긴 했지만, Swift 스타일 가이드를 참고하실 분들은 한 번쯤 보셔도 좋을...
예전에 NYTimes의 Objective-C 스타일 가이드를 번역하였는데, 이번에는 Github의 Swift 스타일 가이드를 번역하였습니다. 이전 번역에 비하면 좀 더 나아지긴 했지만, Swift 스타일 가이드를 참고하실 분들은 한 번쯤 보셔도 좋을...
이상한 모임을 접하게 된 시기는 작년 초였습니다. TDD 책을 보고 있던 시기에 트위터에 @happy__engineer님이 TDD 스터디를 한다고 트윗을 올리시길래 탑승을 하였습니다. 그러면서 이상한 모임을 알게 되었습니다. 마침 블로그를...
Binary Tree 이전 글에서 enum을 통해서 error handling을 다루었습니다. 이번에는 enum을 사용하여 binary tree를 작성해보도록 하겠습니다. 이전에서 사용한 Box 클래스를 사용하여 Tree 형태를 구성합니다. final class Box<T> {...
Enumeration Swift에서 Enum을 사용할 때 연관된 값(Associated Values)을 통해서 연관된 다른 타입의 값을 저장할 수 있습니다. 다음은 애플 문서에 작성 예제입니다. enum Barcode { case UPCA(Int, Int, Int,...
NSDataDetector NSDataDetector 클래스는 NSRegularExpression의 서브클래스로 매칭하는 데이터를 찾도록 설계되었습니다. 몇 가지 형태의 데이터들을 탐지하여 해당 형태로 반환해주는데, NSTextCheckingTypeDate는 date, timeZone, duration를 가지고, NSTextCheckingTypeLink는 URL 등을 가집니다. 더 많은...
Crashlytics에서 crash report를 보는데 Missing dSYM 창이 떴습니다. dSYM 파일이 뭐길래 그러지 찾아보니까 dSYM 파일은 앱의 디버그 심볼을 저장하고 있다고 합니다. [링크] Xcode의 메뉴에서 Window - Organizer 에서...
UIGestureRecognizer를 상속받아 사용할 수 있는 7가지 Gesture Recognizer가 있습니다. Tap gesture recognizer Swipe gesture recognizer Pan gesture recognizer Pinch gesture recognizer Rotation gesture recognizer Screen gesture recognizer LongPress...
AutoLayout을 사용하기 위해 NSLayoutConstraint 클래스를 사용하여 Constrait를 만들었습니다. 하지만 사용법도 어렵고 잘 이해되지 않아 항상 골치를 썩이던 녀석이었습니다. 이번 WWDC에서 NSLayoutAnchor라는 클래스를 보여주었습니다. 좀 더 간결하고 명확하게 사용할...
Method Chaining 가끔 코드를 작성하다 보면 같은 대상에 대해 추가 또는 변경, 삭제 등에 대해 여러 번 해야 하는 경우가 있습니다. 아직 다른 언어들을 많이 다루지는 않았지만 javascript는...
강력 순환 참조(Strong Reference Cycle)를 벗어나기 위해 약한 참조(weak reference)와 미소유 참조(unowned reference)를 사용합니다. 이전 Objective-C를 사용할 때는 강력 참조와 약한 참조를 통해서 참조 계수(reference count)를 다루었습니다. 그러나...
때때로 사용자 클래스 또는 구조체에서 Iterator를 구현하여 쓰고 싶을 때가 있습니다. Swift에서는 SequenceType 프로토콜을 이용하여 구현할 수 있는데, SequenceType 프로토콜은 generate 메소드 구현을 필요로 합니다. 또한, generate 메소드는...
iOS 개발하는 중에 믿을 수 없는 값들 중 하나가 UIDevice의 orientation입니다. 화면이 나타나기 전에 UIDevice의 orientation은 정확한 값을 알 수 없습니다. 앱이 Landscape만 가능할 때, viewDidLoad가 호출되는 시점에서...
Swift에서 Singleton 패턴을 사용하는 방법은 대표적으로 3가지 방법이 있습니다. 클래스 상수(Class constant) class SingletonA { static let sharedInstance = SingletonA() init() { println("AAA"); } } Lazy 방법을 통한...
터미널에서 open 명령어를 통해 SourceTree를 실행할 수 있습니다. open -a SourceTree [Repository Path] 또는 .bashrc 또는 .zshrc에 등록하여 사용할 수 있습니다. echo "alias sourcetree='open -a SourceTree'" >> ~/.zshrc...
UIButton의 SubClass로 만들어 객체 생성시 자신에게 addTarget를 추가하여 기본적으로 로그 등의 기록을 남길 수 있습니다. import UIKit class SSPButton: UIButton { convenience init() { self.init(frame: CGRectZero); } required...
목적 Git을 공부한지 얼마되지 않았기 때문에 언제부터 Svn에서 Git으로 넘어가는 시점인지 궁금하여 찾아보았습니다. 형상 관리라는 초점에서 보면 과거의 기술인 Svn에서 Git으로 전환하면서 Svn이 사장되고 있기 때문에 조사해볼 가치가...
IBDesignable과 IBInspectable Xcode6에서 새로운 기능인 IBDesignable과 IBInspectable이 추가되었습니다. 이 기능들은 커스텀 뷰를 만들때 인터페이스 빌더 내에서 라이브로 화면이 어떻게 구성되는지 보여줄 수 있습니다. 이는 커스텀 뷰를 만들기 위해...
사람이 반복적인 작업을 하지 않으려면 자동화를 하면 됩니다. 일일히 빌드하는 것도 귀찮고, 잘못된 코드를 올려서 빌드가 깨질수도 있는데, 판단할 수 있는 방법이 없고, 자동으로 배포하고 싶고,, 등등의 필요성을...
Xcode의 계정 변경 등의 상황에서 Provisioning Profiles을 삭제하여 깔끔하게 정리해야 할 경우가 아주 가끔 있습니다. 다음 경로에서 Provisioning Profiles을 삭제할 수 있습니다. ~/Library/MobileDevice/Provisioning Profiles
Nullability Swift라는 언어가 나옴에 따라 Objective-C도 호환성을 가지기 위해 Nullability을 채택하였습니다. Xcode 6.3 이전 버전에서는 Swift와 Objective-C의 변수 선언시 다른 점은 optional과 non-optional(UIView vs UIView?)이라는 점입니다. 하지만 Objective-C는...
x & -x 얼마전에 리센룽 싱가포르 총리가 Founders Forum에 참석하여 스도쿠 프로그램을 만든 것을 보여주면서 ‘Here’s a question for those reading the source code: if x is an...
순수 함수(Pure Function) 함수는 주어진 입력으로 계산하는 것 이외에 프로그램의 실행에 영향을 미치지 않아야 하며, 이를 부수 효과(side effect)가 없어야 한다고 합니다. 이러한 함수를 순수 함수라고 합니다. 예를...
Auto-Closures Swift 오픈 소스 라이브러리들을 살펴보면 가끔 @autoclosure라는 키워드가 보입니다. Swift에서 closure를 사용할 때는 다음과 같이 함수 형태로 인자를 넘겨주도록 합니다. func f( pred: () -> Bool )...
어제 map을 사용하다가 특정 조건에 일치하는 경우와 일치하지 않는 경우 값을 다르게 해줘야 하는데 이를 코드로 작성하면 다음과 같습니다. self.weekLabels.map { $0.alpha = ($0.tag == weekday ? 1.0...
최근 한 달 전부터 해안가를 따라 30분 정도 자전거 타고 도서관으로 다니고 있습니다. 맥북을 들고 다니기 때문에 디지털 자료실에서 가끔 딴짓하기도 하면서 공부하고 있습니다. 자전거를 타고 책을 빌릴...
어제 Adaptive Layout을 보면서 3.5-inch, 4-inch, 4.7-inch, 5.5-inch를 대응하는 부분을 설명해주는데 Xcode에서 각각의 단말마다의 크기에 따른 화면을 preview로 보여주는 것을 보고 이런 것이 있었구나라고 알았습니다. 딱히 현업분들은 놀랄...