Skip to content

Instantly share code, notes, and snippets.

View ytyubox's full-sized avatar
😎
TooFastToSlow

Tsungyu Yu ytyubox

😎
TooFastToSlow
View GitHub Profile
import Combine
let anyCancellable = AnyCancellable(Function())
class Function: Cancellable {
var function: (() -> Void)? = nil
func cancel() {
function = nil
}
func callAsFunction() {
function?()
@ytyubox
ytyubox / ViewController.swift
Created November 11, 2020 08:31
2020/11/11 Swift 線上讀書會討論 Deadlock
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
setMainQueueKey()
}
@IBAction func trigger(_ sender: Any) {
@ytyubox
ytyubox / AutoUpdateSingleton.swift
Last active July 5, 2021 12:30
autoUpdateSingleton
class Target {
internal init(_ value: Int) {
self.value = value
}
static var current = Target(0)
var value:Int
func getCode() -> Int {
return value * 10 + value
}
import class UIKit.UITableView
import class UIKit.UIView
import class UIKit.UIActivityIndicatorView
import struct Foundation.IndexSet
import struct Foundation.IndexPath
import struct UIKit.CGRect
import class UIKit.NSLayoutConstraint
public protocol PagingTableViewDelegate:AnyObject {
func didPaginate(_ pagingTableViewPresenter: PagingTableViewPresenter, to page: Int)
func paginate(_ pagingTableViewPresenter: PagingTableViewPresenter, to page: Int)
import UIKit
extension UIViewController {
static func setContainerView<R>(
target: R,
_ vc:UIViewController,
in viewPath: KeyPath<R,UIView>)
where R: UIViewController {
target.addChild(vc)
vc.didMove(toParent: target)
target[keyPath: viewPath].addSubview(vc.view)
@ytyubox
ytyubox / Markdium-Swift.swift
Created September 8, 2020 05:33
Markdium-Inheriting existing Class type to support ObservableObject
class GamePlayer: ObservableObject {
@Published var exp: Int = 0
@Published var health: Int = 100
}
@ytyubox
ytyubox / Markdium-Swift.swift
Created September 8, 2020 05:33
Markdium-Inheriting existing Class type to support ObservableObject
class UIGamePlayer:GamePlayer, ObservableObject {
override var exp:Int {
willSet {objectWillChange.send()}
}
override var health:Int {
willSet {objectWillChange.send()}
}
@ytyubox
ytyubox / Markdium-Swift.swift
Created September 8, 2020 05:33
Markdium-Inheriting existing Class type to support ObservableObject
class GamePlayer {
var exp: Int = 0
var health: Int = 100
}
@ytyubox
ytyubox / Markdium-Swift.swift
Created September 8, 2020 05:33
Markdium-Inheriting existing Class type to support ObservableObject
struct SomeView: View {
@ObservedObject var gamePlayer = UIGamePlayer()
var body: some View {
Button(action: {
self.gamePlayer.exp += 1
}) {
Text(gamePlayer.exp.description)
}
}
}
@ytyubox
ytyubox / Array+callAsFunction.swift
Created September 7, 2020 08:02
Array+callAsFunction for safe index get
extension Array {
func callAsFunction(_ index:Int) -> Element? {
indices.contains(index)
? self[index]
: nil
}
}