Archive
2024
December
- December 16, 2024 » [SwiftTesting] Swift Testing 분석 (1) - Expand Macro(Test)
October
- October 31, 2024 » [Tuist 4.x] Cache
September
- September 30, 2024 » [Swift][Tuist] 파일 경로 간의 상대 경로 계산하기
August
- August 18, 2024 » [Swift] Private Extension과 Helper 타입
June
- June 15, 2024 » [Swift 5.9+] Generic과 Noncopyable을 활용하여 보다 안전한 상태머신을 만들기
- June 7, 2024 » [Swift 5.10] Nested Protocol With RIBs
May
- May 19, 2024 » [ADR][가상] 아키텍처 의사 결정 기록: Package 접근제어자 사용
- May 11, 2024 » [iOS] WKWebView을 이용한 iOS 앱과 웹페이지 간의 통신 (3) - Plugin을 이용하여 기능 확장하기
- May 8, 2024 » [iOS] WKWebView을 이용한 iOS 앱과 웹페이지 간의 통신 (2) - Control Flow
- May 7, 2024 » [iOS] WKWebView을 이용한 iOS 앱과 웹페이지 간의 통신 (1) - WKWebView과 Javasciprt Bridge
- May 3, 2024 » [Swift] 타입 시스템을 활용하여 보다 안전하게 데이터 유효성 검증하기
April
- April 28, 2024 » [Swift] Defer를 이용하여 Closure 실행 보장하기
- April 14, 2024 » [ADR][가상] 아키텍처 의사 결정 기록: Package 접근제어자 사용
March
- March 13, 2024 » [ADR][가상] 아키텍처 의사 결정 기록: Swift Macro 사용시 Prebuild된 SwiftSyntax.xcframework 사용 결정
- March 12, 2024 » [Swift][Xcode 15] 통합 로깅 시스템(Unified Logging System)과 Macro
February
- February 7, 2024 » [Swift 5.9+][Xcode 15][SE-0386] 새로운 Access Modifier인 Package를 Xcode Project에서 사용하기
- February 5, 2024 » [ADR][가상] 아키텍처 의사 결정 기록: 수많은 모듈의 Unit Test의 Host Application을 None으로 설정 결정
January
- January 29, 2024 » [ADR][가상] 아키텍처 의사 결정 기록: 수많은 데모앱의 Bundle Identifier 관리 결정
- January 10, 2024 » [Swift 5.9][Xcode 15] Swift Package를 사용하지 않고 Swift의 Macros를 사용할 수 있을까? (3) - Prebuild Swift-Syntax
2023
December
- December 24, 2023 » [Swift 5.9][Xcode 15] Swift Package를 사용하지 않고 Swift의 Macros를 사용할 수 있을까? (2) - Prebuild Macro
- December 17, 2023 » [Swift 5.9][Xcode 15] Swift Package를 사용하지 않고 Swift의 Macros를 사용할 수 있을까? (1) - Why
August
- August 6, 2023 » [macOS] Tart를 이용하여 Virtualization Framework 사용해보기
- August 2, 2023 » [SwiftUI] SwiftUI 도입시 주의해야할 사항 SwiftUI 1.0~ (수정중)
July
- July 20, 2023 » [Swift][SwiftUI] RIBs + SwiftUI
- July 7, 2023 » [Swift][SwiftPM] Swift Package의 라이브러리를 Dynamic Framework로 만들기
June
- June 24, 2023 » [Swift 5.9+][Macros][리팩토링] Codable 이전 시대의 Response 코드를 Macros를 이용하여 정리하기
- June 19, 2023 » [Swift 5.9+][Macros] Macros 개발시 디버깅 방법
May
- May 27, 2023 » [iOS][Tuist] 프로젝트 생성/관리 도구 Tuist(10) - System Programming Interfaces (SPI)를 이용하여 모듈 의존성 접근을 제어하기
- May 12, 2023 » [iOS][Xcode 14.3+][UIKit][Accessibility] Preview를 이용해 UIKit 화면의 접근성 요소 확인하기
- May 10, 2023 » [ADR][가상] 아키텍처 의사 결정 기록: 인터페이스 모듈 생성 및 IoC 컨테이너를 통한 의존성 순환 문제 해결
- May 9, 2023 » [ADR][가상] 아키텍처 의사 결정 기록: 서드파티 라이브러리 관리 모듈 생성 결정
- May 8, 2023 » [ADR][가상] 아키텍처 의사 결정 기록: UI 모듈에서 Combine 사용
- May 8, 2023 » [ADR][가상] 아키텍처 의사 결정 기록: 리소스 관리 모듈 생성 및 사용 결정
- May 8, 2023 » [ADR][가상] 아키텍처 의사 결정 기록: FlexLayout 기반 UI 작성 결정
- May 7, 2023 » [ADR][가상] 아키텍처 의사 결정 기록: Feature 모듈에서 UI 모듈 분리 결정
- May 7, 2023 » [ADR][가상] 아키텍처 의사 결정 기록: R.swift를 이용한 리소스 관리 결정
- May 6, 2023 » [ADR][가상] 아키텍처 의사 결정 기록: 코드 품질과 일관성을 위한 SwiftLint 채택
- May 2, 2023 » [ADR][가상] 아키텍처 의사 결정 기록: iOS 애플리케이션 아키텍처 채택하기
- May 1, 2023 » [ADR][가상] 아키텍처 의사 결정 기록: Xcode 프로젝트 생성 도구 선택하기 Tuist vs XcodeGen
April
- April 18, 2023 » [iOS][Xcode] Application에 있는 Storyboard, Xib 등을 리소스 프레임워크로 이전해서 관리하기
- April 10, 2023 » [Swift][Objective-C] 클래스 메서드 load()를 활용하여 반복하는 초기화 작업을 줄이기
March
- March 20, 2023 » [Xcode] Link Framework Automatically - CLANG_MODULES_AUTOLINK
- March 11, 2023 » [iOS][UIKit][SwiftUI] UIKit 기반 CustomView를 Preview에서 확인할 때 sizeThatFits로 설정하여 정확한 크기로 확인하기
February
- February 22, 2023 » [Swift 5.7+][Objective-C] Dependency Injection (4) - class_getName, class_getInstanceVariable, class_getSuperclass를 사용하여 특정 타입 찾기
- February 17, 2023 » [Swift 5.7+][Objective-C] Dependency Injection (3) - objc_getClassList를 사용하여 모든 클래스 목록 얻기
2022
December
- December 25, 2022 » [iOS] FLEX, InjectionIII를 활용하여 View에 동적으로 데이터를 전달하기
- December 11, 2022 » [Swift] 다른 이름의 프로토콜에서 같은 이름의 속성과 함수를 가질때 '@_implements' 속성을 이용하여 해결하기
November
- November 21, 2022 » [iOS][Swift] Sequence를 활용하여 UIView의 특정 superview를 찾기
- November 19, 2022 » [Swift 5.7+][Concurrency] UIViewController의 present, dismiss 함수의 completion을 async 코드로 감싸 사용하기
October
- October 11, 2022 » [Swift] Network API 명세서
August
- August 26, 2022 » [Xcode][Ruby] Xcodeproj Gem을 활용하여 Xcode Test Plans 생성 스크립트 만들기
- August 16, 2022 » [iOS][Tuist] 프로젝트 생성/관리 도구 Tuist(9) - Tuist 버전 고정하고 사용하기 .tuist-version
- August 6, 2022 » [Swift 5.7+] Dependency Injection (2) - 컨테이너 무결성 보장해 보기
July
- July 30, 2022 » [Swift 5.7+] Dependency Injection (1) - PropertyWrapper를 이용한 Service Locator 구현하기
- July 4, 2022 » [Swift 5.9][Concurrency] Delegate 패턴을 async/await로 변환하기
- July 3, 2022 » [Swift 5.7+][Concurrency] AsyncSequence, AsyncIteratorProtocol
June
- June 25, 2022 » [Swift 5.7+][Concurrency] Continuations - Closure를 async 코드로 감싸 사용하기
- June 23, 2022 » [Swift 5.7+][Concurrency] AsyncStream, AsyncThrowingStream 알아보기 - Continuation vs unfolding
- June 22, 2022 » [Swift] Concurrency 링크 모음
- June 22, 2022 » [Swift] VSCode, AppCode 등 개발 방법 모음 (계속 업데이트 예정)
- June 21, 2022 » [Swift 5.7+][Concurrency] Class에서 Task 사용시 weak self를 사용하자
- June 20, 2022 » [Swift 5.7+][Concurrency] Task의 CancelTaskBag 구현하기
- June 5, 2022 » [iOS][Xcode 13.3.1][Tuist 3.3.0] 프로젝트 생성/관리 도구 Tuist(8) - 모듈의 데모앱의 지속가능하게 유지보수되도록 검증하기 with Tuist
- June 4, 2022 » [iOS][Swift] Pure Dependency Injection - 레거시와 신규 모듈
May
- May 25, 2022 » [Swift] Protocol를 준수하는 Extension 코드를 주의하여 작성하기
April
- April 29, 2022 » [iOS][Xcode 13.3.1][Tuist 3.3.0[InjectionIII] 프로젝트 생성/관리 도구 Tuist(7) - DemoApp과 Inject의 Hot Reload를 이용해서 빠른 개발하기
- April 24, 2022 » [Swift 5.4+] SE-0289 ResultBuilder
- April 13, 2022 » [iOS][Tuist 2.7.2] 프로젝트 생성/관리 도구 Tuist(6) - ProcessInfo Environment 기반 프로젝트 생성
- April 4, 2022 » [iOS][Swift] 배포시 사용하지 않는/전달되면 안되는 라이브러리를 컴파일 타임에 검증하기 - canImport, 전처리기, 컴파일러 지시자 활용
March
- March 27, 2022 » [iOS] 준 Clean Architecture With RIBs, ReactorKit 그리고 Tuist를 이용한 프로젝트 모듈화 설계(5) - Repository, Dependency Injection, Service Locator
- March 9, 2022 » [Swift] 순방향 파이프 연산자 - |>
January
- January 5, 2022 » [iOS][SwiftPM][Xcode 13.2.1+] SwiftPM로 RxSwift 사용할 때 RxBlocking, RxTest를 유닛테스트에서 사용하기 - 해결편(SwiftPM)
2021
December
- December 13, 2021 » [iOS][SwiftPM][Xcode 13.0] SwiftPM로 RxSwift 사용할 때 RxBlocking, RxTest를 유닛테스트에서 사용하기 - 절반해결(코드복사)
November
- November 29, 2021 » [iOS][UIKit] UIViewController의 view를 CustomView로 대체하기
- November 24, 2021 » [iOS][Swift][Modular Architecture] Troubleshooting - Static Library를 모듈로 작업 후, Extension으로 코드 확장시 멤버를 찾을 수 없는 문제와 해결방법
October
- October 5, 2021 » [iOS] 준 Clean Architecture With RIBs, ReactorKit 그리고 Tuist를 이용한 프로젝트 모듈화 설계(4) - Presentation, Domain
September
- September 22, 2021 » [iOS] 준 Clean Architecture With RIBs, ReactorKit 그리고 Tuist를 이용한 프로젝트 모듈화 설계(3) - UserInterface
- September 10, 2021 » [iOS] 준 Clean Architecture With RIBs, ReactorKit 그리고 Tuist를 이용한 프로젝트 모듈화 설계(2) - Tuist
- September 1, 2021 » [iOS] 준 Clean Architecture With RIBs, ReactorKit 그리고 Tuist를 이용한 프로젝트 모듈화 설계(1) - 설계편
June
- June 26, 2021 » [iOS][Tuist 1.7.1] 프로젝트 생성/관리 도구 Tuist(5) - Local Swift Package와 Proxy Swift Package
May
- May 18, 2021 » [iOS][Tuist 1.7.1] 프로젝트 생성/관리 도구 Tuist(4) - Plugin
April
- April 25, 2021 » [iOS][Xcode] 서드파티 라이브러리 잘 관리하기 - Static Library와 Dynamic Library의 관점 분리
- April 23, 2021 » [Swift] 간결한 if let 문은 Optional의 map 그리고 Nil-Coalescing(??)으로 대체하기
March
February
- February 27, 2021 » [Swift 5.3] @_exported 속성 정리
- February 16, 2021 » [iOS][Tuist 1.7.1] 프로젝트 생성/관리 도구 Tuist(3) - Extension
- February 14, 2021 » [iOS][Tuist 1.7.1] 프로젝트 생성/관리 도구 Tuist(2) - StaticFramework
- February 10, 2021 » [iOS][Tuist 1.7.1] 프로젝트 생성/관리 도구 Tuist(1) - Start
- February 2, 2021 » [Swift 5.3+] Binary Framework(XCFramework)를 Swift Package로 배포하기(2) - iOS 프로젝트에 사용하기
2020
December
- December 7, 2020 » [Xcode] Xcode Build Configuration Files - XCConfig
October
- October 10, 2020 » [Swift 5.3+] Binary Framework(XCFramework)를 Swift Package로 배포하기(1) - Swift Package 만들기
September
- September 25, 2020 » [Swift][SwiftPM] Swift Package로 리소스 번들링하기
- September 5, 2020 » [SwiftPM][Carthage] 라이브러리 Link 경로를 install_name_tool 을 이용하여 변경하기
August
- August 30, 2020 » [Swift][RIBs] Child Router 변수 할당 및 attachChild 순서
- August 30, 2020 » [Swift][RIBs] RIBs에 Dependency Injection Container를 적용하여 의존성 관계 해결하기
- August 1, 2020 » [Swift5.1+][RIBs] dynamicMemberLookup의 KeyPath를 이용하여 Component의 Dependency 속성을 접근하기
July
- July 25, 2020 » [LLVM] 정적 라이브러리(Static Library), 동적 라이브러리(Shared Library) 만들기
- July 6, 2020 » [iOS][Swift] 모듈간의 관계를 Dependency Injection Container으로 풀어보자
June
- June 16, 2020 » [Swift 5.2][BetterCodable] JSON 데이터를 Decode할 때, 키가 없는 경우 PropertyWrapper를 이용하여 빈 값을 채우기
May
- May 19, 2020 » [Swift 5.2][SwiftPM] Swift Package Manager를 이용하여 패키지를 통합 관리하기 - Proxy Module
- May 8, 2020 » [Swift5][RIBs] Uber의 RIBs 프로젝트에서 얻은 경험 (6) - ViewControllable 확장 및 Wrapper
April
- April 19, 2020 » [Swift5][RIBs] Uber의 RIBs 프로젝트에서 얻은 경험 (5) - Adapter
- April 5, 2020 » [Swift5][RIBs] Uber의 RIBs 프로젝트에서 얻은 경험 (4) - Unit Test 작성하기
- April 2, 2020 » [iOS][RxSwift 5.1] Unit Test 작성시 ReplaySubject의 createUnbounded를 이용하여 모든 이벤트를 저장하고 비교 테스트하기
March
- March 15, 2020 » [SwiftUI] Binding Proxy
- March 15, 2020 » [SwiftUI] Binding 변수 주입하기 - Initialization
- March 3, 2020 » [SwiftUI] Text의 Font Size를 Frame에 Fit하게 맞추기 - minimumScaleFactor
February
- February 25, 2020 » [Swift 5.1] Opaque Type과 Type Erasure
- February 24, 2020 » [SwiftUI] View - padding()
- February 20, 2020 » [Swift][Trick] 값이 옵셔널이 아닌데, guard 또는 if let 문에 사용
- February 13, 2020 » [SwiftUI] 유용한 Extension 및 예제 코드 모음집
- February 8, 2020 » [SwiftUI] View 생성시 @State 속성 값 주입하기
- February 8, 2020 » [SwiftUI] View와 Interactor 간의 통신을 ObservableObject으로 우회하여 통신하기 - Delegate 패턴
- February 8, 2020 » [SwiftUI][iOS] Framework에 있는 Custom Font을 등록하여 사용하기
- February 4, 2020 » [번역][WWDC][Xcode] Binary Frameworks in Swift 살짝 정리 - XCFramework
January
- January 18, 2020 » [SwiftUI] 가독성 측면에서 View를 어떻게 만들어야 할까? - Extension 활용
- January 11, 2020 » [iOS] XcodeProj Gem과 Graphviz를 이용하여 프로젝트의 Framework Dependency Diagram 그리기
2019
December
- December 31, 2019 » [iOS][Swift] Framework에 있는 이미지를 Imageliteral 사용하여 불러오기
- December 29, 2019 » [SwiftUI] GeometryReader 내부에 변수 선언하기
- December 28, 2019 » [iOS][Xcode] Framework Part 3 : Storyboard, Xib, Color, Image를 리소스 프레임워크에서 관리
November
- November 23, 2019 » [iOS][Xcode] Framework Part 2 : 프로젝트, 서브 프로젝트, Dependencies, 그리고 Static, Dynamic Framework
- November 1, 2019 » [iOS][Xcode] Framework Part 1 : Static Framework와 Dynamic Framework
October
September
- September 5, 2019 » [ReactiveX][RxSwift]Single Trait - 장단점
August
- August 28, 2019 » [Swift5][RIBs] Uber의 RIBs 프로젝트에서 얻은 경험 (2) - 강제성
July
- July 22, 2019 » [Swift5][RIBs] Uber의 RIBs 프로젝트에서 얻은 경험 (1) - 프로토콜 지향 프로그래밍
June
- June 15, 2019 » [Xcode11 Beta1] Chisel 동작하지 않는 문제 - 해결
- June 8, 2019 » [Swift5.1] Property Wrapper 사용 - 맛보기
May
April
- April 14, 2019 » [Swift5] Import 사용 방법
- April 11, 2019 » [Xcode][iOS] 프레임워크를 이용하여 한 프레임워크가 리소스를 관리하고, 여러 프레임워크가 리소스 사용하기
March
- March 9, 2019 » [Xcode 10][Carthage] Run Script phases의 Input File List에 xcfilelist를 추가하여 쉽게 라이브러리를 넣기
- March 7, 2019 » [Git] Commit 순서를 섞기
- March 6, 2019 » [iOS] 도메인 별로 파일을 모으기
- March 1, 2019 » [iOS] 스토리보드에서 특정 화면에서만 사용하는 복잡한 뷰를 분리하여 동적으로 붙이기
February
- February 25, 2019 » 2019년 2월 4주 개발 자료 모음집 - Python, iOS, Swift
- February 23, 2019 » [Shell]/dev/null로 출력 버리기
- February 11, 2019 » [iOS]No such module - Modulemap
January
- January 29, 2019 » [Swift][Trick] Protocol에 정의된 함수에 기본값 사용하기
- January 28, 2019 » 2019년 1월 5주 개발 자료 모음집 - iOS
- January 21, 2019 » 2019년 1월 4주 개발 자료 모음집 - iOS, Swift
- January 14, 2019 » 2019년 1월 3주 개발 자료 모음집 - iOS, Swift, UI, UnitTest
- January 3, 2019 » [iOS] Enterprise 규모 앱 환경 구성 - 2
2018
December
- December 17, 2018 » [iOS] Enterprise 규모 앱 환경 구성 - 1
- December 9, 2018 » [iOS] 의존성 주입하기 - 외부 라이브러리, iOS 프레임워크
September
- September 20, 2018 » [Swift4.1] JSONDecoder의 KeyDecodingStrategy
- September 4, 2018 » [iOS] Custom Mock Network Request
- September 2, 2018 » [iOS] 접근성 정리
August
- August 12, 2018 » [iOS][Network]Mock 데이터로 서비스 개발하기 - OHHTTPStubs
- August 5, 2018 » [Xcode][LLDB]Debugging With Xcode, LLDB and Chisel
June
- June 17, 2018 » [Xcode][LLDB]Debugging With Xcode and LLDB
- June 3, 2018 » [Mac][VSCode] 터미널에서 VSCode를 실행하기
May
- May 6, 2018 » [Swift4][ReactiveX] 에러 쉽게 다루기
- May 3, 2018 » [Swift4] LazySequence
April
- April 25, 2018 » [Xcode 9.3] 새로 추가된 Compiler Option - Compilation Mode의 Single File
- April 18, 2018 » [Swift4]KeyPath의 Get Set 그리고 Observe 사용하기
- April 10, 2018 » [Git]현재 Branch의 변경사항 파악하기 - merge-base
March
- March 9, 2018 » [Swift4] Struct를 체이닝 메소드로 값을 계속 변경하기
February
- February 21, 2018 » [Xcode] Release로 실행시 BreakPoint가 동작하지 않는 문제 해결
- February 2, 2018 » [Swift4]옵셔널 비교문 사용시 guard let, if let 대신 if case나 Switch를 사용하자
January
- January 26, 2018 » [Swift4][ReactiveX]RxSwift를 직접 구현해보기 - Sink
- January 24, 2018 » [Swift4][ReactiveX]RxSwift를 직접 구현해보기 - Event, Disposable, Observer, Observable
2017
November
- November 22, 2017 » [Swift4][iOS]권한 획득시 비동기를 동기로 처리하기(DispatchSemaphore)
October
- October 17, 2017 » [Swift4]Protocol Extension, associatedtype, Generic을 이용하여 기능(변수, 함수)을 그룹화하기
- October 12, 2017 » [Swift4]Codable, 현실의 Codable 그리고 Extension
August
- August 30, 2017 » [Swift3]Protocol Extension(2) - Dynamic Dispatch과 Static Dispatch
- August 4, 2017 » [Swift3]Protocol Extension(1) - 클래스 또는 구조체가 Protocol Extension에 같은 이름을 갖는 메소드나 계산 속성을 가질 때 어떻게 될까?
July
- July 23, 2017 » [Swift]Name Mangling
April
- April 27, 2017 » [iOS]UIViewController가 진입시 viewDidAppear에서 한번만 필요한 기능 호출하기
- April 23, 2017 » [Swift3]Protocol, Extension, AssociatedType 다루기
- April 10, 2017 » [RxSwift][Swift3] Closure, Delegate 대신 Observable을 사용해서 응답값을 쉽게 처리하기
February
- February 12, 2017 » [RxSwift][Swift3]POP를 이용하여 더 나은 MVVM 구조 만들기
January
- January 19, 2017 » [Swift3][RxSwift]UITableViewCell에서 Rx 사용하기
- January 15, 2017 » [Swift]컴파일 시간을 아주 많이 줄이기
- January 9, 2017 » [iOS][Trick]UILabel에 margin 주기 - UIButton을 이용하기
2016
December
- December 30, 2016 » [Swift3]Phantom Type
October
- October 16, 2016 » [Swift3]The Swift Array Design 요약
- October 13, 2016 » [Swift3]향상된 연산자 선언 - precedencegroup
September
- September 21, 2016 » [iOS][Swift 2.2]UIViewController에서 UITableView를 분리하여 가볍게 만들기
August
- August 16, 2016 » ABI - Application Binary Interface
- August 11, 2016 » [Swift]@IBOutlet의 Forced Unwrapping Optional(!) vs Optional(?)
July
- July 31, 2016 » [Swift][Objective-C]컴파일러 경고 해결 - Cast from objectivec type to unrelated type swift type always fails
- July 24, 2016 » [iOS]왜 addChildViewController를 사용해야 하는가? - Container View Controller 구현
- July 22, 2016 » [iOS]Google Analytics에서 광고 없이 IDFA를 사용하여 리뷰 통과하기
- July 17, 2016 » [번역]Swift API Design Guidelines
- July 1, 2016 » [iOS]ScrollView의 Bounce를 아래에서만 동작하기
June
- June 8, 2016 » [ReactiveX][RxSwift]Unit Test 2 - Subject
- June 2, 2016 » [ReactiveX][RxSwift]Unit Test 1 - 핫 옵저버블과 콜드 옵저버블
May
- May 31, 2016 » [ReactiveX][RxSwift]핫 옵저버블과 콜드 옵저버블
- May 24, 2016 » [ReactiveX][RxSwift]Delegate 패턴을 Rx로 바꾸기
- May 15, 2016 » [ReactiveX][RxSwift]비동기 작업을 스트림으로 만들기 - 네트워크 예제
- May 13, 2016 » [ReactiveX][RxSwift]Combining Operator - startWith, CombineLatest, Merge, Zip, switchLatest
- May 10, 2016 » [Shell][Python][ImageMagick]하얀색을 투명으로 바꾸기
- May 7, 2016 » [ReactiveX][RxSwift]flatMap, flatMapFirst, flatMapLatest
- May 1, 2016 » [ReactiveX][RxSwift]Scheduler, observeOn, subscribeOn
April
- April 27, 2016 » [iOS]Settings Bundle을 이용하여 라이센스를 설정 내에 표시하기
- April 21, 2016 » [Shell][ImageMagick]홀수 크기의 이미지에 패딩 추가하기
- April 4, 2016 » [iOS][Swift]구글 매터리얼 디자인의 물결 효과 만들기
March
- March 29, 2016 » [Swift]Hashable 프로토콜
- March 24, 2016 » [ReactiveX][RxSwift]Subjects - PublishSubject, ReplaySubject, BehaviorSubject, Variable
- March 20, 2016 » [ReactiveX][RxSwift]Observable과 Driver
- March 3, 2016 » [iOS][Swift]이미지로부터 픽셀 데이터 얻어 새로운 이미지 만들기
February
- February 7, 2016 » [Objective-C][LLVM]Clang diagnostic 경고 무시하기
- February 2, 2016 » [iOS][Swift]NSHTTPCookieStorage를 이용하여 사라진 Cookie 찾기
- February 1, 2016 » [ReactiveX][RxSwift]들어가기 전
January
- January 19, 2016 » [Apple][iTMSTransporter]iTMSTransporter로 인앱 만들기
- January 17, 2016 » [Apple][iTMSTransporter]iTMSTransporter로 인앱 다루기
- January 11, 2016 » [Swift]클래스만 사용 가능한 프로토콜 선언하기
- January 10, 2016 » [Node.js]강제로 특정 페이지 리다이렉션하기
- January 8, 2016 » [iOS][fastlane]Pem과 SSL Certificate Check를 통해 Push 인증서 관리하기
2015
December
- December 23, 2015 » [Shell][Xcode]PlistBuddy를 이용하여 Plist의 CFBundleVersion 다루기
- December 11, 2015 » [iOS][Xcode]fastlane을 이용하여 쉽게 테스트, 빌드, 배포하기
- December 5, 2015 » [번역][Swift]값 타입(Value Types)으로 더 나은 앱 만들기
November
- November 28, 2015 » [잡설]Humans Need Not apply 영상 리뷰
- November 19, 2015 » [Swift]SpriteKit을 이용하여 UIView에 눈 내리는 효과 만들기
- November 17, 2015 » [Objective-C][Swift]한글 풀어쓰기
- November 15, 2015 » [Objective-C]카테고리로 파일 분리시 속성을 외부에 노출시키지 않기
- November 15, 2015 » [Swift]Swift 로그 매크로(?) 만들기
- November 14, 2015 » [번역][Swift]프로토콜지향 프로그래밍
- November 13, 2015 » [Objective-C]Struct에 Objective-C 객체 사용하기
October
- October 30, 2015 » [Objective-C]Generics를 사용하세요.
- October 18, 2015 » [Swift]Switch문 Trick
- October 11, 2015 » [Swift][일일 코드 #28]코딩도장 - Spiral Array
- October 11, 2015 » [Swift]안전하게 배열 조회하기
- October 9, 2015 » [Swift][일일 코드 #27]코딩도장 - Special Sort
- October 8, 2015 » [Swift][일일 코드 #26]코딩도장 - 가장 짧은 지점 구하기
- October 8, 2015 » [Xcode][iOS]App Transport Security
- October 7, 2015 » [Swift][일일 코드 #25]코딩도장 - Duplicate Numbers
- October 6, 2015 » [Swift][iOS]Search API를 사용해보자
September
- September 22, 2015 » [Swift]Error handling in Swift2 - Try/Throw/Catch/ErrorType
- September 19, 2015 » [Swift]런타임시 Mirror를 사용하여 JSON 데이터 만들기
- September 12, 2015 » [Python]파이썬을 이용하여 앱 아이콘을 리사이즈 하기
- September 7, 2015 » [Swift]각각의 클래스로부터 동적 디스크립션 만들기
August
- August 30, 2015 » [Swift][일일 코드 #24]오일러 프로젝트 023
- August 30, 2015 » [Swift]함수 묶기(Binding)
- August 29, 2015 » [Swift] Method Swizzling이란?
- August 27, 2015 » [Swift][일일 코드 #23]오일러 프로젝트 022
- August 23, 2015 » [Swift]Associated Objects로 Delegate에서 Closure로 바꾸기
- August 23, 2015 » [Swift][일일 코드 #22]오일러 프로젝트 021
- August 22, 2015 » [Swift][일일 코드 #21]오일러 프로젝트 020
- August 21, 2015 » [Swift][일일 코드 #20]오일러 프로젝트 019
- August 20, 2015 » [Swift][일일 코드 #19]오일러 프로젝트 018
- August 19, 2015 » [Swift][Algorithm]꼬리 재귀
- August 19, 2015 » [Swift][일일 코드 #18]오일러 프로젝트 017
- August 18, 2015 » [Swift][일일 코드 #17]오일러 프로젝트 016
- August 17, 2015 » [Swift][일일 코드 #16]오일러 프로젝트 015
- August 16, 2015 » [Swift][일일 코드 #15]오일러 프로젝트 014
- August 16, 2015 » [Swift][일일 코드 #14]오일러 프로젝트 013
- August 16, 2015 » [Swift][일일 코드 #13]오일러 프로젝트 012
- August 16, 2015 » [Swift][일일 코드 #12]오일러 프로젝트 011
- August 15, 2015 » [Swift][일일 코드 #9]오일러 프로젝트 008
- August 15, 2015 » [Swift][일일 코드 #8]오일러 프로젝트 007
- August 15, 2015 » [Swift][일일 코드 #11]오일러 프로젝트 010
- August 15, 2015 » [Swift][일일 코드 #10]오일러 프로젝트 009
- August 14, 2015 » [Swift][일일 코드 #7]오일러 프로젝트 006
- August 13, 2015 » [Swift][일일 코드 #6]오일러 프로젝트 005
- August 13, 2015 » [Swift][일일 코드 #5]오일러 프로젝트 004
- August 13, 2015 » [Swift][일일 코드 #4]오일러 프로젝트 003
- August 12, 2015 » [Xcode]뷰 디버깅시 접근성 라벨로 뷰 객체를 빠르게 찾자
- August 6, 2015 » [Objective-C]모든 KeyChain 제거하기
- August 5, 2015 » [Swift]NSDate ↔ String
- August 3, 2015 » [Swift][일일 코드 #3]오일러 프로젝트 002
- August 3, 2015 » [Swift][일일 코드 #2]오일러 프로젝트 001
- August 2, 2015 » [Swift][일일 코드 #1]이동하는 방향 확인하기
July
- July 31, 2015 » [Swift]트위터 커버 효과 만들기
- July 26, 2015 » [Swift]flatMap을 이용하여 유효한 이미지 리스트를 가져오기
- July 25, 2015 » [Xcode]사용하고 있는 플러그인 리스트
- July 25, 2015 » [Swift]UIAlertController에서 UITextField 만들기
- July 19, 2015 » [Xcode]XCPlayground Framework
- July 17, 2015 » [Swift]IBDesignable을 이용하여 UIBezierPath로 +와 - 버튼 만들기
- July 16, 2015 » [Swift]UIWebView에서 Request 제어
- July 13, 2015 » [Swift]로딩 이미지 애니메이션 팝업 쉽게 만들기
- July 12, 2015 » [iOS]iOS8에서 UIAlertView 대신에 UIAlertController를 사용하자!
- July 11, 2015 » Helper Class란 뭘까?
- July 9, 2015 » [Swift]Playground에서 Dimmed를 어떻게 만들까?
- July 9, 2015 » [Swift]Playground에서 CAGradientLayer를 어떻게 적용할까?
- July 8, 2015 » [번역]Github의 Swift Style Guide
- July 4, 2015 » 이상한 모임에 대하여
- July 3, 2015 » [Swift]Enumeration를 이용한 Binary Tree 만들기
- July 1, 2015 » [Swift]Enumeration를 이용한 Error Handling
June
- June 30, 2015 » [Swift]NSDataDetector
- June 24, 2015 » [Xcode]dSYM 파일은 어디 있나요?
- June 15, 2015 » [Swift]UIGestureRecognizer
- June 12, 2015 » [Swift]오토레이아웃을 위한 새로운 클래스 NSLayoutAnchor
- June 7, 2015 » [Swift]Method Chaining
May
- May 31, 2015 » [Swift]weak와 unowned 사용 방법
- May 29, 2015 » [Swift]Iterator 패턴 구현하기
- May 28, 2015 » [iOS]UIDevice의 Orientation을 믿으시나요?
- May 26, 2015 » [Swift]Singleton 패턴 사용 방법 3가지
- May 23, 2015 » [Shell]터미널에서 SourceTree 실행하기
- May 23, 2015 » [Swift]커스텀 UIButton 클릭시 항상 특정 메소드 호출하기
- May 16, 2015 » [Git]언제부터 Svn에서 Git으로 전환되었을까?
- May 15, 2015 » [Swift]인터페이스 빌더에서 실시간 렌더링을 통한 커스텀 뷰 만들기
- May 14, 2015 » Xcode 서버와 CI만들기(0)
- May 13, 2015 » [Xcode]Provisioning Profiles 삭제하기
- May 12, 2015 » [Objective-C]Nullability
- May 10, 2015 » 리센룽 싱가포르 총리의 문제
- May 7, 2015 » 순수 함수(Pure Function)
- May 6, 2015 » [Swift]Autoclosure란?
April
- April 30, 2015 » [Swift]Map 안에서 조건문 써야하나?
- April 24, 2015 » 잡설 - 내가 이상한 것인가?
- April 22, 2015 » [Xcode]Storyboard 또는 Xib 미리보기
- April 20, 2015 » [Swift]커링(Currying)
- April 14, 2015 » [Swift]Set 정리
- April 14, 2015 » [Swift]Insertion Sort
- April 12, 2015 » [Swift]예제로 살펴본 함수형 프로그래밍
- April 8, 2015 » [DesignPattern]데코레이터 패턴(Decorator Pattern)
- April 6, 2015 » [Swift]BubbleSort
- April 4, 2015 » [DesignPattern]커맨드 패턴(Command Pattern)
- April 3, 2015 » 내 블로그.. 이대로 좋은가?
- April 2, 2015 » [Swift]MergeSort
- April 1, 2015 » [Swift]Quick Sort
- April 1, 2015 » [Swift]쉽게 값을 교환하기
March
- March 31, 2015 » [Swift]지연 로딩으로 테이블뷰에 데이터를 반영하기
- March 27, 2015 » [Go]Go 시작하기(초간단)
- March 26, 2015 » [Swift]GCD를 이용한 RaceCodition 만들기
- March 6, 2015 » [Swift]NSUserDefaults 값 초기화하기
- March 3, 2015 » 유럽 여행 끝!
2014
September
- September 27, 2014 » 2014년 마지막 포스팅
- September 25, 2014 » [Swift]Map, Filter, Reduce 그리고 추론
- September 24, 2014 » [swift]?? 중위 연산자
- September 23, 2014 » [Swift]Advanced Operators 정리
- September 21, 2014 » [Swift]Access Control 정리
- September 19, 2014 » [Swift]Generics 정리
- September 18, 2014 » [Swift]Protocols 정리
- September 16, 2014 » [Swift]Extensions 정리
- September 11, 2014 » [Swift]Automatic Reference Counting 정리
- September 9, 2014 » [Tool]SublimeText2 Plugin
- September 9, 2014 » [Node.js]debugging
- September 8, 2014 » [Swift]Optional Chaining 정리
- September 8, 2014 » [Swift]Nested Types 정리
- September 7, 2014 » [Swift]Type Casting 정리
- September 7, 2014 » [Swift]Deinitialization 정리
- September 6, 2014 » [Swift]Initialization 정리
- September 5, 2014 » [Swift]inheritance 정리
- September 4, 2014 » [Swift]Subscripts 정리
- September 3, 2014 » [Swift]Methods 정리
- September 1, 2014 » [Swift]Properties 정리
- September 1, 2014 » [Swift]Class와 Structure 정리
August
- August 31, 2014 » [Swift]Enumerations 정리
- August 30, 2014 » [Swift]Closure 정리
- August 29, 2014 » [Swift]Function 정리
- August 28, 2014 » [Swift]Control Flow 정리
- August 27, 2014 » [Swift]Collection Types 정리
- August 26, 2014 » [Swift]String and Characters 정리
- August 25, 2014 » [Git]일시적으로 파일 변경 무시하기
- August 25, 2014 » [Swift]Basic Operators 정리
- August 24, 2014 » [Swift]The Basic 정리
- August 24, 2014 » [Git]Alias 추가 / 삭제 / 목록 보기
- August 5, 2014 » [iOS]NSLayoutConstraint
- August 3, 2014 » [Programming]Method와 Function의 차이
- August 1, 2014 » [Xcode]스토리보드 안에서 원하는 뷰를 쉽게 선택하기
July
- July 20, 2014 » [Objective-C]Block 객체 사용하기
- July 19, 2014 » [Git]유용한 Git alias
- July 19, 2014 » [Shell]터미널에서 Sublime Text, Sublime Merge 실행하기
- July 8, 2014 » [CoreAnimation]Implicit Animations
June
- June 25, 2014 » [CoreAnimation]CALayer의 AnchorPoint, zPosition
- June 20, 2014 » [CoreAnimation]Layer
- June 18, 2014 » [Objective-C]GCD의 dispatch group과 notify를 사용하여 작업을 위임하기
- June 18, 2014 » [Algorithm]Binary Tree
- June 16, 2014 » [Objective-C]GCD를 이용하여 데이터 동기화
- June 15, 2014 » [Objective-C]NSOperation과 NSOperationQueue를 사용하는 방법 - 설명 및 예제
- June 11, 2014 » [iOS]AFNetworking에서 afnetworking property with 'retain (or strong)' attribute must be of object type 에러 처리하기
May
- May 27, 2014 » [Objective-C]PerformSelector 대신 GCD로 호출하기
- May 26, 2014 » [iOS]OpenGL을 사용하는 라이브러리간 화면 객체 충돌을 처리하는 방법
- May 19, 2014 » [Objective-C]숫자에서 3자리마다 ,를 추가시키기 - NSNumberFormatter
- May 10, 2014 » [번역]NYTime의 iOS팀 Objective-C 스타일 가이드
April
- April 30, 2014 » [Objective-C]nil vs null
- April 29, 2014 » [Objective-C]클래스 확장 - Category, Extension
- April 28, 2014 » [Objective-C]메소드 선언 - Protocol
- April 15, 2014 » [Objective-C]클래스 호출 - @class vs import
- April 15, 2014 » [Objective-C]description - 객체 설명 메소드
- April 7, 2014 » [DesignPattern]팩토리 패턴(Factory Pattern)
March
- March 31, 2014 » [Objective-C]NSDictionary를 이용한 조건문 제거하기
- March 31, 2014 » [iOS]상태바 표시에 대한 설명
- March 31, 2014 » [iOS]Google Analytics 세션 유지
- March 20, 2014 » [번역]GitHub / Managing Remotes / 원격 저장소 이름 변경하기
- March 20, 2014 » [Algorithm]Base64 알고리즘
- March 18, 2014 » [번역]GitHub / Managing Remotes / 원격 저장소 URL 변경하기
- March 14, 2014 » [Xcode]Library 호출 시 사용하는 all_load, force_load
- March 14, 2014 » [번역]GitHub / Managing Remotes / 원격 저장소 추가하기
- March 14, 2014 » [DesignPattern]상태패턴
- March 13, 2014 » [번역]GitHub / Release / 태그로 작업하기
- March 12, 2014 » [DesignPattern]입문 및 전략패턴
- March 11, 2014 » [번역]GitHub / Release / Releases 열거 및 수정하기
- March 11, 2014 » [번역]GitHub / Release / Releases 만들기
- March 9, 2014 » [번역]GitHub / Release / Release에 대하여
- March 8, 2014 » [Regex]자주 사용하는 정규표현식
- March 8, 2014 » [Regex]전방탐색과 후방탐색
- March 4, 2014 » [Regex]역참조 사용하기
- March 1, 2014 » [번역]GitHub / Advanced Git / 민감한 데이터 제거하기
February
- February 26, 2014 » [Tool]gsutil을 사용하여 구글 판매 통계 가져오기
- February 25, 2014 » [번역]GitHub / Advanced Git / Subtree Merge 작업
- February 24, 2014 » [번역]GitHub / Advanced Git / 하위 경로를 새로운 저장소로 분할
- February 23, 2014 » [iOS]View의 Layer 속성 minificationFilter과 magnificationFilter 정리
- February 22, 2014 » [번역]GitHub / Advanced Git / 대화형 Rebase
- February 22, 2014 » [번역]GitHub / Advanced Git / 저자 정보 변경하기
- February 17, 2014 » [Git]Clone으로 받은 저장소에 브랜치로 이동하기
- February 17, 2014 » [Tool]마크다운 파일의 목차를 만들어주는 doctoc
- February 15, 2014 » [Shell]Mac에서 wget 설치하기
- February 15, 2014 » [Git]Tag 추가, 변경 및 삭제하기
- February 10, 2014 » [iOS]Storyboard의 Segue를 이용하여 화면 전환하기
- February 9, 2014 » [번역]GitHub / Gist / Gist안에 Map
- February 9, 2014 » [번역]GitHub / Gist / Gist 복사, 다운로드, 내장하기
- February 9, 2014 » [번역]GitHub / Gist / Gists 만들기
- February 9, 2014 » [번역]GitHub / Gist / 익명의 Gist는 삭제할 수 없습니다
- February 2, 2014 » [CoreData]Objective-C 프로젝트에서 MagicalRecord를 이용하여 Core Data 사용하기
January
- January 31, 2014 » [Xcode]VVDocumenter-Xcode 플러그인 소개
- January 31, 2014 » [번역]GitHub / Commits / 시간으로 커밋 비교
- January 20, 2014 » [번역]GitHub / Commits / 커밋 메시지로 이슈 닫기
- January 15, 2014 » [번역]GitHub / Commits / 커밋 화면간의 차이
- January 12, 2014 » [Shell]Tree Shell 명령어
- January 12, 2014 » [번역]GitHub / Commits / 왜 커밋 순서가 잘못되었나요?
- January 12, 2014 » [번역]GitHub / Commits / GitHub에는 커밋이 있는데 로컬 Clone에는 없어요
- January 12, 2014 » [번역]GitHub / Commits / 커밋 브랜치와 태그 라벨
- January 10, 2014 » [iOS]Key Value Coding, Key Value Observing
- January 7, 2014 » [iOS]왜 landscape로 전환하면 viewDidLoad에서는 회전한 가로 및 세로의 값이 portrait 값으로 주는가?
- January 6, 2014 » [번역]GitHub / Commits / 커밋 메시지를 삭제할 수 있나요?
- January 5, 2014 » [Xcode]상세 로그 만들기
- January 2, 2014 » [iOS]키즈 카테고리 가이드라인 및 적용 예제 정리
2013
December
- December 30, 2013 » [번역]GitHub / Commits / 왜 내 커밋이 잘못된 유저로 연결되나요?
- December 29, 2013 » [번역]GitHub / Collaborating / Pull 요청을 로컬에서 확인하기
- December 29, 2013 » [번역]GitHub / Collaborating / 네트워크의 가시성 변경하기
- December 28, 2013 » [번역]GitHub / Collaborating / 커밋 의견를 추가하기
- December 26, 2013 » [번역]GitHub / Collaborating / 이슈 첨부
- December 26, 2013 » [번역]GitHub / Collaborating / 어떻게 공동 제작자를 지울 수 있나요?
- December 26, 2013 » [번역]GitHub / Collaborating / 비공개 저장소에서 공동 제작자를 삭제했을 때 무슨 일이 일어나나요?
- December 26, 2013 » [번역]GitHub / Collaborating / Fork 동기화
- December 26, 2013 » [번역]GitHub / Collaborating / 협업 저장소로부터 스스로 나오기
- December 26, 2013 » [번역]GitHub / Collaborating / 어떻게 공동 제작자를 추가할 수 있나요?
- December 25, 2013 » [번역]GitHub / Collaborating / Pull 요청 정리하기
- December 25, 2013 » [번역]GitHub / Collaborating / Pull 요청 닫기
- December 23, 2013 » [번역]GitHub / Collaborating / Pull 요청 합치기
- December 22, 2013 » [번역]GitHub / Collaborating / Pull 요청 만들기
- December 21, 2013 » [번역]GitHub / Collaborating / Pull 요청하는 방법
- December 19, 2013 » [Git]명령어 정리