Skip to content

Instantly share code, notes, and snippets.

class NetworkManager {
let session: URLSession = {
let session = URLSession(configuration: .default)
return session
}()
deinit {
session.finishTasksAndInvalidate()
}
func foo(threads: Int) {
print("starting \(threads) threads")
let semaphore = DispatchSemaphore(value: 0)
let group = DispatchGroup()
for i in 0 ..< threads {
DispatchQueue.global().async(group: group) {
semaphore.wait()
print("done waiting \(i)")
import UIKit
import os.log
private let logger = Logger(subsystem: "MyApp", category: "ViewController")
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
var task: Task<Void, Error>?
func updateLabelAfterAPICall(initialValue: String) {
task?.cancel() // just in case
task = Task { [weak self] in
try await Task.sleep(nanoseconds: 5_500_000_000)
self?.label.text = "New Value after 5.5 seconds passed"
}
}
@robertmryan
robertmryan / DynamicsDemo.swift
Created April 21, 2022 03:54
Sample UIKit Dynamics w rotated view
class ViewController: UIViewController {
lazy var animator = UIDynamicAnimator(referenceView: view)
override func viewDidLoad() {
super.viewDidLoad()
let animatedView = UIView(frame: CGRect(x: 120, y: 100, width: 50, height: 50))
animatedView.transform = CGAffineTransform(rotationAngle: .pi / 4)
animatedView.backgroundColor = .blue
struct HoundResponse<T: Decodable>: Decodable {
var message: T?
var status: String
}
let url = URL(string: "https://dog.ceo/api/breed/hound/images")!
URLSession.shared.dataTask(with: url) { data, _, error in
guard let data = data, error == nil else {
print(error ?? URLError(.badServerResponse))
return
func fetchBook(id identifier: String) async throws -> GoogleBook {
var components = URLComponents(string: "https://www.googleapis.com/books/v1/volumes")
components?.queryItems = [URLQueryItem(name: "q", value: "{" + identifier + "}")]
guard let url = components?.url else { throw URLError(.badURL) }
let (data, _) = try await URLSession.shared.data(from: url)
return try JSONDecoder().decode(GoogleBook.self, from: data)
}
let recognizer = SFSpeechRecognizer()
weak var task: SFSpeechRecognitionTask? // note weak reference, as the recognition task keeps strong reference for us while the task is underway
deinit {
task?.cancel() // if still running by the time we deallocate, stop it
}
func startRecognition(of fileURL: URL) {
task?.cancel() // if prior task running, stop it
struct Images {
static func minus(pointSize: CGFloat? = nil) -> UIImage? {
image(named: "minus", pointSize: pointSize)
}
static func trash(pointSize: CGFloat? = nil) -> UIImage? {
image(named: "trash", pointSize: pointSize)
}
private static func image(named name: String, pointSize: CGFloat? = nil) -> UIImage? {
// CircleView.h
//
// Created by Robert Ryan on 4/24/21.
#import <UIKit/UIKit.h>
NS_ASSUME_NONNULL_BEGIN
IB_DESIGNABLE
@interface CircleView : UIView