Skip to content

Instantly share code, notes, and snippets.

Rob Mayoff mayoff

Block or report user

Report or block mayoff

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
View curveArea.m
static CGPathRef createClosedPathWithPoints(const CGPoint *points, size_t count) {
CGMutablePathRef path = CGPathCreateMutable();
CGPathAddLines(path, NULL, points, count);
return path;
static CGRect integralFrameForPath(CGPathRef path) {
CGRect frame = CGPathGetBoundingBox(path);
return CGRectIntegral(frame);
mayoff / !
Last active May 7, 2019
Debugging Objective-C blocks in lldb
View !

The attached lldb command pblock command lets you peek inside an Objective-C block. It tries to tell you where to find the source code for the block, and the values captured by the block when it was created.

Consider this example program:

#import <Foundation/Foundation.h>

@interface Foo: NSObject

@implementation Foo
mayoff / decode-dyn-uti.swift
Created Mar 14, 2019
Swift command-line script to decode dynamic UTIs
View decode-dyn-uti.swift
#!/usr/bin/xcrun swift
extension String {
static let bitsForCodeUnit: [Character: [UInt8]] = {
var dict = [Character: [UInt8]]()
for (i, ch) in "abcdefghkmnpqrstuvwxyz0123456789".enumerated() {
let bits = Array((0 ..< 5).map({ UInt8((i >> $0) & 1) }).reversed())
dict[ch] = bits
mayoff / unowned-safety-dance.swift
Created Feb 23, 2019
test Swift unowned safety
View unowned-safety-dance.swift
class MyObject { }
var o = MyObject()
print("strong o = \(o)")
unowned let u = o
print("unowned u = \(u)")
o = MyObject()
mayoff / main.m
Created Feb 11, 2019
Set pHYs chunk (DPI) of PNG
View main.m
@import AppKit;
@import ImageIO;
@import CoreServices;
#define fromCF (__bridge id)
#define toCF (__bridge CFTypeRef)
int main(int argc, const char * argv[]) {
@autoreleasepool {
CGRect rect = CGRectMake(0, 0, 100, 100);
mayoff / wedges-with-gaps.swift
Created Dec 27, 2018
Simon game wedges in iOS
View wedges-with-gaps.swift
import UIKit
import PlaygroundSupport
typealias Radians = CGFloat
extension UIBezierPath {
static func simonWedge(innerRadius: CGFloat, outerRadius: CGFloat, centerAngle: Radians, gap: CGFloat) -> UIBezierPath {
let innerAngle: Radians = CGFloat.pi / 4 - gap / (2 * innerRadius)
let outerAngle: Radians = CGFloat.pi / 4 - gap / (2 * outerRadius)
mayoff / appfont-fontello-config.json
Last active Nov 12, 2018
Playground for drawing a UILabel with attributed text containing icons from a custom font
View appfont-fontello-config.json
"name": "appfont",
"css_prefix_text": "icon-",
"css_use_suffix": false,
"hinting": true,
"units_per_em": 1000,
"ascent": 850,
"glyphs": [
"uid": "324e9013e79ecf9e0e30a07feffa9d6b",
mayoff /
Created Oct 10, 2018
Decimal / NSDecimal support for lldb
# Decimal / NSDecimal support for lldb
# Put this file somewhere, e.g. ~/.../lldb/
# Then add this line to ~/.lldbinit:
# command script import ~/.../lldb/
import lldb
def stringForDecimal(sbValue, internal_dict):
from decimal import Decimal, getcontext
View Main.storyboard
<?xml version="1.0" encoding="UTF-8"?>
<document type="" version="3.0" toolsVersion="14313.18" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="BYZ-38-t0r">
<device id="retina3_5" orientation="portrait">
<adaptation id="fullscreen"/>
<plugIn identifier="" version="14283.14"/>
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
You can’t perform that action at this time.