This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
protocol ProfileRoute { | |
func openProfile(for user: User) | |
} | |
extension ProfileRoute where Self: UIViewController { | |
func openProfile(for user: User) { | |
let profileViewController = ProfileViewController(user: user) | |
present(profileViewController, animated: true, completion: nil) | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
extension UIViewController { | |
func openProfile(for user: User) { | |
let profileViewController = ProfileViewController(user: user) | |
present(profileViewController, animated: true, completion: nil) | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/sh | |
if [ -n "$XcodeProjectPath" ]; then | |
open -a Terminal "$XcodeProjectPath"/.. | |
else | |
open -a Terminal "$XcodeWorkspacePath"/.. | |
fi |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
extension RawRepresentable { | |
static var allValues: [Self] { | |
var index = 0 | |
let iterator: AnyIterator<Self> = AnyIterator { | |
let current = withUnsafePointer(to: &index) { unsafePointer in | |
unsafePointer.withMemoryRebound(to: Self.self, capacity: 1) { unsafePointer in | |
unsafePointer.pointee | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/// Respresents a disposable resource. | |
public protocol Disposable { | |
func dispose() | |
} | |
/// Represents disposable resource with state tracking. | |
public protocol Cancelable: Disposable { | |
var isDisposed: Bool { get } | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
let disposable = BooleanDisposable() | |
print("isDisposed = \(disposable.isDisposed)") | |
print("dispose") | |
disposable.dispose() | |
print("isDisposed = \(disposable.isDisposed)") | |
// log: | |
// isDisposed = false |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
let disposable1 = Disposables.create { print("disposed-1 ☠️") } | |
let disposable2 = Disposables.create { print("disposed-2 ☠️") } | |
let singleAssignmentDisposable = SingleAssignmentDisposable() | |
print("set disposable1") | |
singleAssignmentDisposable.setDisposable(disposable1) | |
print("set disposable2") | |
singleAssignmentDisposable.setDisposable(disposable2) // ⚠️⚠️⚠️ fatal error |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
let disposable1 = Disposables.create { print("disposed-1 ☠️") } | |
let disposable2 = Disposables.create { print("disposed-2 ☠️") } | |
let disposable3 = Disposables.create { print("disposed-3 ☠️") } | |
let disposable = CompositeDisposable(disposable1, disposable2) | |
print("insert disposable3") | |
let key3 = disposable.insert(disposable3) | |
if let key = key3 { |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
let disposable1 = Disposables.create { print("disposed-1 ☠️") } | |
let disposable2 = Disposables.create { print("disposed-2 ☠️") } | |
let disposable3 = Disposables.create { print("disposed-3 ☠️") } | |
let disposable = CompositeDisposable(disposable1, disposable2) | |
print("dispose") | |
disposable.dispose() | |
print("insert disposable3") |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
let disposable1 = Disposables.create { print("disposed-1 ☠️") } | |
let disposable2 = Disposables.create { print("disposed-2 ☠️") } | |
let disposable3 = Disposables.create { print("disposed-3 ☠️") } | |
let disposable = CompositeDisposable(disposables: [disposable1, disposable2, disposable3]) | |
print("dispose") | |
disposable.dispose() | |
// log: |