swift

· iOS/Combine
Publisher Publisher Protocol은 Combine의 핵심 중 하나입니다. 시간이 지남에 따라 하나 이상의 Subscriber들에게 일련의 값을 전달할 수 있는 Type에 대한 요구사항을 정의합니다. Publisher는 두 가지 이벤트를 내보냅니다. Element라고 불리는 value Completion이벤트(Success, Failure) 0개 이상의 value를 내보낼 수 있지만 Completion이벤트는 하나만 내보낼 수 있습니다. Completion이벤트를 내보내고 완료되고 나면 더 이상 아무 이벤트도 내보낼 수 없습니다. 가장 간단하게 만들어볼 수 있는 Publisher는 Just입니다. // 1. 단일 값으로 publisher를 생성할 수 있는 Just를 이용하여 publish..
· iOS/iOS Dev
GitHub - layoutBox/FlexLayout: FlexLayout adds a nice Swift interface to the highly optimized facebook/yoga flexbox implementati FlexLayout adds a nice Swift interface to the highly optimized facebook/yoga flexbox implementation. Concise, intuitive & chainable syntax. - GitHub - layoutBox/FlexLayout: FlexLayout adds a ni... github.com FlexLayout은 Facebook에서 만든 Flexbox Layout engine인 Yoga의 기능을 Sw..
· iOS/Combine
Combine의 핵심 기본요소는 Publishers, Operators, Subscribers. 다른 요소들도 있지만 위 세가지는 필수입니다. Publishers 하나 이상의 Subscriber에게 시간이 지남에 따라 값을 내보낼 수 있는 타입입니다. 수학 연산, 네트워킹, User event 처리를 포함한 거의 대부분의 Publisher의 내부 로직과 관계없이 3가지 타입의 이벤트를 내보낼 수 있습니다. Publisher의 Generic타입의 Output Success 완료 Publisher의 Failure타입의 error가 있는 완료 Publisher는 0개 이상의 Output값을 내보낼 수 있고, 성공 혹은 실패로 완료된 경우 다른 이벤트를 내보낼 수 없습니다. 아래는 시간이 지남에 따라 Int값을..
· iOS/Swift
dynamicMemberLookup은 class, struct, enum, protocol에 적용하여 런타임에 dot(.) 문법으로 접근할 수 있도록 해주는 편리한 기능입니다. dynamicMemberLookup을 사용하려면 subscript(dynamicMember:)를 구현해주어야 합니다. @dynamicMemberLookup struct Person { var firstName: String var lastName: String subscript(dynamicMember key: String) -> String { switch key { case "fullName": return "Hey, \(lastName) \(firstName)!!!" default: return "nope!!!" } } } ..
· iOS/Swift
Key-Value Coding (KVC) Key-Value Coding은 객체의 프로퍼티를 Key-value 쌍으로 접근할 수 있도록 해주는 Objective-C 문법입니다. KVC를 사용하면 속성의 이름을 문자열로 참조하여 런타임에 동적으로 객체의 프로퍼티 값을 설정하거나 읽을 수 있습니다. Swift에서도 사용할 수 있지만, Objective-C 런타임에 의존하기 때문에 프로퍼티 선언 시 앞에 @objc 어노테이션을 붙여줘야 하며, NSObject의 서브클래스에서만 사용이 가능합니다. class Person: NSObject { // NSObject 서브클래스 @objc var name: String? // @objc 어노테이션 } 위와 같이 선언된 클래스의 프로퍼티는 아래처럼 KVC로 접근이 가능합..
· iOS/Swift
Key-Value Observing(KVO)은 다른 객체의 property 변경에 대해 객체에 알리는 데 사용하는 코코아 프로그래밍 패턴입니다. Model과 View 사이와 같이 앱의 논리적으로 분리된 것 사이의 변경 사항을 전달하는 데 유용합니다. willSet, didSet과 유사하지만 KVO는 객체 외부에서 property변경을 관찰하는 데 사용된다는 차이점이 있습니다. NSObject를 상속받은 클래스에서만 Key-Value Observing을 사용할 수 있습니다. Key-Value Observing을 위해 Observe할 property 앞에 @objc attribute와 dynamic modifier를 붙여주어야 합니다. class Almond: NSObject { // NSObject를 상속..
· iOS/Combine
Combine을 익히려고 보다 보면, RxSwift와 비교를 하면서 익힐 수밖에 없는 듯하여 둘의 핵심요소들의 비교를 정리해 봅니다. (참고: https://github.com/CombineCommunity/rxswift-to-combine-cheatsheet) Basic Spec. RxSwift Combine Deployment Target iOS 8.0+ iOS 13.0+ Platforms supported iOS, macOS, tvOS, watchOS, Linux iOS, macOS, tvOS, watchOS, UIKit for Mac Spec Reactive Extensions (ReactiveX) Reactive Streams (+ adjustments) Framework Consumption ..
· iOS/Combine
아래는 Apple 공식문서의 설명을 번역했습니다. (https://developer.apple.com/documentation/combine) Customize handling of asynchronous events by combining event-processing operators. 이벤트 처리 operator를 결합하여, 비동기 이벤트 처리를 Customize 하는 Framework. Combine framework는 시간 경과에 따른 값 처리를 위한 선언적 Swift API를 제공합니다. 이 값들은 많은 종류의 비동기 이벤트들을 나타낼 수 있습니다. Combine은 publisher가 시간이 지남에 따라 변경될 수 있는 값을 노출하고, subscriber가 publisher로부터 이러한 값들을..
· iOS/iOS Dev
Swift Package Manager로 Package 배포하기 개발할 때 유용한 패키지들을 Swift Package Manager, CocoaPods, Carthage를 통해서 Dependancy 세팅을 자주 하는데요. 매번 유용한 라이브러리들을 사용하기만 하면서, 이런 건 어떻게 배포하는 걸까? 싶었는 swifty-cody.tistory.com 앞 포스팅에서 Swift Package Manager로 Package 배포를 해봤는데, 해당 패키지를 CocoaPods으로도 배포하고 싶어서 시도해보고 경험을 공유해봅니다. 1. 일단 아무 폴더에다 들어가서 터미널을 통해 아래 명령어를 써줍니다. pod lib create (패키지명) 2. 그리고 5가지 질문에 자신의 패키지에 맞는 선택을 하면 pod temp..
· iOS/iOS Dev
https://github.com/redxoul/AESwift GitHub - redxoul/AESwift: Data and NSData Extension made for AES encryption/decryption only with Swift. AES-128, AES-192, AES-25 Data and NSData Extension made for AES encryption/decryption only with Swift. AES-128, AES-192, AES-256 encryption/decryption is supported. - GitHub - redxoul/AESwift: Data and NSData Extension mad... github.com Github를 통해서 Swift Pack..
· Coding Tests
1에서부터 N까지 존재하는 소수를 찾는 알고리즘입니다. 고대 그리스 수학자 에라토스테네스가 발견하였으며, 구하는 방법이 마치 채에 거르는 것과 같아 '에라토스테네스의 채'라고 불립니다. 예를 들어 1~100사이의 소수를 찾는다고 하면, 1은 합성수가 아니므로 지워줍니다. 2부터 시작해서 자신을 제외한 2의 배수를 모두 지워줍니다. 3부터 시작해서 자신을 제외한 3의 배수를 모두 지워줍니다. (4는 2단계에서 지워졌으므로)5부터 시작해서 자신을 제외한 5의 배수를 모두 지워줍니다. (6은 2단계에서 지워졌으므로)7부터 시작해서 자신을 제외한 7의 배수를 모두 지워줍니다. 위 과정을 계속 반복합니다. 코드로 작성하면 아래와 같습니다. // '에라토스테네스의 채'로 1~N범위의 prime을 찾기 public ..
· iOS/Swift
코딩테스트를 풀이할 때 유용했던 XOR 연산자(^)입니다. XOR 연산자는 같은 수를 2번 연산했을 때 없어지는 속성이 있습니다. 게다가 그 같은 수 2번의 위치는 꼭 붙어있지 않아도 상관이 없습니다. 3^5^5 // 3 3^5^5^3 // 0 3^3^5 // 5
· iOS/Swift
코딩테스트 풀이할 때 유용했던 String 생성자입니다. 입력한 value를 N진수(radix)로 변환해줍니다. 11진수 이상일 때 uppercase로 반환해주는 parameter도 제공합니다. 아래는 예시입니다. String(10, radix: 2) // 1010 String(999999, radix: 16) // f423f String(999999, radix: 16, uppercase: true) // F423F
· iOS/RxSwift
RxSwift 정리에 딱 한달이 걸렸네요. 노션에 혼자 정리해놨던 것을 옮겼을 뿐인데, 아무래도 혼자 보려고 적어놓은 것과 다른 사람들도 볼 수 있는 블로그글을 작성하는 건 똑같을 수가 없었기 때문에 설명과 예제를 좀더 신경쓰면서 글을 작성했던 거 같습니다. 사실 이런 블로그 글을 보는 것보다 개념을 잡을때는 곰튀김님의 강의를 보거나 Operator들은 ReactiveX 공식 문서에서 필요한 것을 찾아보는 게 더 낫지만. 그래도 누군가에게 도움이 될까 한번 정리해봤습니다. RxCocoa, RxViewController, RxFlow도 글을 써볼까싶지만 바로 하지는 않을 거 같습니다.(미래의 제가 언젠가 하겠죠?) 글을 작성하면서 썼던 예제들은 Playground로 작성되었고, 아래 깃헙에 올려놓았으니 필..
· iOS/RxSwift
share Operator를 언제 사용할지를 이해하기 위해서는 먼저 Observable의 기본특성을 이해해야 합니다. 이전 글(https://swifty-cody.tistory.com/56)에서 정리했지만, Observable은 정의해놓은 것만으로는 아무값도 방출이 되지 않고 subscribe을 했을 때부터 값을 방출합니다. // Create of let numObservable = Observable.of(1,2,3,4,5).debug("") // 출력 없음 subscribe를 하면? subscribe할 때마다 Element를 방출합니다. let numObservable = Observable.of(1,2,3,4,5).debug("") numObservable .subscribe() // 한번 subs..
SwiftyCody
'swift' 태그의 글 목록 (4 Page)