#Every Single Option Under The Sun
- optimization level options
- automatic crashing options
- debug info options
- swift internal options
- swift debug/development internal options
- linker-specific options
- mode options
#Every Single Option Under The Sun
// Allow to use generics even if not supported yet | |
#if __has_feature(objc_generics) | |
#define NSArrayOf(x) NSArray<x> | |
#define NSMutableArrayOf(x) NSMutableArray<x> | |
#define NSDictionaryOf(x,y) NSDictionary<x, y> | |
#define NSMutableDictionaryOf(x, y) NSMutableDictionary<x, y> | |
#define NSSetOf(x) NSSet<x> | |
#define NSMutableSetOf(x) NSMutableSet<x> | |
#else | |
#define NSArrayOf(x) NSArray |
/// Our custom drop-in replacement `precondition`. | |
/// | |
/// This will call Swift's `precondition` by default (and terminate the program). | |
/// But it can be changed at runtime to be tested instead of terminating. | |
func precondition(@autoclosure condition: () -> Bool, @autoclosure _ message: () -> String = "", file: StaticString = __FILE__, line: UWord = __LINE__) { | |
preconditionClosure(condition(), message(), file, line) | |
} | |
/// The actual function called by our custom `precondition`. | |
var preconditionClosure: (Bool, String, StaticString, UWord) -> () = defaultPreconditionClosure |
#!/bin/sh | |
PLIST_BUDDY=/usr/libexec/PlistBuddy | |
xcode-plugin-add-compatibility() { | |
"$PLIST_BUDDY" -c "Add DVTPlugInCompatibilityUUIDs:10 string $2" \ | |
"$1/Contents/Info.plist" | |
} | |
xcode-plugin-has-compatibility() { |
You can specify the underlying name for a C function the linker/compiler should actually use. If you use an existing | |
function's name, it will just let you refer to it with your prototype's name. If you define the function, it'll give | |
it that name. It even complains if a function of that name already exists. Tested with clang on a Mac, but AFAIK also | |
works in GCC. You can even use special characters in your function names, like you can do in assembly. |
Fractal Design Define S Black | |
Corsair CP-9020094-EU RMX Serie RM1000X ATX/EPS (if you don't do SLI 850W is good enough) | |
Asus ROG Maximus VIII Hero Gaming Mainboard | |
Corsair CMK32GX4M4A2400C14 Vengeance LPX 32GB | |
Intel Core™ i7-6700K | |
Noctua NH-D15S | |
Samsung Basic MZ-7KE1T0BW 850 Pro SSD (no space for an PCI-E version...) | |
Western Digital WD40EZRX Caviar Green 4TB (optional) |
// Compile with clang -framework Foundation sethack.m | |
#import <Foundation/Foundation.h> | |
#import <objc/runtime.h> | |
/* | |
CFHashBytes from http://www.opensource.apple.com/source/CF/CF-1153.18/CFUtilities.c | |
*/ | |
#define ELF_STEP(B) T1 = (H << 4) + B; T2 = T1 & 0xF0000000; if (T2) T1 ^= (T2 >> 24); T1 &= (~T2); H = T1; |
class SourceListTableCellView: NSTableCellView { | |
override var draggingImageComponents: [NSDraggingImageComponent] { | |
let components = super.draggingImageComponents | |
guard | |
self.backgroundStyle == .emphasized, //emphasized = selected | |
let textField = self.textField, | |
let newStyle = textField.attributedStringValue.mutableCopy() as? NSMutableAttributedString, | |
let labelIndex = components.firstIndex(where: { $0.key == .label }) | |
else { | |
return components |
// Example usage: | |
// Swizzler<NSString *, NSDateFormatter *, NSDate *> NSDateFormatter_stringFromDate_ { | |
// NSDateFormatter.class, @selector(stringFromDate:), [&](auto self, auto date) { | |
// if ([NSCalendar.currentCalendar components:NSCalendarUnitWeekday fromDate:date].weekday == 4) { | |
// return @"It Is Wednesday My Dudes"; | |
// } else { | |
// return NSDateFormatter_stringFromDate_(self, date); | |
// } | |
// } | |
// }; |