Skip to content

Instantly share code, notes, and snippets.

View JimRoepcke's full-sized avatar

Jim Roepcke JimRoepcke

View GitHub Profile
@JimRoepcke
JimRoepcke / gist:732885
Created December 8, 2010 04:31
Program received signal: “EXC_BAD_ACCESS”. (gdb) p/x $eax $1 = 0xfe15980
Happens while randomly scrolling a table view in the simulator. Both alloc and free are not in my code. Is this a bug in Apple's code or am I missing something?
ALLOC 0xfe15980-0xfe15997 [size=24]: thread_a001a500 |start | main | UIApplicationMain | GSEventRun | GSEventRunModal | CFRunLoopRunInMode | CFRunLoopRunSpecific | __CFRunLoopRun | __CFRunLoopDoSource1 | __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ | mshMIGPerform | _XCopyParameterizedAttributeValue | _AXXMIGCopyParameterizedAttributeValue | _copyParameterizedAttributeValueCallback | _createAXUIElementsFromUIElements | _appendVendedAXElementsFromUIElements | _addAXElementsToArrayFromObject | _appendChildrenToArrayStartingAtIndex | -[UITableViewCellAccessibilityElement isAccessibilityElement] | -[UITableViewCellAccessibilityElement tableViewCell] | -[UITableViewCellAccessibility(SafeCategory) _accessibilityReuseChildren:forMockParent:] | -[UITableViewCellAccessibility(SafeCategory) _accessibilityInternalData] | -[_AXTableViewCellInternal
@JimRoepcke
JimRoepcke / gist:918268
Created April 13, 2011 19:50
Make an Automator service that receives text with a Run Applescript command
-- select @"foo", activate this service
-- @"foo" is replaced with kFoo and
-- the clipboard contains the variable
-- declaration for your .h/.m files
-- http://discussions.apple.com/message.jspa?messageID=2900758
on getString(testChar, theString, searchList, replaceList)
set {oldDelims, AppleScript's text item delimiters} to ¬
{AppleScript's text item delimiters, {testChar}}
set charOffset to (length of (text item 1 of searchList)) + 1
@JimRoepcke
JimRoepcke / gist:3016633
Created June 29, 2012 08:21
My chat with MobileMe Express Lane support about iCloud Mail and iPhone 3G
Chat Transcript
Friday, June 29, 2012 12:41 AM
Duration: 19 minutes 56 seconds
Shante:
Hi, welcome to Apple! My name is Shante with MobileMe support. Please give me a moment to look over the information you provided.
Shante:
I understand that you would like to confirm that you can move your accounts in any order that you want to and once the accounts are moved to iCloud they will be individual accounts?
@JimRoepcke
JimRoepcke / gist:3065296
Created July 7, 2012 07:46
@synchronized doesn't retain monitored object under MRC
__block id foo = [MyObject new];
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
NSLog(@"block entering synchronized");
@synchronized(foo) {
NSLog(@"running in synchronized");
sleep(10);
NSLog(@"running [foo self]");
[foo self];
NSLog(@"ran [foo self]");
}
@JimRoepcke
JimRoepcke / gist:4536602
Created January 15, 2013 06:13
Putting a category on model classes to specialize UI/layout code for each model type
// In MyViewController.m
@interface BaseModelClass (MyViewControllerLayout)
// If your model classes don't have a common superclass, put
// this category on NSObject instead
- (void)layoutForMyViewController:(MyViewController *)controller;
@end
@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
@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 / 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)
// 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) {
- (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"]];