Skip to content

Instantly share code, notes, and snippets.

View EvgenyKarkan's full-sized avatar

Evgeny Karkan EvgenyKarkan

  • Kharkiv, Ukraine
  • 19:46 (UTC +03:00)
View GitHub Profile
/*
Swift Programming Language Guide
"A Swift Tour" Solutions
https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/GuidedTour.html#//apple_ref/doc/uid/TP40014097-CH2-XID_1
These are the solutions to all the "experiments" in the pre-release Swift Programming Guide
(released on the same day Apple announced Swift). A couple of things worth noting:
1. Swift syntax, e.g. array declarations, has changed since I releasd these. So this code will
probably cause some errors when you paste it into a playground. Should be easy enough to fix
@rgcottrell
rgcottrell / gist:fdc7dd7cf5bc3ed61010
Last active May 24, 2023 21:57
Thread safe shared instance "singletons" in Swift.
class Singleton {
class var sharedInstance: Singleton {
struct Static {
static var token: dispatch_once_t = 0
static var instance: Singleton!
}
dispatch_once(&Static.token) {
Static.instance = Singleton()
}
return Static.instance
@kristopherjohnson
kristopherjohnson / executionTimeInterval.swift
Last active May 29, 2024 19:25
Calculate execution time for a block of Swift code
import QuartzCore
func executionTimeInterval(block: () -> ()) -> CFTimeInterval {
let start = CACurrentMediaTime()
block();
let end = CACurrentMediaTime()
return end - start
}
@hansott
hansott / TimeAgo.swift
Created December 26, 2014 09:02
Time ago function swift ios cocoa
func timeAgoSinceDate(date:NSDate, numericDates:Bool) -> String {
let calendar = NSCalendar.currentCalendar()
let unitFlags = NSCalendarUnit.CalendarUnitMinute | NSCalendarUnit.CalendarUnitHour | NSCalendarUnit.CalendarUnitDay | NSCalendarUnit.CalendarUnitWeekOfYear | NSCalendarUnit.CalendarUnitMonth | NSCalendarUnit.CalendarUnitYear | NSCalendarUnit.CalendarUnitSecond
let now = NSDate()
let earliest = now.earlierDate(date)
let latest = (earliest == now) ? date : now
let components:NSDateComponents = calendar.components(unitFlags, fromDate: earliest, toDate: latest, options: nil)
if (components.year >= 2) {
return "\(components.year) years ago"
} else if (components.year >= 1){
@mackuba
mackuba / wwdc15.md
Last active August 6, 2022 17:28
New stuff from WWDC 2015

Here's my own list of the interesting stuff announced during this year's WWDC, collected from the keynotes, various Apple docs, blog posts and tweets.

If you're planning to watch the videos, I really recommend this Mac app that helps you download and watch them: https://github.com/insidegui/WWDC.

OS X El Capitan

http://www.apple.com/osx/elcapitan-preview/

  • split view - two apps side by side on full screen
@jonathan-beebe
jonathan-beebe / Example_UITextField+TintClearButton.m
Last active March 14, 2018 17:52
Tinting a UITextField’s clear button
#import "UITextField+TintClearButton.h"
@implementation MyCustomTextFieldClass
- (void)layoutSubviews
{
[super layoutSubviews];
[self tintClearImage];
}
@preble
preble / Completion.swift
Created January 20, 2016 23:32
A cancellable completion for Swift.
final class Completion<R> {
private let closure: (R) -> Void
private var cancelled = false
/// `closure` is called upon completion, if not cancelled.
init(closure: (R) -> Void) {
self.closure = closure
}
@stansidel
stansidel / NSData+Hashes.swift
Last active March 22, 2022 14:51
Getting MD5 and SHA256 of NSData and String in Swift
extension NSData {
private func getHash(
algorithm: (UnsafePointer<Void>, CC_LONG, UnsafeMutablePointer<UInt8>) -> UnsafeMutablePointer<UInt8>,
digestLength: Int32
) -> String {
let digestLen = Int(digestLength)
let fileLen = CUnsignedInt(self.length)
let buffer = UnsafeMutablePointer<CUnsignedChar>.alloc(digestLen)
algorithm(self.bytes, fileLen, buffer)
import UIKit
// This class allows the "presentedController" to receive touches
// https://pspdfkit.com/blog/2015/presentation-controllers/
class PSPDFTouchForwardingView: UIView {
var passthroughViews: [UIView] = []
override func hitTest(point: CGPoint, withEvent event: UIEvent?) -> UIView? {
guard let hitView = super.hitTest(point, withEvent: event) else { return nil }
@samsonjs
samsonjs / pre-commit.sh
Last active November 5, 2021 11:50
[iOS] git pre-commit hook to catch misplaced views in xibs and storyboards, and focused or disabled tests and specs
#!/usr/bin/env bash
#
# Based on http://merowing.info/2016/08/setting-up-pre-commit-hook-for-ios/
set -eu
diff-index() {
git diff-index -p -M --cached HEAD -- "$@"
}