(by @andrestaltz)
If you prefer to watch video tutorials with live-coding, then check out this series I recorded with the same contents as in this article: Egghead.io - Introduction to Reactive Programming.
| // | |
| // FileFunctionLevelFormatter.h | |
| // | |
| // Created by Julien Grimault on 23/1/12. | |
| // Copyright (c) 2012 Julien Grimault. All rights reserved. | |
| // | |
| #import "DDLog.h" | |
| @interface FileFunctionLevelFormatter : NSObject <DDLogFormatter> |
| This was nice and fast... but it takes up WAY TOO MUCH space. And it's annoying to write. | |
| (I like the way I can just step into the function that calls the delegate for debugging) | |
| What's a better way to not make me call respondsToSelector in the middle of my code? Some proxy? | |
| struct { | |
| unsigned int delegateWillDisplayDocument:1; | |
| unsigned int delegateDidDisplayDocument:1; | |
| unsigned int delegateDidShowPageView:1; | |
| unsigned int delegateDidRenderPageView:1; |
| --- | |
| language: objective-c | |
| before_script: | |
| - ./scripts/travis/add-key.sh | |
| after_script: | |
| - ./scripts/travis/remove-key.sh | |
| after_success: | |
| - ./scripts/travis/testflight.sh | |
| env: | |
| global: |
| extern uint32_t dyld_get_program_sdk_version() WEAK_IMPORT_ATTRIBUTE; | |
| extern BOOL DZApplicationUsesLegacyUI(void) | |
| { | |
| static dispatch_once_t onceToken; | |
| static BOOL legacyUI = NO; | |
| dispatch_once(&onceToken, ^{ | |
| uint32_t sdk = __IPHONE_OS_VERSION_MIN_REQUIRED; | |
| if (dyld_get_program_sdk_version != NULL) { | |
| sdk = dyld_get_program_sdk_version(); |
| // Taken from http://PSPDFKit.com. This snippet is under public domain. | |
| #define UIKitVersionNumber_iOS_7_0 0xB57 | |
| BOOL PSPDFIsUIKitFlatMode(void) { | |
| static BOOL isUIKitFlatMode = NO; | |
| static dispatch_once_t onceToken; | |
| dispatch_once(&onceToken, ^{ | |
| // We get the modern UIKit if system is running >= iOS 7 and we were linked with >= SDK 7. | |
| if (kCFCoreFoundationVersionNumber >= kCFCoreFoundationVersionNumber_iOS_7_0) { | |
| isUIKitFlatMode = (NSVersionOfLinkTimeLibrary("UIKit") >> 16) >= UIKitVersionNumber_iOS_7_0; | |
| } |
| @import MobileCoreServices; | |
| static CFStringRef UTTypeForImageData(NSData *data) { | |
| const unsigned char * bytes = [data bytes]; | |
| if (data.length >= 8) { | |
| if (bytes[0] == 0x89 && bytes[1] == 0x50 && bytes[2] == 0x4E && bytes[3] == 0x47 && bytes[4] == 0x0D && bytes[5] == 0x0A && bytes[6] == 0x1A && bytes[7] == 0x0A) { | |
| return kUTTypePNG; | |
| } | |
| } |
| - (NSString *)tableView:(UITableView *)tableView titleForSwipeAccessoryButtonForRowAtIndexPath:(NSIndexPath *)indexPath { | |
| return @"More"; | |
| } | |
| - (void)tableView:(UITableView *)tableView swipeAccessoryButtonPushedForRowAtIndexPath:(NSIndexPath *)indexPath { | |
| NSLog(@"I wanted to be a pretty public API, but then time ran out and they forgot me..."); | |
| // Hide the More/Delete menu. | |
| [self setEditing:NO animated:YES]; | |
| } |
(by @andrestaltz)
If you prefer to watch video tutorials with live-coding, then check out this series I recorded with the same contents as in this article: Egghead.io - Introduction to Reactive Programming.
| // | |
| // Warnings.xcconfig | |
| // | |
| // The list of warnings we (don’t) use, and the reasons why. | |
| // | |
| // :MARK: Warnings in use: | |
| // :MARK: -everything | |
| // We want the best possible diagnostics, so we simply enable everything that exists, and then opt–out of what doesn’t make sense for us. | |
| // | |
| // :MARK: - Warnings not to be promoted: |
Here's my own list of the interesting stuff announced during this year's WWDC, collected from the keynotes, various Apple docs, blog posts and tweets.
If you're planning to watch the videos, I really recommend this Mac app that helps you download and watch them: https://github.com/insidegui/WWDC.
http://www.apple.com/osx/elcapitan-preview/