Skip to content

Instantly share code, notes, and snippets.

@xtinger
xtinger / swift_snippets
Created October 20, 2017 16:50
Swift snippets
let maximumNumberOfLoginAttempts = 10
var currentLoginAttempt = 0
var x = 0.0, y = 0.0, z = 0.0
var welcomeMessage: String
var red, green, blue: Double
let π = 3.14159
let 你好 = "你好世界"
let 🐶🐮 = "dogcow"
print(friendlyWelcome)
@xtinger
xtinger / NSArrayMagic.m
Last active June 26, 2018 09:39 — forked from jarsen/NSArrayMagic.m
NSArrayMagic
// How to do lots of cool things with NSArray.Inspired by NSHipster and WWDC 2013 Session 228 - "Hidden Gems in Cocoa and Cocoa Touch"
NSArray *albums = @[[Album albumWithName:@"Random Access Memories" price:9.99f],
[Album albumWithName:@"Clarity" price:6.99f],
[Album albumWithName:@"Weekend in America" price:7.99f],
[Album albumWithName:@"Weekend in America" price:7.90f],
[Album albumWithName:@"Bangarang EP" price:2.99f]];
// Reversing an Array
#define XGRunOnMainThread _Pragma("clang diagnostic push") _Pragma("clang diagnostic ignored \"-Warc-performSelector-leaks\"") \
if (![NSThread isMainThread]) { dispatch_sync(dispatch_get_main_queue(), ^{ [self performSelector:_cmd]; }); return; };
@xtinger
xtinger / gist:7f9981bcb4f213c7897f66847daf6f18
Created May 10, 2016 13:34
dispatch_once_on_main_thread
void dispatch_once_on_main_thread(dispatch_once_t *predicate,
dispatch_block_t block) {
if ([NSThread isMainThread]) {
dispatch_once(predicate, block);
} else {
if (DISPATCH_EXPECT(*predicate == 0L, NO)) {
dispatch_sync(dispatch_get_main_queue(), ^{
dispatch_once(predicate, block);
});
}
NSLog(@"%@",[[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding]);
@xtinger
xtinger / NSArrayEnumExtensions
Created December 21, 2015 11:15
NSArray (EnumExtensions)
@interface NSArray (EnumExtensions)
- (NSString*) stringWithEnum: (NSUInteger) enumVal;
- (NSUInteger) enumFromString: (NSString*) strVal default: (NSUInteger) def;
- (NSUInteger) enumFromString: (NSString*) strVal;
@end
@implementation NSArray (EnumExtensions)
@xtinger
xtinger / gist:9209312
Last active August 29, 2015 13:56
Declare A Block in Objective-C
As a local variable:
returnType (^blockName)(parameterTypes) = ^returnType(parameters) {...};
As a property:
@property (nonatomic, copy) returnType (^blockName)(parameterTypes);
As a method parameter:
- (void)someMethodThatTakesABlock:(returnType (^)(parameterTypes))blockName;
As an argument to a method call: