- Introduction to Functional Programming Johannes Weiß - https://vimeo.com/100786088
- ReactiveCocoa at MobiDevDay Andrew Sardone - https://vimeo.com/65637501
- The Future Of ReactiveCocoa Justin Spahr-Summers - https://www.youtube.com/watch?v=ICNjRS2X8WM
- Enemy of the State Justin Spahr-Summers - https://www.youtube.com/watch?v=7AqXBuJOJkY
- WWDC 2014 Session 229 - Advanced iOS Application Architecture and Patterns Andy Matuschak - https://developer.apple.com/videos/play/wwdc2014/229/
- Functioning as a Functionalist Andy Matuschak - https://www.youtube.com/watch?v=rJosPrqBqrA
- Controlling Complexity in Swift Andy Matuschak - https://realm.io/news/andy-matuschak-controlling-complexity/
| #!/bin/bash -e | |
| if [ "${CONFIGURATION}" != "Debug" ]; then | |
| exit 0 | |
| fi | |
| REVEAL_APP_PATH=$(mdfind -onlyin / "kMDItemCFBundleIdentifier == com.ittybittyapps.Reveal" | head -n 1) | |
| if [ ! -d "${REVEAL_APP_PATH}" ]; then | |
| echo "warning: Reveal.app not found." | |
| exit 0 |
| @interface PSPDFWindow () | |
| @property (nonatomic, strong) UIViewController *realRootViewController; | |
| @end | |
| @implementation PSPDFWindow | |
| - (void)setHidden:(BOOL)hidden { | |
| [super setHidden:hidden]; | |
| // Workaround for rdar://19592583 |
| /// An object that has some tear-down logic | |
| public protocol Disposable { | |
| func dispose() | |
| } | |
| /// An event provides a mechanism for raising notifications, together with some | |
| /// associated data. Multiple function handlers can be added, with each being invoked, | |
| /// with the event data, when the event is raised. | |
| public class Event<T> { |
| // | |
| // UIView+Orientation.h | |
| // | |
| #import <UIKit/UIKit.h> | |
| // These macros should only be used if you MUST know the interface orientation for the device itself, for example when displaying a new UIWindow. | |
| // This should be very rare; generally you should only look at the immediate parent view's size (or "view orientation" using the category below). | |
| #define StatusBarOrientationIsPortrait UIInterfaceOrientationIsPortrait([[UIApplication sharedApplication] statusBarOrientation]) | |
| #define StatusBarOrientationIsLandscape UIInterfaceOrientationIsLandscape([[UIApplication sharedApplication] statusBarOrientation]) |
| Silverlight and ReactiveExtensions article: | |
| http://blog.scottlogic.com/2010/12/02/exploring-reactive-extensions-rx-through-twitter-and-bing-maps-mashups.html | |
| My Ray Wenderlich author page, contains quite a few ReactiveCocoa and MVVM articles: | |
| http://www.raywenderlich.com/u/ColinEberhardt | |
| ObjC block syntax - say no more! | |
| http://fuckingblocksyntax.com | |
| Twitter app with sentiment analysis |
| // Promise.all is good for executing many promises at once | |
| Promise.all([ | |
| promise1, | |
| promise2 | |
| ]); | |
| // Promise.resolve is good for wrapping synchronous code | |
| Promise.resolve().then(function () { | |
| if (somethingIsNotRight()) { | |
| throw new Error("I will be rejected asynchronously!"); |
Last week, a number of publications ran a story about 1,000's of apps allegedly being vulnerable due to an SSL bug in AFNetworking. These articles contain a number of inaccurate and misleading statements on this matter.
We are publishing this response to clarify and correct these statements.
For those not familiar with AFNetworking, here are some relevant details about the library for this story:
- AFNetworking is an open source, third-party library that provides convenience functionality on top of Apple's built-in frameworks.
- One component of AFNetworking is
AFSecurityPolicy, which handles authentication challenges according to a policy configured by the application. This includes the evaluation of X.509 certificates which servers send back when connecting over HTTPS.
| /* DeviceUID.h | |
| #import <Foundation/Foundation.h> | |
| @interface DeviceUID : NSObject | |
| + (NSString *)uid; | |
| @end | |
| */ | |
| // Device.m |
When Swift was first announced, I was gratified to see that one of the (few) philosophies that it shared with Objective-C was that exceptions should not be used for control flow, only for highlighting fatal programming errors at development time.
So it came as a surprise to me when Swift 2 brought (What appeared to be) traditional exception handling to the language.
Similarly surprised were the functional Swift programmers, who had put their faith in the Haskell-style approach to error handling, where every function returns an enum (or monad, if you like) containing either a valid result or an error. This seemed like a natural fit for Swift, so why did Apple instead opt for a solution originally designed for clumsy imperative languages?
I'm going to cover three things in this post: