Skip to content

Instantly share code, notes, and snippets.

View JimRoepcke's full-sized avatar

Jim Roepcke JimRoepcke

View GitHub Profile
@JimRoepcke
JimRoepcke / gist:f47f7d541dcb92c87979a885d62af6f0
Created October 1, 2024 22:48
iOS 18 crash in TCA with large reducer with generic sub-reducers
Incident Identifier: 49576494-AEF6-4749-B7BF-990FBE0C3C39
Distributor ID: com.apple.TestFlight
Hardware Model: iPhone17,1
Process: MyApp [3919]
Path: /private/var/containers/Bundle/Application/CCBF10BF-11EF-45CC-8EE7-0B92489E463A/MyApp.app/MyApp
Identifier: com.mycompany.myapp.test
Version: 12.38.1 (60441)
AppStoreTools: 16A242d
AppVariant: 1:iPhone17,1:18
Beta: YES
@JimRoepcke
JimRoepcke / Playground.swift
Created March 26, 2020 01:59
Change in Swift behaviour with didSet property observer for @published property in Xcode 11.4
/*
In Xcode 11.3.1, the output is:
>>> setting n to -1
sending value through valueDidChange publisher
situation negative("hello")
<<< done
>>> setting n to 1
sending value through valueDidChange publisher
situation positive("hello")
@JimRoepcke
JimRoepcke / Playground.swift
Created March 26, 2020 01:54
Change in Swift behaviour with didSet property observer for @published property in Xcode 11.4
/*
In Xcode 11.3.1, the output is:
>>> setting n to -1
sending value through valueDidChange publisher
situation negative("hello")
<<< done
>>> setting n to 1
sending value through valueDidChange publisher
situation positive("hello")
enum Bar: String {
case a, b, c
init?(w: Bool, x: Bool, y: Bool, z: Bool) {
if w {
if x {
self = .a
return
} else if y {
self = .b
return
@JimRoepcke
JimRoepcke / Weird.swift
Last active June 29, 2016 04:24
Please help me understand why the Swift 2.2 compiler in Xcode 7.3.1 says the class does not conform to the protocol
//: Playground - noun: a place where people can play
protocol Thingy: class {}
protocol ThingTaking: class {
associatedtype ThingType: Thingy
func some(thing: ThingType)
}
- (UIImage *)mergeImages:(NSArray *)images
{
return nil; // hand waving
}
- (void)exampleWorkspace
{
[KZNNodeType registerType:@"MergeImages" inputs:@{@"Images<T>": NSArray.class, @"<T>": UIImage.class} outputs:@{@"Output" : UIImage.class} processingBlock:^(id node, NSDictionary *inputs, NSMutableDictionary *outputs) {
outputs[@"Output"] = [self mergeImages:inputs[@"Images"]];
// Playground - noun: a place where people can play
import Cocoa
struct Regex {
let pattern: String
let expressionOptions: NSRegularExpressionOptions
let matchingOptions: NSMatchingOptions
init(pattern: String, expressionOptions: NSRegularExpressionOptions, matchingOptions: NSMatchingOptions) {
@JimRoepcke
JimRoepcke / example.m
Created May 8, 2014 16:36
This is how I'd write the sample code rewritten using JRErr. I think it's clean and concise, and doesn't need any tricks. (Not tested, may have bugs ;))
- (BOOL)incrementBuildNumberInFile:(NSURL *)fileURL error:(NSError **)error
{
BOOL result = NO;
static NSString * const sErrorDescription = @"Unrecognized File Format";
static NSString * const sBuildNumberKey = @"BuildNumber";
NSError *localError = nil;
NSData *fileData = [NSData dataWithContentsOfURL:fileURL options:0 error:&localError];
if (fileData)
@JimRoepcke
JimRoepcke / gist:5851621
Created June 24, 2013 16:58
This is what I get when selecting the shell script at http://www.doubleencore.com/2013/06/tutorial-finding-calls-to-uniqueidentifier-in-your-ios-app/ and copying it to the clipboard.
for match in $(grep -lR uniqueIdentifier *); do printf "File:%s\n\n" $match; otool -v -s __TEXT __objc_methname $match | grep uniqueIdentifier; printf "\n\n"; done; - See more at: http://www.doubleencore.com/2013/06/tutorial-finding-calls-to-uniqueidentifier-in-your-ios-app/#sthash.kV1BoNc0.dpuf
@JimRoepcke
JimRoepcke / gist:5445746
Created April 23, 2013 17:43
Letter to the Apple Developer Program regarding last night's developer site outage.
Last night the developer site went offline. It should come as no surprise that this immediately sent many people into panic mode thinking WWDC tickets would be available when the site came back online.
I didn't get to go to WWDC last year because tickets went on sale while I was sleeping, so this year I've signed up for every service I can find to tell me when tickets go on sale, and I run scripts to check the WWDC site. Everyone knows that if WWDC is capped at 5K tickets as it has been, they'll sell out in record time this again year.
You guys are just as aware of this as the rest of us are.
And yet, despite knowing that tickets weren't going to be for sale when the site returned, you chose not to communicate this to the thousands of Apple developers on Twitter that had become chained to their computers last night in anticipation.
This is totally disrespectful. I understand why ticket sales aren't pre-announced, but please don't make this any worse than it has to be. If you're going to take the site offl