diff --git a/.gitignore b/.gitignore index 7e58e418..b79283b9 100644 --- a/.gitignore +++ b/.gitignore @@ -47,3 +47,6 @@ ocunit.xml Vendor/bundle/ .bundle/ bin/ + +# Carthage +Carthage/Build diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 00000000..00e9b521 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,6 @@ +[submodule "Carthage/Checkouts/FLAnimatedImage"] + path = Carthage/Checkouts/FLAnimatedImage + url = https://github.com/Flipboard/FLAnimatedImage.git +[submodule "Carthage/Checkouts/ocmock"] + path = Carthage/Checkouts/ocmock + url = https://github.com/erikdoe/ocmock.git diff --git a/CHANGELOG.md b/CHANGELOG.md index 3e89d61d..b586e812 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,15 @@ Changes for users of the library currently on `develop`: _This space intentionally left blank._ +## [1.2.0](https://github.com/NYTimes/NYTPhotoViewer/releases/tag/1.2.0) + +Changes for users of the library in 1.2.0: + +- Add Carthage support ([#164](https://github.com/NYTimes/NYTPhotoViewer/pull/164), [#167](https://github.com/NYTimes/NYTPhotoViewer/pull/167)), ([#171](https://github.com/NYTimes/NYTPhotoViewer/pull/171)) +- Fix gradient flickering of caption view on iOS 9 ([#166](https://github.com/NYTimes/NYTPhotoViewer/pull/166)) +- Readd loading view when photo source is set back to nil ([#187](https://github.com/NYTimes/NYTPhotoViewer/pull/187)) +- Include all files in the bundle, not just PNGs, in Cocoapods resource bundle ([#170](https://github.com/NYTimes/NYTPhotoViewer/pull/170)) + ## [1.1.0](https://github.com/NYTimes/NYTPhotoViewer/releases/tag/1.1.0) Changes for users of the library in 1.1.0: diff --git a/Cartfile b/Cartfile new file mode 100644 index 00000000..9e77f613 --- /dev/null +++ b/Cartfile @@ -0,0 +1 @@ +github "Flipboard/FLAnimatedImage" ~> 1.0.12 diff --git a/Cartfile.private b/Cartfile.private new file mode 100644 index 00000000..168da9f3 --- /dev/null +++ b/Cartfile.private @@ -0,0 +1 @@ +github "erikdoe/ocmock" ~> 3.2.2 diff --git a/Cartfile.resolved b/Cartfile.resolved new file mode 100644 index 00000000..8914961f --- /dev/null +++ b/Cartfile.resolved @@ -0,0 +1,2 @@ +github "Flipboard/FLAnimatedImage" "1.0.12" +github "erikdoe/ocmock" "v3.2.2" diff --git a/Carthage/Checkouts/FLAnimatedImage b/Carthage/Checkouts/FLAnimatedImage new file mode 160000 index 00000000..25307796 --- /dev/null +++ b/Carthage/Checkouts/FLAnimatedImage @@ -0,0 +1 @@ +Subproject commit 25307796cfcf66cb5b98774e050e93f64e0f2cde diff --git a/Carthage/Checkouts/ocmock b/Carthage/Checkouts/ocmock new file mode 160000 index 00000000..ee7ec22d --- /dev/null +++ b/Carthage/Checkouts/ocmock @@ -0,0 +1 @@ +Subproject commit ee7ec22dd32a9864ef316f41e54061142dcc69cd diff --git a/Documentation/Release Process.md b/Documentation/Release Process.md index cea5a468..4f3c9dc9 100644 --- a/Documentation/Release Process.md +++ b/Documentation/Release Process.md @@ -3,7 +3,7 @@ _While tagging a new version of a library and pushing it to CocoaPods is concept # NYTPhotoViewer Release Process - Review [the diff between `master` and `develop`](https://github.com/NYTimes/NYTPhotoViewer/compare/master...develop) to determine which part of the version number to increment, in accordance with [semantic versioning](http://semver.org/). -- Update [the Podspec](https://github.com/NYTimes/NYTPhotoViewer/blob/develop/NYTPhotoViewer.podspec) to the new version number. +- Update [the Podspec](https://github.com/NYTimes/NYTPhotoViewer/blob/develop/NYTPhotoViewer.podspec) and the framework targets in [the Xcode project](https://github.com/NYTimes/NYTPhotoViewer/tree/develop/NYTPhotoViewer.xcodeproj) to the new version number. - Make this change via a pull request to trigger notifications for those who watch the repository. - Using [the diff](https://github.com/NYTimes/NYTPhotoViewer/compare/master...develop), [the commit history](https://github.com/NYTimes/NYTPhotoViewer/commits/develop), and any notes about `develop` which may have been written in the `CHANGELOG`, update [`CHANGELOG.md`](https://github.com/NYTimes/NYTPhotoViewer/blob/develop/CHANGELOG.md) with changes in the new version which may affect library users. - When reviewing the commit history, searching for “Merge pull request” helps find changes which should appear in [the `CHANGELOG`](https://github.com/NYTimes/NYTPhotoViewer/blob/develop/CHANGELOG.md). diff --git a/Example/NYTPhotoViewer-Swift/AppDelegate.swift b/Example-Swift/AppDelegate.swift old mode 100644 new mode 100755 similarity index 100% rename from Example/NYTPhotoViewer-Swift/AppDelegate.swift rename to Example-Swift/AppDelegate.swift diff --git a/Example/NYTPhotoViewer-Swift/Base.lproj/LaunchScreen.xib b/Example-Swift/Base.lproj/LaunchScreen.xib old mode 100644 new mode 100755 similarity index 87% rename from Example/NYTPhotoViewer-Swift/Base.lproj/LaunchScreen.xib rename to Example-Swift/Base.lproj/LaunchScreen.xib index 341ce839..4f32308b --- a/Example/NYTPhotoViewer-Swift/Base.lproj/LaunchScreen.xib +++ b/Example-Swift/Base.lproj/LaunchScreen.xib @@ -1,7 +1,8 @@ - + - + + @@ -14,13 +15,13 @@ diff --git a/Example/NYTPhotoViewer-Swift/Base.lproj/Main.storyboard b/Example-Swift/Base.lproj/Main.storyboard old mode 100644 new mode 100755 similarity index 87% rename from Example/NYTPhotoViewer-Swift/Base.lproj/Main.storyboard rename to Example-Swift/Base.lproj/Main.storyboard index d127b655..617ae09d --- a/Example/NYTPhotoViewer-Swift/Base.lproj/Main.storyboard +++ b/Example-Swift/Base.lproj/Main.storyboard @@ -1,14 +1,15 @@ - + - + + - + @@ -18,7 +19,7 @@ - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Example/NYTPhotoViewer/NYTAppDelegate.m b/Example/NYTPhotoViewer/NYTAppDelegate.m deleted file mode 100644 index 92ce551b..00000000 --- a/Example/NYTPhotoViewer/NYTAppDelegate.m +++ /dev/null @@ -1,46 +0,0 @@ -// -// NYTAppDelegate.m -// ios-photo-viewer -// -// Created by CocoaPods on 02/11/2015. -// Copyright (c) 2014 Brian Capps. All rights reserved. -// - -#import "NYTAppDelegate.h" - -@implementation NYTAppDelegate - -- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions -{ - // Override point for customization after application launch. - return YES; -} - -- (void)applicationWillResignActive:(UIApplication *)application -{ - // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. - // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game. -} - -- (void)applicationDidEnterBackground:(UIApplication *)application -{ - // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. - // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. -} - -- (void)applicationWillEnterForeground:(UIApplication *)application -{ - // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background. -} - -- (void)applicationDidBecomeActive:(UIApplication *)application -{ - // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. -} - -- (void)applicationWillTerminate:(UIApplication *)application -{ - // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. -} - -@end diff --git a/Example/NYTPhotoViewer/en.lproj/InfoPlist.strings b/Example/NYTPhotoViewer/en.lproj/InfoPlist.strings deleted file mode 100644 index 477b28ff..00000000 --- a/Example/NYTPhotoViewer/en.lproj/InfoPlist.strings +++ /dev/null @@ -1,2 +0,0 @@ -/* Localized versions of Info.plist keys */ - diff --git a/Example/NYTPhotoViewer/main.m b/Example/NYTPhotoViewer/main.m deleted file mode 100644 index 00dce9f1..00000000 --- a/Example/NYTPhotoViewer/main.m +++ /dev/null @@ -1,19 +0,0 @@ -// -// main.m -// ios-photo-viewer -// -// Created by Brian Capps on 02/11/2015. -// Copyright (c) 2014 Brian Capps. All rights reserved. -// - -#import - -#import "NYTAppDelegate.h" - -int main(int argc, char * argv[]) -{ - @autoreleasepool { - return UIApplicationMain(argc, argv, nil, NSStringFromClass([NYTAppDelegate class])); - } -} - \ No newline at end of file diff --git a/Example/NYTPhotoViewer/NYTViewController.h b/Example/NYTViewController.h similarity index 100% rename from Example/NYTPhotoViewer/NYTViewController.h rename to Example/NYTViewController.h diff --git a/Example/NYTPhotoViewer/NYTViewController.m b/Example/NYTViewController.m similarity index 98% rename from Example/NYTPhotoViewer/NYTViewController.m rename to Example/NYTViewController.m index 01052c64..28823f09 100644 --- a/Example/NYTPhotoViewer/NYTViewController.m +++ b/Example/NYTViewController.m @@ -32,8 +32,8 @@ @implementation NYTViewController - (IBAction)imageButtonTapped:(id)sender { self.photos = [[self class] newTestPhotos]; - NYTPhotosViewController *photosViewController = [[NYTPhotosViewController alloc] initWithPhotos:self.photos]; - photosViewController.delegate = self; + NYTPhotosViewController *photosViewController = [[NYTPhotosViewController alloc] initWithPhotos:self.photos initialPhoto:nil delegate:self]; + [self presentViewController:photosViewController animated:YES completion:nil]; [self updateImagesOnPhotosViewController:photosViewController afterDelayWithPhotos:self.photos]; diff --git a/Example/Podfile b/Example/Podfile deleted file mode 100644 index 3e8d41bc..00000000 --- a/Example/Podfile +++ /dev/null @@ -1,14 +0,0 @@ -source 'https://github.com/CocoaPods/Specs.git' - -target 'NYTPhotoViewer', :exclusive => true do - pod "NYTPhotoViewer/AnimatedGifSupport", :path => "../" -end - -target 'Tests', :exclusive => true do - pod "NYTPhotoViewer/AnimatedGifSupport", :path => "../" - pod 'OCMock', '~> 3.2' -end - -target 'NYTPhotoViewer-Swift', :exclusive => true do - pod "NYTPhotoViewer/AnimatedGifSupport", :path => "../" -end diff --git a/Example/Podfile.lock b/Example/Podfile.lock deleted file mode 100644 index ba4882f1..00000000 --- a/Example/Podfile.lock +++ /dev/null @@ -1,22 +0,0 @@ -PODS: - - FLAnimatedImage (1.0.10) - - NYTPhotoViewer/AnimatedGifSupport (0.1.2): - - FLAnimatedImage (~> 1.0.8) - - NYTPhotoViewer/Core - - NYTPhotoViewer/Core (0.1.2) - - OCMock (3.2) - -DEPENDENCIES: - - NYTPhotoViewer/AnimatedGifSupport (from `../`) - - OCMock (~> 3.2) - -EXTERNAL SOURCES: - NYTPhotoViewer: - :path: "../" - -SPEC CHECKSUMS: - FLAnimatedImage: e16a1e1cef08e4c509b47e4acbe3923f65c16135 - NYTPhotoViewer: 06876beb4c9bc6f10a59eb8b898c480fd89f7c51 - OCMock: 28def049ef47f996b515a8eeea958be7ccab2dbb - -COCOAPODS: 0.39.0 diff --git a/Example/Pods/FLAnimatedImage/FLAnimatedImage/FLAnimatedImage.h b/Example/Pods/FLAnimatedImage/FLAnimatedImage/FLAnimatedImage.h deleted file mode 100644 index 90634910..00000000 --- a/Example/Pods/FLAnimatedImage/FLAnimatedImage/FLAnimatedImage.h +++ /dev/null @@ -1,82 +0,0 @@ -// -// FLAnimatedImage.h -// Flipboard -// -// Created by Raphael Schaad on 7/8/13. -// Copyright (c) 2013-2015 Flipboard. All rights reserved. -// - - -#import - -// Allow user classes conveniently just importing one header. -#import "FLAnimatedImageView.h" - - -#ifndef NS_DESIGNATED_INITIALIZER - #if __has_attribute(objc_designated_initializer) - #define NS_DESIGNATED_INITIALIZER __attribute((objc_designated_initializer)) - #else - #define NS_DESIGNATED_INITIALIZER - #endif -#endif - -extern const NSTimeInterval kFLAnimatedImageDelayTimeIntervalMinimum; - -// -// An `FLAnimatedImage`'s job is to deliver frames in a highly performant way and works in conjunction with `FLAnimatedImageView`. -// It subclasses `NSObject` and not `UIImage` because it's only an "image" in the sense that a sea lion is a lion. -// It tries to intelligently choose the frame cache size depending on the image and memory situation with the goal to lower CPU usage for smaller ones, lower memory usage for larger ones and always deliver frames for high performant play-back. -// Note: `posterImage`, `size`, `loopCount`, `delayTimes` and `frameCount` don't change after successful initialization. -// -@interface FLAnimatedImage : NSObject - -@property (nonatomic, strong, readonly) UIImage *posterImage; // Guaranteed to be loaded; usually equivalent to `-imageLazilyCachedAtIndex:0` -@property (nonatomic, assign, readonly) CGSize size; // The `.posterImage`'s `.size` - -@property (nonatomic, assign, readonly) NSUInteger loopCount; // 0 means repeating the animation indefinitely -@property (nonatomic, strong, readonly) NSDictionary *delayTimesForIndexes; // Of type `NSTimeInterval` boxed in `NSNumber`s -@property (nonatomic, assign, readonly) NSUInteger frameCount; // Number of valid frames; equal to `[.delayTimes count]` - -@property (nonatomic, assign, readonly) NSUInteger frameCacheSizeCurrent; // Current size of intelligently chosen buffer window; can range in the interval [1..frameCount] -@property (nonatomic, assign) NSUInteger frameCacheSizeMax; // Allow to cap the cache size; 0 means no specific limit (default) - -// Intended to be called from main thread synchronously; will return immediately. -// If the result isn't cached, will return `nil`; the caller should then pause playback, not increment frame counter and keep polling. -// After an initial loading time, depending on `frameCacheSize`, frames should be available immediately from the cache. -- (UIImage *)imageLazilyCachedAtIndex:(NSUInteger)index; - -// Pass either a `UIImage` or an `FLAnimatedImage` and get back its size -+ (CGSize)sizeForImage:(id)image; - -// On success, the initializers return an `FLAnimatedImage` with all fields initialized, on failure they return `nil` and an error will be logged. -- (instancetype)initWithAnimatedGIFData:(NSData *)data NS_DESIGNATED_INITIALIZER; -+ (instancetype)animatedImageWithGIFData:(NSData *)data; - -@property (nonatomic, strong, readonly) NSData *data; // The data the receiver was initialized with; read-only - -@end - -typedef NS_ENUM(NSUInteger, FLLogLevel) { - FLLogLevelNone = 0, - FLLogLevelError, - FLLogLevelWarn, - FLLogLevelInfo, - FLLogLevelDebug, - FLLogLevelVerbose -}; - -@interface FLAnimatedImage (Logging) - -+ (void)setLogBlock:(void (^)(NSString *logString, FLLogLevel logLevel))logBlock logLevel:(FLLogLevel)logLevel; -+ (void)logStringFromBlock:(NSString *(^)(void))stringBlock withLevel:(FLLogLevel)level; - -@end - -#define FLLog(logLevel, format, ...) [FLAnimatedImage logStringFromBlock:^NSString *{ return [NSString stringWithFormat:(format), ## __VA_ARGS__]; } withLevel:(logLevel)] - -@interface FLWeakProxy : NSProxy - -+ (instancetype)weakProxyForObject:(id)targetObject; - -@end diff --git a/Example/Pods/FLAnimatedImage/FLAnimatedImage/FLAnimatedImage.m b/Example/Pods/FLAnimatedImage/FLAnimatedImage/FLAnimatedImage.m deleted file mode 100755 index 64d66bda..00000000 --- a/Example/Pods/FLAnimatedImage/FLAnimatedImage/FLAnimatedImage.m +++ /dev/null @@ -1,793 +0,0 @@ -// -// FLAnimatedImage.m -// Flipboard -// -// Created by Raphael Schaad on 7/8/13. -// Copyright (c) 2013-2015 Flipboard. All rights reserved. -// - - -#import "FLAnimatedImage.h" -#import -#import - - -// From vm_param.h, define for iOS 8.0 or higher to build on device. -#ifndef BYTE_SIZE - #define BYTE_SIZE 8 // byte size in bits -#endif - -#define MEGABYTE (1024 * 1024) - -// This is how the fastest browsers do it as per 2012: http://nullsleep.tumblr.com/post/16524517190/animated-gif-minimum-frame-delay-browser-compatibility -const NSTimeInterval kFLAnimatedImageDelayTimeIntervalMinimum = 0.02; - -// An animated image's data size (dimensions * frameCount) category; its value is the max allowed memory (in MB). -// E.g.: A 100x200px GIF with 30 frames is ~2.3MB in our pixel format and would fall into the `FLAnimatedImageDataSizeCategoryAll` category. -typedef NS_ENUM(NSUInteger, FLAnimatedImageDataSizeCategory) { - FLAnimatedImageDataSizeCategoryAll = 10, // All frames permanently in memory (be nice to the CPU) - FLAnimatedImageDataSizeCategoryDefault = 75, // A frame cache of default size in memory (usually real-time performance and keeping low memory profile) - FLAnimatedImageDataSizeCategoryOnDemand = 250, // Only keep one frame at the time in memory (easier on memory, slowest performance) - FLAnimatedImageDataSizeCategoryUnsupported // Even for one frame too large, computer says no. -}; - -typedef NS_ENUM(NSUInteger, FLAnimatedImageFrameCacheSize) { - FLAnimatedImageFrameCacheSizeNoLimit = 0, // 0 means no specific limit - FLAnimatedImageFrameCacheSizeLowMemory = 1, // The minimum frame cache size; this will produce frames on-demand. - FLAnimatedImageFrameCacheSizeGrowAfterMemoryWarning = 2, // If we can produce the frames faster than we consume, one frame ahead will already result in a stutter-free playback. - FLAnimatedImageFrameCacheSizeDefault = 5 // Build up a comfy buffer window to cope with CPU hiccups etc. -}; - - -#if defined(DEBUG) && DEBUG -@protocol FLAnimatedImageDebugDelegate -@optional -- (void)debug_animatedImage:(FLAnimatedImage *)animatedImage didUpdateCachedFrames:(NSIndexSet *)indexesOfFramesInCache; -- (void)debug_animatedImage:(FLAnimatedImage *)animatedImage didRequestCachedFrame:(NSUInteger)index; -- (CGFloat)debug_animatedImagePredrawingSlowdownFactor:(FLAnimatedImage *)animatedImage; -@end -#endif - - -@interface FLAnimatedImage () - -@property (nonatomic, assign, readonly) NSUInteger frameCacheSizeOptimal; // The optimal number of frames to cache based on image size & number of frames; never changes -@property (nonatomic, assign) NSUInteger frameCacheSizeMaxInternal; // Allow to cap the cache size e.g. when memory warnings occur; 0 means no specific limit (default) -@property (nonatomic, assign) NSUInteger requestedFrameIndex; // Most recently requested frame index -@property (nonatomic, assign, readonly) NSUInteger posterImageFrameIndex; // Index of non-purgable poster image; never changes -@property (nonatomic, strong, readonly) NSMutableDictionary *cachedFramesForIndexes; -@property (nonatomic, strong, readonly) NSMutableIndexSet *cachedFrameIndexes; // Indexes of cached frames -@property (nonatomic, strong, readonly) NSMutableIndexSet *requestedFrameIndexes; // Indexes of frames that are currently produced in the background -@property (nonatomic, strong, readonly) NSIndexSet *allFramesIndexSet; // Default index set with the full range of indexes; never changes -@property (nonatomic, assign) NSUInteger memoryWarningCount; -@property (nonatomic, strong, readonly) dispatch_queue_t serialQueue; -@property (nonatomic, strong, readonly) __attribute__((NSObject)) CGImageSourceRef imageSource; - -// The weak proxy is used to break retain cycles with delayed actions from memory warnings. -// We are lying about the actual type here to gain static type checking and eliminate casts. -// The actual type of the object is `FLWeakProxy`. -@property (nonatomic, strong, readonly) FLAnimatedImage *weakProxy; - -#if defined(DEBUG) && DEBUG -@property (nonatomic, weak) id debug_delegate; -#endif - -@end - - -// For custom dispatching of memory warnings to avoid deallocation races since NSNotificationCenter doesn't retain objects it is notifying. -static NSHashTable *allAnimatedImagesWeak; - -@implementation FLAnimatedImage - -#pragma mark - Accessors -#pragma mark Public - -// This is the definite value the frame cache needs to size itself to. -- (NSUInteger)frameCacheSizeCurrent -{ - NSUInteger frameCacheSizeCurrent = self.frameCacheSizeOptimal; - - // If set, respect the caps. - if (self.frameCacheSizeMax > FLAnimatedImageFrameCacheSizeNoLimit) { - frameCacheSizeCurrent = MIN(frameCacheSizeCurrent, self.frameCacheSizeMax); - } - - if (self.frameCacheSizeMaxInternal > FLAnimatedImageFrameCacheSizeNoLimit) { - frameCacheSizeCurrent = MIN(frameCacheSizeCurrent, self.frameCacheSizeMaxInternal); - } - - return frameCacheSizeCurrent; -} - - -- (void)setFrameCacheSizeMax:(NSUInteger)frameCacheSizeMax -{ - if (_frameCacheSizeMax != frameCacheSizeMax) { - - // Remember whether the new cap will cause the current cache size to shrink; then we'll make sure to purge from the cache if needed. - BOOL willFrameCacheSizeShrink = (frameCacheSizeMax < self.frameCacheSizeCurrent); - - // Update the value - _frameCacheSizeMax = frameCacheSizeMax; - - if (willFrameCacheSizeShrink) { - [self purgeFrameCacheIfNeeded]; - } - } -} - - -#pragma mark Private - -- (void)setFrameCacheSizeMaxInternal:(NSUInteger)frameCacheSizeMaxInternal -{ - if (_frameCacheSizeMaxInternal != frameCacheSizeMaxInternal) { - - // Remember whether the new cap will cause the current cache size to shrink; then we'll make sure to purge from the cache if needed. - BOOL willFrameCacheSizeShrink = (frameCacheSizeMaxInternal < self.frameCacheSizeCurrent); - - // Update the value - _frameCacheSizeMaxInternal = frameCacheSizeMaxInternal; - - if (willFrameCacheSizeShrink) { - [self purgeFrameCacheIfNeeded]; - } - } -} - - -#pragma mark - Life Cycle - -+ (void)initialize -{ - if (self == [FLAnimatedImage class]) { - // UIKit memory warning notification handler shared by all of the instances - allAnimatedImagesWeak = [NSHashTable weakObjectsHashTable]; - - [[NSNotificationCenter defaultCenter] addObserverForName:UIApplicationDidReceiveMemoryWarningNotification object:nil queue:nil usingBlock:^(NSNotification *note) { - // UIKit notifications are posted on the main thread. didReceiveMemoryWarning: is expecting the main run loop, and we don't lock on allAnimatedImagesWeak - NSAssert([NSThread isMainThread], @"Received memory warning on non-main thread"); - // Get a strong reference to all of the images. If an instance is returned in this array, it is still live and has not entered dealloc. - // Note that FLAnimatedImages can be created on any thread, so the hash table must be locked. - NSArray *images = nil; - @synchronized(allAnimatedImagesWeak) { - images = [[allAnimatedImagesWeak allObjects] copy]; - } - // Now issue notifications to all of the images while holding a strong reference to them - [images makeObjectsPerformSelector:@selector(didReceiveMemoryWarning:) withObject:note]; - }]; - } -} - - -- (instancetype)init -{ - FLAnimatedImage *animatedImage = [self initWithAnimatedGIFData:nil]; - if (!animatedImage) { - FLLog(FLLogLevelError, @"Use `-initWithAnimatedGIFData:` and supply the animated GIF data as an argument to initialize an object of type `FLAnimatedImage`."); - } - return animatedImage; -} - - -- (instancetype)initWithAnimatedGIFData:(NSData *)data -{ - // Early return if no data supplied! - BOOL hasData = ([data length] > 0); - if (!hasData) { - FLLog(FLLogLevelError, @"No animated GIF data supplied."); - return nil; - } - - self = [super init]; - if (self) { - // Do one-time initializations of `readonly` properties directly to ivar to prevent implicit actions and avoid need for private `readwrite` property overrides. - - // Keep a strong reference to `data` and expose it read-only publicly. - // However, we will use the `_imageSource` as handler to the image data throughout our life cycle. - _data = data; - - // Initialize internal data structures - _cachedFramesForIndexes = [[NSMutableDictionary alloc] init]; - _cachedFrameIndexes = [[NSMutableIndexSet alloc] init]; - _requestedFrameIndexes = [[NSMutableIndexSet alloc] init]; - - // Note: We could leverage `CGImageSourceCreateWithURL` too to add a second initializer `-initWithAnimatedGIFContentsOfURL:`. - _imageSource = CGImageSourceCreateWithData((__bridge CFDataRef)data, - (__bridge CFDictionaryRef)@{(NSString *)kCGImageSourceShouldCache: @NO}); - // Early return on failure! - if (!_imageSource) { - FLLog(FLLogLevelError, @"Failed to `CGImageSourceCreateWithData` for animated GIF data %@", data); - return nil; - } - - // Early return if not GIF! - CFStringRef imageSourceContainerType = CGImageSourceGetType(_imageSource); - BOOL isGIFData = UTTypeConformsTo(imageSourceContainerType, kUTTypeGIF); - if (!isGIFData) { - FLLog(FLLogLevelError, @"Supplied data is of type %@ and doesn't seem to be GIF data %@", imageSourceContainerType, data); - return nil; - } - - // Get `LoopCount` - // Note: 0 means repeating the animation indefinitely. - // Image properties example: - // { - // FileSize = 314446; - // "{GIF}" = { - // HasGlobalColorMap = 1; - // LoopCount = 0; - // }; - // } - NSDictionary *imageProperties = (__bridge_transfer NSDictionary *)CGImageSourceCopyProperties(_imageSource, NULL); - _loopCount = [[[imageProperties objectForKey:(id)kCGImagePropertyGIFDictionary] objectForKey:(id)kCGImagePropertyGIFLoopCount] unsignedIntegerValue]; - - // Iterate through frame images - size_t imageCount = CGImageSourceGetCount(_imageSource); - NSUInteger skippedFrameCount = 0; - NSMutableDictionary *delayTimesForIndexesMutable = [NSMutableDictionary dictionaryWithCapacity:imageCount]; - for (size_t i = 0; i < imageCount; i++) { - CGImageRef frameImageRef = CGImageSourceCreateImageAtIndex(_imageSource, i, NULL); - if (frameImageRef) { - UIImage *frameImage = [UIImage imageWithCGImage:frameImageRef]; - // Check for valid `frameImage` before parsing its properties as frames can be corrupted (and `frameImage` even `nil` when `frameImageRef` was valid). - if (frameImage) { - // Set poster image - if (!self.posterImage) { - _posterImage = frameImage; - // Set its size to proxy our size. - _size = _posterImage.size; - // Remember index of poster image so we never purge it; also add it to the cache. - _posterImageFrameIndex = i; - [self.cachedFramesForIndexes setObject:self.posterImage forKey:@(self.posterImageFrameIndex)]; - [self.cachedFrameIndexes addIndex:self.posterImageFrameIndex]; - } - - // Get `DelayTime` - // Note: It's not in (1/100) of a second like still falsely described in the documentation as per iOS 8 (rdar://19507384) but in seconds stored as `kCFNumberFloat32Type`. - // Frame properties example: - // { - // ColorModel = RGB; - // Depth = 8; - // PixelHeight = 960; - // PixelWidth = 640; - // "{GIF}" = { - // DelayTime = "0.4"; - // UnclampedDelayTime = "0.4"; - // }; - // } - - NSDictionary *frameProperties = (__bridge_transfer NSDictionary *)CGImageSourceCopyPropertiesAtIndex(_imageSource, i, NULL); - NSDictionary *framePropertiesGIF = [frameProperties objectForKey:(id)kCGImagePropertyGIFDictionary]; - - // Try to use the unclamped delay time; fall back to the normal delay time. - NSNumber *delayTime = [framePropertiesGIF objectForKey:(id)kCGImagePropertyGIFUnclampedDelayTime]; - if (!delayTime) { - delayTime = [framePropertiesGIF objectForKey:(id)kCGImagePropertyGIFDelayTime]; - } - // If we don't get a delay time from the properties, fall back to `kDelayTimeIntervalDefault` or carry over the preceding frame's value. - const NSTimeInterval kDelayTimeIntervalDefault = 0.1; - if (!delayTime) { - if (i == 0) { - FLLog(FLLogLevelInfo, @"Falling back to default delay time for first frame %@ because none found in GIF properties %@", frameImage, frameProperties); - delayTime = @(kDelayTimeIntervalDefault); - } else { - FLLog(FLLogLevelInfo, @"Falling back to preceding delay time for frame %zu %@ because none found in GIF properties %@", i, frameImage, frameProperties); - delayTime = delayTimesForIndexesMutable[@(i - 1)]; - } - } - // Support frame delays as low as `kFLAnimatedImageDelayTimeIntervalMinimum`, with anything below being rounded up to `kDelayTimeIntervalDefault` for legacy compatibility. - // To support the minimum even when rounding errors occur, use an epsilon when comparing. We downcast to float because that's what we get for delayTime from ImageIO. - if ([delayTime floatValue] < ((float)kFLAnimatedImageDelayTimeIntervalMinimum - FLT_EPSILON)) { - FLLog(FLLogLevelInfo, @"Rounding frame %zu's `delayTime` from %f up to default %f (minimum supported: %f).", i, [delayTime floatValue], kDelayTimeIntervalDefault, kFLAnimatedImageDelayTimeIntervalMinimum); - delayTime = @(kDelayTimeIntervalDefault); - } - delayTimesForIndexesMutable[@(i)] = delayTime; - } else { - skippedFrameCount++; - FLLog(FLLogLevelInfo, @"Dropping frame %zu because valid `CGImageRef` %@ did result in `nil`-`UIImage`.", i, frameImageRef); - } - CFRelease(frameImageRef); - } else { - skippedFrameCount++; - FLLog(FLLogLevelInfo, @"Dropping frame %zu because failed to `CGImageSourceCreateImageAtIndex` with image source %@", i, _imageSource); - } - } - _delayTimesForIndexes = [delayTimesForIndexesMutable copy]; - _frameCount = imageCount; - - if (self.frameCount == 0) { - FLLog(FLLogLevelInfo, @"Failed to create any valid frames for GIF with properties %@", imageProperties); - return nil; - } else if (self.frameCount == 1) { - // Warn when we only have a single frame but return a valid GIF. - FLLog(FLLogLevelInfo, @"Created valid GIF but with only a single frame. Image properties: %@", imageProperties); - } else { - // We have multiple frames, rock on! - } - - // Calculate the optimal frame cache size: try choosing a larger buffer window depending on the predicted image size. - // It's only dependent on the image size & number of frames and never changes. - CGFloat animatedImageDataSize = CGImageGetBytesPerRow(self.posterImage.CGImage) * self.size.height * (self.frameCount - skippedFrameCount) / MEGABYTE; - if (animatedImageDataSize <= FLAnimatedImageDataSizeCategoryAll) { - _frameCacheSizeOptimal = self.frameCount; - } else if (animatedImageDataSize <= FLAnimatedImageDataSizeCategoryDefault) { - // This value doesn't depend on device memory much because if we're not keeping all frames in memory we will always be decoding 1 frame up ahead per 1 frame that gets played and at this point we might as well just keep a small buffer just large enough to keep from running out of frames. - _frameCacheSizeOptimal = FLAnimatedImageFrameCacheSizeDefault; - } else { - // The predicted size exceeds the limits to build up a cache and we go into low memory mode from the beginning. - _frameCacheSizeOptimal = FLAnimatedImageFrameCacheSizeLowMemory; - } - // In any case, cap the optimal cache size at the frame count. - _frameCacheSizeOptimal = MIN(_frameCacheSizeOptimal, self.frameCount); - - // Convenience/minor performance optimization; keep an index set handy with the full range to return in `-frameIndexesToCache`. - _allFramesIndexSet = [[NSIndexSet alloc] initWithIndexesInRange:NSMakeRange(0, self.frameCount)]; - - // See the property declarations for descriptions. - _weakProxy = (id)[FLWeakProxy weakProxyForObject:self]; - - // Register this instance in the weak table for memory notifications. The NSHashTable will clean up after itself when we're gone. - // Note that FLAnimatedImages can be created on any thread, so the hash table must be locked. - @synchronized(allAnimatedImagesWeak) { - [allAnimatedImagesWeak addObject:self]; - } - } - return self; -} - - -+ (instancetype)animatedImageWithGIFData:(NSData *)data -{ - FLAnimatedImage *animatedImage = [[FLAnimatedImage alloc] initWithAnimatedGIFData:data]; - return animatedImage; -} - - -- (void)dealloc -{ - if (_weakProxy) { - [NSObject cancelPreviousPerformRequestsWithTarget:_weakProxy]; - } - - if (_imageSource) { - CFRelease(_imageSource); - } -} - - -#pragma mark - Public Methods - -// See header for more details. -// Note: both consumer and producer are throttled: consumer by frame timings and producer by the available memory (max buffer window size). -- (UIImage *)imageLazilyCachedAtIndex:(NSUInteger)index -{ - // Early return if the requested index is beyond bounds. - // Note: We're comparing an index with a count and need to bail on greater than or equal to. - if (index >= self.frameCount) { - FLLog(FLLogLevelWarn, @"Skipping requested frame %lu beyond bounds (total frame count: %lu) for animated image: %@", (unsigned long)index, (unsigned long)self.frameCount, self); - return nil; - } - - // Remember requested frame index, this influences what we should cache next. - self.requestedFrameIndex = index; -#if defined(DEBUG) && DEBUG - if ([self.debug_delegate respondsToSelector:@selector(debug_animatedImage:didRequestCachedFrame:)]) { - [self.debug_delegate debug_animatedImage:self didRequestCachedFrame:index]; - } -#endif - - // Quick check to avoid doing any work if we already have all possible frames cached, a common case. - if ([self.cachedFrameIndexes count] < self.frameCount) { - // If we have frames that should be cached but aren't and aren't requested yet, request them. - // Exclude existing cached frames, frames already requested, and specially cached poster image. - NSMutableIndexSet *frameIndexesToAddToCacheMutable = [self frameIndexesToCache]; - [frameIndexesToAddToCacheMutable removeIndexes:self.cachedFrameIndexes]; - [frameIndexesToAddToCacheMutable removeIndexes:self.requestedFrameIndexes]; - [frameIndexesToAddToCacheMutable removeIndex:self.posterImageFrameIndex]; - NSIndexSet *frameIndexesToAddToCache = [frameIndexesToAddToCacheMutable copy]; - - // Asynchronously add frames to our cache. - if ([frameIndexesToAddToCache count] > 0) { - [self addFrameIndexesToCache:frameIndexesToAddToCache]; - } - } - - // Get the specified image. - UIImage *image = self.cachedFramesForIndexes[@(index)]; - - // Purge if needed based on the current playhead position. - [self purgeFrameCacheIfNeeded]; - - return image; -} - - -// Only called once from `-imageLazilyCachedAtIndex` but factored into its own method for logical grouping. -- (void)addFrameIndexesToCache:(NSIndexSet *)frameIndexesToAddToCache -{ - // Order matters. First, iterate over the indexes starting from the requested frame index. - // Then, if there are any indexes before the requested frame index, do those. - NSRange firstRange = NSMakeRange(self.requestedFrameIndex, self.frameCount - self.requestedFrameIndex); - NSRange secondRange = NSMakeRange(0, self.requestedFrameIndex); - if (firstRange.length + secondRange.length != self.frameCount) { - FLLog(FLLogLevelWarn, @"Two-part frame cache range doesn't equal full range."); - } - - // Add to the requested list before we actually kick them off, so they don't get into the queue twice. - [self.requestedFrameIndexes addIndexes:frameIndexesToAddToCache]; - - // Lazily create dedicated isolation queue. - if (!self.serialQueue) { - _serialQueue = dispatch_queue_create("com.flipboard.framecachingqueue", DISPATCH_QUEUE_SERIAL); - } - - // Start streaming requested frames in the background into the cache. - // Avoid capturing self in the block as there's no reason to keep doing work if the animated image went away. - FLAnimatedImage * __weak weakSelf = self; - dispatch_async(self.serialQueue, ^{ - // Produce and cache next needed frame. - void (^frameRangeBlock)(NSRange, BOOL *) = ^(NSRange range, BOOL *stop) { - // Iterate through contiguous indexes; can be faster than `enumerateIndexesInRange:options:usingBlock:`. - for (NSUInteger i = range.location; i < NSMaxRange(range); i++) { -#if defined(DEBUG) && DEBUG - CFTimeInterval predrawBeginTime = CACurrentMediaTime(); -#endif - UIImage *image = [weakSelf predrawnImageAtIndex:i]; -#if defined(DEBUG) && DEBUG - CFTimeInterval predrawDuration = CACurrentMediaTime() - predrawBeginTime; - CFTimeInterval slowdownDuration = 0.0; - if ([self.debug_delegate respondsToSelector:@selector(debug_animatedImagePredrawingSlowdownFactor:)]) { - CGFloat predrawingSlowdownFactor = [self.debug_delegate debug_animatedImagePredrawingSlowdownFactor:self]; - slowdownDuration = predrawDuration * predrawingSlowdownFactor - predrawDuration; - [NSThread sleepForTimeInterval:slowdownDuration]; - } - FLLog(FLLogLevelVerbose, @"Predrew frame %lu in %f ms for animated image: %@", (unsigned long)i, (predrawDuration + slowdownDuration) * 1000, self); -#endif - // The results get returned one by one as soon as they're ready (and not in batch). - // The benefits of having the first frames as quick as possible outweigh building up a buffer to cope with potential hiccups when the CPU suddenly gets busy. - if (image && weakSelf) { - dispatch_async(dispatch_get_main_queue(), ^{ - weakSelf.cachedFramesForIndexes[@(i)] = image; - [weakSelf.cachedFrameIndexes addIndex:i]; - [weakSelf.requestedFrameIndexes removeIndex:i]; -#if defined(DEBUG) && DEBUG - if ([weakSelf.debug_delegate respondsToSelector:@selector(debug_animatedImage:didUpdateCachedFrames:)]) { - [weakSelf.debug_delegate debug_animatedImage:weakSelf didUpdateCachedFrames:weakSelf.cachedFrameIndexes]; - } -#endif - }); - } - } - }; - - [frameIndexesToAddToCache enumerateRangesInRange:firstRange options:0 usingBlock:frameRangeBlock]; - [frameIndexesToAddToCache enumerateRangesInRange:secondRange options:0 usingBlock:frameRangeBlock]; - }); -} - - -+ (CGSize)sizeForImage:(id)image -{ - CGSize imageSize = CGSizeZero; - - // Early return for nil - if (!image) { - return imageSize; - } - - if ([image isKindOfClass:[UIImage class]]) { - UIImage *uiImage = (UIImage *)image; - imageSize = uiImage.size; - } else if ([image isKindOfClass:[FLAnimatedImage class]]) { - FLAnimatedImage *animatedImage = (FLAnimatedImage *)image; - imageSize = animatedImage.size; - } else { - // Bear trap to capture bad images; we have seen crashers cropping up on iOS 7. - FLLog(FLLogLevelError, @"`image` isn't of expected types `UIImage` or `FLAnimatedImage`: %@", image); - } - - return imageSize; -} - - -#pragma mark - Private Methods -#pragma mark Frame Loading - -- (UIImage *)predrawnImageAtIndex:(NSUInteger)index -{ - // It's very important to use the cached `_imageSource` since the random access to a frame with `CGImageSourceCreateImageAtIndex` turns from an O(1) into an O(n) operation when re-initializing the image source every time. - CGImageRef imageRef = CGImageSourceCreateImageAtIndex(_imageSource, index, NULL); - UIImage *image = [UIImage imageWithCGImage:imageRef]; - CFRelease(imageRef); - - // Loading in the image object is only half the work, the displaying image view would still have to synchronosly wait and decode the image, so we go ahead and do that here on the background thread. - image = [[self class] predrawnImageFromImage:image]; - - return image; -} - - -#pragma mark Frame Caching - -- (NSMutableIndexSet *)frameIndexesToCache -{ - NSMutableIndexSet *indexesToCache = nil; - // Quick check to avoid building the index set if the number of frames to cache equals the total frame count. - if (self.frameCacheSizeCurrent == self.frameCount) { - indexesToCache = [self.allFramesIndexSet mutableCopy]; - } else { - indexesToCache = [[NSMutableIndexSet alloc] init]; - - // Add indexes to the set in two separate blocks- the first starting from the requested frame index, up to the limit or the end. - // The second, if needed, the remaining number of frames beginning at index zero. - NSUInteger firstLength = MIN(self.frameCacheSizeCurrent, self.frameCount - self.requestedFrameIndex); - NSRange firstRange = NSMakeRange(self.requestedFrameIndex, firstLength); - [indexesToCache addIndexesInRange:firstRange]; - NSUInteger secondLength = self.frameCacheSizeCurrent - firstLength; - if (secondLength > 0) { - NSRange secondRange = NSMakeRange(0, secondLength); - [indexesToCache addIndexesInRange:secondRange]; - } - // Double check our math, before we add the poster image index which may increase it by one. - if ([indexesToCache count] != self.frameCacheSizeCurrent) { - FLLog(FLLogLevelWarn, @"Number of frames to cache doesn't equal expected cache size."); - } - - [indexesToCache addIndex:self.posterImageFrameIndex]; - } - - return indexesToCache; -} - - -- (void)purgeFrameCacheIfNeeded -{ - // Purge frames that are currently cached but don't need to be. - // But not if we're still under the number of frames to cache. - // This way, if all frames are allowed to be cached (the common case), we can skip all the `NSIndexSet` math below. - if ([self.cachedFrameIndexes count] > self.frameCacheSizeCurrent) { - NSMutableIndexSet *indexesToPurge = [self.cachedFrameIndexes mutableCopy]; - [indexesToPurge removeIndexes:[self frameIndexesToCache]]; - [indexesToPurge enumerateRangesUsingBlock:^(NSRange range, BOOL *stop) { - // Iterate through contiguous indexes; can be faster than `enumerateIndexesInRange:options:usingBlock:`. - for (NSUInteger i = range.location; i < NSMaxRange(range); i++) { - [self.cachedFrameIndexes removeIndex:i]; - [self.cachedFramesForIndexes removeObjectForKey:@(i)]; - // Note: Don't `CGImageSourceRemoveCacheAtIndex` on the image source for frames that we don't want cached any longer to maintain O(1) time access. -#if defined(DEBUG) && DEBUG - if ([self.debug_delegate respondsToSelector:@selector(debug_animatedImage:didUpdateCachedFrames:)]) { - dispatch_async(dispatch_get_main_queue(), ^{ - [self.debug_delegate debug_animatedImage:self didUpdateCachedFrames:self.cachedFrameIndexes]; - }); - } -#endif - } - }]; - } -} - - -- (void)growFrameCacheSizeAfterMemoryWarning:(NSNumber *)frameCacheSize -{ - self.frameCacheSizeMaxInternal = [frameCacheSize unsignedIntegerValue]; - FLLog(FLLogLevelDebug, @"Grew frame cache size max to %lu after memory warning for animated image: %@", (unsigned long)self.frameCacheSizeMaxInternal, self); - - // Schedule resetting the frame cache size max completely after a while. - const NSTimeInterval kResetDelay = 3.0; - [self.weakProxy performSelector:@selector(resetFrameCacheSizeMaxInternal) withObject:nil afterDelay:kResetDelay]; -} - - -- (void)resetFrameCacheSizeMaxInternal -{ - self.frameCacheSizeMaxInternal = FLAnimatedImageFrameCacheSizeNoLimit; - FLLog(FLLogLevelDebug, @"Reset frame cache size max (current frame cache size: %lu) for animated image: %@", (unsigned long)self.frameCacheSizeCurrent, self); -} - - -#pragma mark System Memory Warnings Notification Handler - -- (void)didReceiveMemoryWarning:(NSNotification *)notification -{ - self.memoryWarningCount++; - - // If we were about to grow larger, but got rapped on our knuckles by the system again, cancel. - [NSObject cancelPreviousPerformRequestsWithTarget:self.weakProxy selector:@selector(growFrameCacheSizeAfterMemoryWarning:) object:@(FLAnimatedImageFrameCacheSizeGrowAfterMemoryWarning)]; - [NSObject cancelPreviousPerformRequestsWithTarget:self.weakProxy selector:@selector(resetFrameCacheSizeMaxInternal) object:nil]; - - // Go down to the minimum and by that implicitly immediately purge from the cache if needed to not get jettisoned by the system and start producing frames on-demand. - FLLog(FLLogLevelDebug, @"Attempt setting frame cache size max to %lu (previous was %lu) after memory warning #%lu for animated image: %@", (unsigned long)FLAnimatedImageFrameCacheSizeLowMemory, (unsigned long)self.frameCacheSizeMaxInternal, (unsigned long)self.memoryWarningCount, self); - self.frameCacheSizeMaxInternal = FLAnimatedImageFrameCacheSizeLowMemory; - - // Schedule growing larger again after a while, but cap our attempts to prevent a periodic sawtooth wave (ramps upward and then sharply drops) of memory usage. - // - // [mem]^ (2) (5) (6) 1) Loading frames for the first time - // (*)| , , , 2) Mem warning #1; purge cache - // | /| (4)/| /| 3) Grow cache size a bit after a while, if no mem warning occurs - // | / | _/ | _/ | 4) Try to grow cache size back to optimum after a while, if no mem warning occurs - // |(1)/ |_/ |/ |__(7) 5) Mem warning #2; purge cache - // |__/ (3) 6) After repetition of (3) and (4), mem warning #3; purge cache - // +----------------------> 7) After 3 mem warnings, stay at minimum cache size - // [t] - // *) The mem high water mark before we get warned might change for every cycle. - // - const NSUInteger kGrowAttemptsMax = 2; - const NSTimeInterval kGrowDelay = 2.0; - if ((self.memoryWarningCount - 1) <= kGrowAttemptsMax) { - [self.weakProxy performSelector:@selector(growFrameCacheSizeAfterMemoryWarning:) withObject:@(FLAnimatedImageFrameCacheSizeGrowAfterMemoryWarning) afterDelay:kGrowDelay]; - } - - // Note: It's not possible to get the level of a memory warning with a public API: http://stackoverflow.com/questions/2915247/iphone-os-memory-warnings-what-do-the-different-levels-mean/2915477#2915477 -} - - -#pragma mark Image Decoding - -// Decodes the image's data and draws it off-screen fully in memory; it's thread-safe and hence can be called on a background thread. -// On success, the returned object is a new `UIImage` instance with the same content as the one passed in. -// On failure, the returned object is the unchanged passed in one; the data will not be predrawn in memory though and an error will be logged. -// First inspired by & good Karma to: https://gist.github.com/steipete/1144242 -+ (UIImage *)predrawnImageFromImage:(UIImage *)imageToPredraw -{ - // Always use a device RGB color space for simplicity and predictability what will be going on. - CGColorSpaceRef colorSpaceDeviceRGBRef = CGColorSpaceCreateDeviceRGB(); - // Early return on failure! - if (!colorSpaceDeviceRGBRef) { - FLLog(FLLogLevelError, @"Failed to `CGColorSpaceCreateDeviceRGB` for image %@", imageToPredraw); - return imageToPredraw; - } - - // Even when the image doesn't have transparency, we have to add the extra channel because Quartz doesn't support other pixel formats than 32 bpp/8 bpc for RGB: - // kCGImageAlphaNoneSkipFirst, kCGImageAlphaNoneSkipLast, kCGImageAlphaPremultipliedFirst, kCGImageAlphaPremultipliedLast - // (source: docs "Quartz 2D Programming Guide > Graphics Contexts > Table 2-1 Pixel formats supported for bitmap graphics contexts") - size_t numberOfComponents = CGColorSpaceGetNumberOfComponents(colorSpaceDeviceRGBRef) + 1; // 4: RGB + A - - // "In iOS 4.0 and later, and OS X v10.6 and later, you can pass NULL if you want Quartz to allocate memory for the bitmap." (source: docs) - void *data = NULL; - size_t width = imageToPredraw.size.width; - size_t height = imageToPredraw.size.height; - size_t bitsPerComponent = CHAR_BIT; - - size_t bitsPerPixel = (bitsPerComponent * numberOfComponents); - size_t bytesPerPixel = (bitsPerPixel / BYTE_SIZE); - size_t bytesPerRow = (bytesPerPixel * width); - - CGBitmapInfo bitmapInfo = kCGBitmapByteOrderDefault; - - CGImageAlphaInfo alphaInfo = CGImageGetAlphaInfo(imageToPredraw.CGImage); - // If the alpha info doesn't match to one of the supported formats (see above), pick a reasonable supported one. - // "For bitmaps created in iOS 3.2 and later, the drawing environment uses the premultiplied ARGB format to store the bitmap data." (source: docs) - if (alphaInfo == kCGImageAlphaNone || alphaInfo == kCGImageAlphaOnly) { - alphaInfo = kCGImageAlphaNoneSkipFirst; - } else if (alphaInfo == kCGImageAlphaFirst) { - alphaInfo = kCGImageAlphaPremultipliedFirst; - } else if (alphaInfo == kCGImageAlphaLast) { - alphaInfo = kCGImageAlphaPremultipliedLast; - } - // "The constants for specifying the alpha channel information are declared with the `CGImageAlphaInfo` type but can be passed to this parameter safely." (source: docs) - bitmapInfo |= alphaInfo; - - // Create our own graphics context to draw to; `UIGraphicsGetCurrentContext`/`UIGraphicsBeginImageContextWithOptions` doesn't create a new context but returns the current one which isn't thread-safe (e.g. main thread could use it at the same time). - // Note: It's not worth caching the bitmap context for multiple frames ("unique key" would be `width`, `height` and `hasAlpha`), it's ~50% slower. Time spent in libRIP's `CGSBlendBGRA8888toARGB8888` suddenly shoots up -- not sure why. - CGContextRef bitmapContextRef = CGBitmapContextCreate(data, width, height, bitsPerComponent, bytesPerRow, colorSpaceDeviceRGBRef, bitmapInfo); - CGColorSpaceRelease(colorSpaceDeviceRGBRef); - // Early return on failure! - if (!bitmapContextRef) { - FLLog(FLLogLevelError, @"Failed to `CGBitmapContextCreate` with color space %@ and parameters (width: %zu height: %zu bitsPerComponent: %zu bytesPerRow: %zu) for image %@", colorSpaceDeviceRGBRef, width, height, bitsPerComponent, bytesPerRow, imageToPredraw); - return imageToPredraw; - } - - // Draw image in bitmap context and create image by preserving receiver's properties. - CGContextDrawImage(bitmapContextRef, CGRectMake(0.0, 0.0, imageToPredraw.size.width, imageToPredraw.size.height), imageToPredraw.CGImage); - CGImageRef predrawnImageRef = CGBitmapContextCreateImage(bitmapContextRef); - UIImage *predrawnImage = [UIImage imageWithCGImage:predrawnImageRef scale:imageToPredraw.scale orientation:imageToPredraw.imageOrientation]; - CGImageRelease(predrawnImageRef); - CGContextRelease(bitmapContextRef); - - // Early return on failure! - if (!predrawnImage) { - FLLog(FLLogLevelError, @"Failed to `imageWithCGImage:scale:orientation:` with image ref %@ created with color space %@ and bitmap context %@ and properties and properties (scale: %f orientation: %ld) for image %@", predrawnImageRef, colorSpaceDeviceRGBRef, bitmapContextRef, imageToPredraw.scale, (long)imageToPredraw.imageOrientation, imageToPredraw); - return imageToPredraw; - } - - return predrawnImage; -} - - -#pragma mark - Description - -- (NSString *)description -{ - NSString *description = [super description]; - - description = [description stringByAppendingFormat:@" size=%@", NSStringFromCGSize(self.size)]; - description = [description stringByAppendingFormat:@" frameCount=%lu", (unsigned long)self.frameCount]; - - return description; -} - - -@end - -#pragma mark - Logging - -@implementation FLAnimatedImage (Logging) - -static void (^_logBlock)(NSString *logString, FLLogLevel logLevel) = nil; -static FLLogLevel _logLevel; - -+ (void)setLogBlock:(void (^)(NSString *logString, FLLogLevel logLevel))logBlock logLevel:(FLLogLevel)logLevel -{ - _logBlock = logBlock; - _logLevel = logLevel; -} - -+ (void)logStringFromBlock:(NSString *(^)(void))stringBlock withLevel:(FLLogLevel)level -{ - if (level <= _logLevel && _logBlock && stringBlock) { - _logBlock(stringBlock(), level); - } -} - -@end - - -#pragma mark - FLWeakProxy - -@interface FLWeakProxy () - -@property (nonatomic, weak) id target; - -@end - - -@implementation FLWeakProxy - -#pragma mark Life Cycle - -// This is the designated creation method of an `FLWeakProxy` and -// as a subclass of `NSProxy` it doesn't respond to or need `-init`. -+ (instancetype)weakProxyForObject:(id)targetObject -{ - FLWeakProxy *weakProxy = [FLWeakProxy alloc]; - weakProxy.target = targetObject; - return weakProxy; -} - - -#pragma mark Forwarding Messages - -- (id)forwardingTargetForSelector:(SEL)selector -{ - // Keep it lightweight: access the ivar directly - return _target; -} - - -#pragma mark - NSWeakProxy Method Overrides -#pragma mark Handling Unimplemented Methods - -- (void)forwardInvocation:(NSInvocation *)invocation -{ - // Fallback for when target is nil. Don't do anything, just return 0/NULL/nil. - // The method signature we've received to get here is just a dummy to keep `doesNotRecognizeSelector:` from firing. - // We can't really handle struct return types here because we don't know the length. - void *nullPointer = NULL; - [invocation setReturnValue:&nullPointer]; -} - - -- (NSMethodSignature *)methodSignatureForSelector:(SEL)selector -{ - // We only get here if `forwardingTargetForSelector:` returns nil. - // In that case, our weak target has been reclaimed. Return a dummy method signature to keep `doesNotRecognizeSelector:` from firing. - // We'll emulate the Obj-c messaging nil behavior by setting the return value to nil in `forwardInvocation:`, but we'll assume that the return value is `sizeof(void *)`. - // Other libraries handle this situation by making use of a global method signature cache, but that seems heavier than necessary and has issues as well. - // See https://www.mikeash.com/pyblog/friday-qa-2010-02-26-futures.html and https://github.com/steipete/PSTDelegateProxy/issues/1 for examples of using a method signature cache. - return [NSObject instanceMethodSignatureForSelector:@selector(init)]; -} - - -@end diff --git a/Example/Pods/FLAnimatedImage/FLAnimatedImage/FLAnimatedImageView.h b/Example/Pods/FLAnimatedImage/FLAnimatedImage/FLAnimatedImageView.h deleted file mode 100644 index e7100433..00000000 --- a/Example/Pods/FLAnimatedImage/FLAnimatedImage/FLAnimatedImageView.h +++ /dev/null @@ -1,32 +0,0 @@ -// -// FLAnimatedImageView.h -// Flipboard -// -// Created by Raphael Schaad on 7/8/13. -// Copyright (c) 2013-2015 Flipboard. All rights reserved. -// - - -#import - -@class FLAnimatedImage; -@protocol FLAnimatedImageViewDebugDelegate; - - -// -// An `FLAnimatedImageView` can take an `FLAnimatedImage` and plays it automatically when in view hierarchy and stops when removed. -// The animation can also be controlled with the `UIImageView` methods `-start/stop/isAnimating`. -// It is a fully compatible `UIImageView` subclass and can be used as a drop-in component to work with existing code paths expecting to display a `UIImage`. -// Under the hood it uses a `CADisplayLink` for playback, which can be inspected with `currentFrame` & `currentFrameIndex`. -// -@interface FLAnimatedImageView : UIImageView - -// Setting `[UIImageView.image]` to a non-`nil` value clears out existing `animatedImage`. -// And vice versa, setting `animatedImage` will initially populate the `[UIImageView.image]` to its `posterImage` and then start animating and hold `currentFrame`. -@property (nonatomic, strong) FLAnimatedImage *animatedImage; -@property (nonatomic, copy) void(^loopCompletionBlock)(NSUInteger loopCountRemaining); - -@property (nonatomic, strong, readonly) UIImage *currentFrame; -@property (nonatomic, assign, readonly) NSUInteger currentFrameIndex; - -@end diff --git a/Example/Pods/FLAnimatedImage/FLAnimatedImage/FLAnimatedImageView.m b/Example/Pods/FLAnimatedImage/FLAnimatedImage/FLAnimatedImageView.m deleted file mode 100755 index 99f398a6..00000000 --- a/Example/Pods/FLAnimatedImage/FLAnimatedImage/FLAnimatedImageView.m +++ /dev/null @@ -1,382 +0,0 @@ -// -// FLAnimatedImageView.h -// Flipboard -// -// Created by Raphael Schaad on 7/8/13. -// Copyright (c) 2013-2015 Flipboard. All rights reserved. -// - - -#import "FLAnimatedImageView.h" -#import "FLAnimatedImage.h" -#import - - -#if defined(DEBUG) && DEBUG -@protocol FLAnimatedImageViewDebugDelegate -@optional -- (void)debug_animatedImageView:(FLAnimatedImageView *)animatedImageView waitingForFrame:(NSUInteger)index duration:(NSTimeInterval)duration; -@end -#endif - - -@interface FLAnimatedImageView () - -// Override of public `readonly` properties as private `readwrite` -@property (nonatomic, strong, readwrite) UIImage *currentFrame; -@property (nonatomic, assign, readwrite) NSUInteger currentFrameIndex; - -@property (nonatomic, assign) NSUInteger loopCountdown; -@property (nonatomic, assign) NSTimeInterval accumulator; -@property (nonatomic, strong) CADisplayLink *displayLink; - -@property (nonatomic, assign) BOOL shouldAnimate; // Before checking this value, call `-updateShouldAnimate` whenever the animated image or visibility (window, superview, hidden, alpha) has changed. -@property (nonatomic, assign) BOOL needsDisplayWhenImageBecomesAvailable; - -#if defined(DEBUG) && DEBUG -@property (nonatomic, weak) id debug_delegate; -#endif - -@end - - -@implementation FLAnimatedImageView - -#pragma mark - Accessors -#pragma mark Public - -- (void)setAnimatedImage:(FLAnimatedImage *)animatedImage -{ - if (![_animatedImage isEqual:animatedImage]) { - if (animatedImage) { - // Clear out the image. - super.image = nil; - // Ensure disabled highlighting; it's not supported (see `-setHighlighted:`). - super.highlighted = NO; - // UIImageView seems to bypass some accessors when calculating its intrinsic content size, so this ensures its intrinsic content size comes from the animated image. - [self invalidateIntrinsicContentSize]; - } else { - // Stop animating before the animated image gets cleared out. - [self stopAnimating]; - } - - _animatedImage = animatedImage; - - self.currentFrame = animatedImage.posterImage; - self.currentFrameIndex = 0; - if (animatedImage.loopCount > 0) { - self.loopCountdown = animatedImage.loopCount; - } else { - self.loopCountdown = NSUIntegerMax; - } - self.accumulator = 0.0; - - // Start animating after the new animated image has been set. - [self updateShouldAnimate]; - if (self.shouldAnimate) { - [self startAnimating]; - } - - [self.layer setNeedsDisplay]; - } -} - - -#pragma mark - Life Cycle - -- (void)dealloc -{ - // Removes the display link from all run loop modes. - [_displayLink invalidate]; -} - - -#pragma mark - UIView Method Overrides -#pragma mark Observing View-Related Changes - -- (void)didMoveToSuperview -{ - [super didMoveToSuperview]; - - [self updateShouldAnimate]; - if (self.shouldAnimate) { - [self startAnimating]; - } else { - [self stopAnimating]; - } -} - - -- (void)didMoveToWindow -{ - [super didMoveToWindow]; - - [self updateShouldAnimate]; - if (self.shouldAnimate) { - [self startAnimating]; - } else { - [self stopAnimating]; - } -} - -- (void)setAlpha:(CGFloat)alpha -{ - [super setAlpha:alpha]; - - [self updateShouldAnimate]; - if (self.shouldAnimate) { - [self startAnimating]; - } else { - [self stopAnimating]; - } -} - -- (void)setHidden:(BOOL)hidden -{ - [super setHidden:hidden]; - - [self updateShouldAnimate]; - if (self.shouldAnimate) { - [self startAnimating]; - } else { - [self stopAnimating]; - } -} - - -#pragma mark Auto Layout - -- (CGSize)intrinsicContentSize -{ - // Default to let UIImageView handle the sizing of its image, and anything else it might consider. - CGSize intrinsicContentSize = [super intrinsicContentSize]; - - // If we have have an animated image, use its image size. - // UIImageView's intrinsic content size seems to be the size of its image. The obvious approach, simply calling `-invalidateIntrinsicContentSize` when setting an animated image, results in UIImageView steadfastly returning `{UIViewNoIntrinsicMetric, UIViewNoIntrinsicMetric}` for its intrinsicContentSize. - // (Perhaps UIImageView bypasses its `-image` getter in its implementation of `-intrinsicContentSize`, as `-image` is not called after calling `-invalidateIntrinsicContentSize`.) - if (self.animatedImage) { - intrinsicContentSize = self.image.size; - } - - return intrinsicContentSize; -} - - -#pragma mark - UIImageView Method Overrides -#pragma mark Image Data - -- (UIImage *)image -{ - UIImage *image = nil; - if (self.animatedImage) { - // Initially set to the poster image. - image = self.currentFrame; - } else { - image = super.image; - } - return image; -} - - -- (void)setImage:(UIImage *)image -{ - if (image) { - // Clear out the animated image and implicitly pause animation playback. - self.animatedImage = nil; - } - - super.image = image; -} - - -#pragma mark Animating Images - -- (NSTimeInterval)frameDelayGreatestCommonDivisor -{ - // Presision is set to half of the `kFLAnimatedImageDelayTimeIntervalMinimum` in order to minimize frame dropping. - const NSTimeInterval kGreatestCommonDivisorPrecision = 2.0 / kFLAnimatedImageDelayTimeIntervalMinimum; - - NSArray *delays = self.animatedImage.delayTimesForIndexes.allValues; - - // Scales the frame delays by `kGreatestCommonDivisorPrecision` - // then converts it to an UInteger for in order to calculate the GCD. - NSUInteger scaledGCD = lrint([delays.firstObject floatValue] * kGreatestCommonDivisorPrecision); - for (NSNumber *value in delays) { - scaledGCD = gcd(lrint([value floatValue] * kGreatestCommonDivisorPrecision), scaledGCD); - } - - // Reverse to scale to get the value back into seconds. - return scaledGCD / kGreatestCommonDivisorPrecision; -} - - -static NSUInteger gcd(NSUInteger a, NSUInteger b) -{ - // http://en.wikipedia.org/wiki/Greatest_common_divisor - if (a < b) { - return gcd(b, a); - } else if (a == b) { - return b; - } - - while (true) { - NSUInteger remainder = a % b; - if (remainder == 0) { - return b; - } - a = b; - b = remainder; - } -} - - -- (void)startAnimating -{ - if (self.animatedImage) { - // Lazily create the display link. - if (!self.displayLink) { - // It is important to note the use of a weak proxy here to avoid a retain cycle. `-displayLinkWithTarget:selector:` - // will retain its target until it is invalidated. We use a weak proxy so that the image view will get deallocated - // independent of the display link's lifetime. Upon image view deallocation, we invalidate the display - // link which will lead to the deallocation of both the display link and the weak proxy. - FLWeakProxy *weakProxy = [FLWeakProxy weakProxyForObject:self]; - self.displayLink = [CADisplayLink displayLinkWithTarget:weakProxy selector:@selector(displayDidRefresh:)]; - - NSString *mode = NSDefaultRunLoopMode; - // Enable playback during scrolling by allowing timer events (i.e. animation) with `NSRunLoopCommonModes`. - // But too keep scrolling smooth, only do this for hardware with more than one core and otherwise keep it at the default `NSDefaultRunLoopMode`. - // The only devices with single-core chips (supporting iOS 6+) are iPhone 3GS/4 and iPod Touch 4th gen. - // Key off `activeProcessorCount` (as opposed to `processorCount`) since the system could shut down cores in certain situations. - if ([NSProcessInfo processInfo].activeProcessorCount > 1) { - mode = NSRunLoopCommonModes; - } - [self.displayLink addToRunLoop:[NSRunLoop mainRunLoop] forMode:mode]; - } - - // Note: The display link's `.frameInterval` value of 1 (default) means getting callbacks at the refresh rate of the display (~60Hz). - // Setting it to 2 divides the frame rate by 2 and hence calls back at every other display refresh. - const NSTimeInterval kDisplayRefreshRate = 60.0; // 60Hz - self.displayLink.frameInterval = MAX([self frameDelayGreatestCommonDivisor] * kDisplayRefreshRate, 1); - - self.displayLink.paused = NO; - } else { - [super startAnimating]; - } -} - - -- (void)stopAnimating -{ - if (self.animatedImage) { - self.displayLink.paused = YES; - } else { - [super stopAnimating]; - } -} - - -- (BOOL)isAnimating -{ - BOOL isAnimating = NO; - if (self.animatedImage) { - isAnimating = self.displayLink && !self.displayLink.isPaused; - } else { - isAnimating = [super isAnimating]; - } - return isAnimating; -} - - -#pragma mark Highlighted Image Unsupport - -- (void)setHighlighted:(BOOL)highlighted -{ - // Highlighted image is unsupported for animated images, but implementing it breaks the image view when embedded in a UICollectionViewCell. - if (!self.animatedImage) { - [super setHighlighted:highlighted]; - } -} - - -#pragma mark - Private Methods -#pragma mark Animation - -// Don't repeatedly check our window & superview in `-displayDidRefresh:` for performance reasons. -// Just update our cached value whenever the animated image or visibility (window, superview, hidden, alpha) is changed. -- (void)updateShouldAnimate -{ - BOOL isVisible = self.window && self.superview && ![self isHidden] && self.alpha > 0.0; - self.shouldAnimate = self.animatedImage && isVisible; -} - - -- (void)displayDidRefresh:(CADisplayLink *)displayLink -{ - // If for some reason a wild call makes it through when we shouldn't be animating, bail. - // Early return! - if (!self.shouldAnimate) { - FLLog(FLLogLevelWarn, @"Trying to animate image when we shouldn't: %@", self); - return; - } - - NSNumber *delayTimeNumber = [self.animatedImage.delayTimesForIndexes objectForKey:@(self.currentFrameIndex)]; - // If we don't have a frame delay (e.g. corrupt frame), don't update the view but skip the playhead to the next frame (in else-block). - if (delayTimeNumber) { - NSTimeInterval delayTime = [delayTimeNumber floatValue]; - // If we have a nil image (e.g. waiting for frame), don't update the view nor playhead. - UIImage *image = [self.animatedImage imageLazilyCachedAtIndex:self.currentFrameIndex]; - if (image) { - FLLog(FLLogLevelVerbose, @"Showing frame %lu for animated image: %@", (unsigned long)self.currentFrameIndex, self.animatedImage); - self.currentFrame = image; - if (self.needsDisplayWhenImageBecomesAvailable) { - [self.layer setNeedsDisplay]; - self.needsDisplayWhenImageBecomesAvailable = NO; - } - - self.accumulator += displayLink.duration * displayLink.frameInterval; - - // While-loop first inspired by & good Karma to: https://github.com/ondalabs/OLImageView/blob/master/OLImageView.m - while (self.accumulator >= delayTime) { - self.accumulator -= delayTime; - self.currentFrameIndex++; - if (self.currentFrameIndex >= self.animatedImage.frameCount) { - // If we've looped the number of times that this animated image describes, stop looping. - self.loopCountdown--; - if (self.loopCompletionBlock) { - self.loopCompletionBlock(self.loopCountdown); - } - - if (self.loopCountdown == 0) { - [self stopAnimating]; - return; - } - self.currentFrameIndex = 0; - } - // Calling `-setNeedsDisplay` will just paint the current frame, not the new frame that we may have moved to. - // Instead, set `needsDisplayWhenImageBecomesAvailable` to `YES` -- this will paint the new image once loaded. - self.needsDisplayWhenImageBecomesAvailable = YES; - } - } else { - FLLog(FLLogLevelDebug, @"Waiting for frame %lu for animated image: %@", (unsigned long)self.currentFrameIndex, self.animatedImage); -#if defined(DEBUG) && DEBUG - if ([self.debug_delegate respondsToSelector:@selector(debug_animatedImageView:waitingForFrame:duration:)]) { - [self.debug_delegate debug_animatedImageView:self waitingForFrame:self.currentFrameIndex duration:(NSTimeInterval)displayLink.duration * displayLink.frameInterval]; - } -#endif - } - } else { - self.currentFrameIndex++; - } -} - - -#pragma mark - CALayerDelegate (Informal) -#pragma mark Providing the Layer's Content - -- (void)displayLayer:(CALayer *)layer -{ - layer.contents = (__bridge id)self.image.CGImage; -} - - -@end diff --git a/Example/Pods/FLAnimatedImage/LICENSE b/Example/Pods/FLAnimatedImage/LICENSE deleted file mode 100644 index 89fa0930..00000000 --- a/Example/Pods/FLAnimatedImage/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2014-2015 Flipboard - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/Example/Pods/FLAnimatedImage/README.md b/Example/Pods/FLAnimatedImage/README.md deleted file mode 100644 index 59144f2d..00000000 --- a/Example/Pods/FLAnimatedImage/README.md +++ /dev/null @@ -1,101 +0,0 @@ -FLAnimatedImage is a performant animated GIF engine for iOS: - -- Plays multiple GIFs simultaneously with a playback speed comparable to desktop browsers -- Honors variable frame delays -- Behaves gracefully under memory pressure -- Eliminates delays or blocking during the first playback loop -- Interprets the frame delays of fast GIFs the same way modern browsers do - -It's a well-tested [component that powers all GIFs in Flipboard](http://engineering.flipboard.com/2014/05/animated-gif/). To understand its behavior it comes with an interactive demo: - -![Flipboard playing multiple GIFs](https://github.com/Flipboard/FLAnimatedImage/raw/master/images/flanimatedimage-demo-player.gif) - -## Who is this for? - -- Apps that don't support animated GIFs yet -- Apps that already support animated GIFs but want a higher performance solution -- People who want to tinker with the code ([the corresponding blog post](http://engineering.flipboard.com/2014/05/animated-gif/) is a great place to start; also see the *To Do* section below) - -## Installation & Usage - -FLAnimatedImage is a well encapsulated drop-in component. Simply replace your `UIImageView` instances with instances of `FLAnimatedImageView` to get animated GIF support. There is no central cache or state to manage. - -If using CocoaPods, the quickest way to try it out is to type this on the command line: - -```shell -$ pod try FLAnimatedImage -``` - -To add it to your app, copy the two classes `FLAnimatedImage.h/.m` and `FLAnimatedImageView.h/.m` into your Xcode project or add via [CocoaPods](http://cocoapods.org) by adding this to your Podfile: - -```ruby -pod 'FLAnimatedImage', '~> 1.0' -``` - -If using [Carthage](https://github.com/Carthage/Carthage), add following line into your `Cartfile` - -``` -github "Flipboard/FLAnimatedImage" -``` - -In your code, `#import "FLAnimatedImage.h"`, create an image from an animated GIF, and setup the image view to display it: - -```objective-c -FLAnimatedImage *image = [FLAnimatedImage animatedImageWithGIFData:[NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://raphaelschaad.com/static/nyan.gif"]]]; -FLAnimatedImageView *imageView = [[FLAnimatedImageView alloc] init]; -imageView.animatedImage = image; -imageView.frame = CGRectMake(0.0, 0.0, 100.0, 100.0); -[self.view addSubview:imageView]; -``` - -It's flexible to integrate in your custom image loading stack and backwards compatible to iOS 6. - -It uses ARC and the Apple frameworks `QuartzCore`, `ImageIO`, `MobileCoreServices`, and `CoreGraphics`. - -It is capable of fine-grained logging. A block can be set on `FLAnimatedImage` that's invoked when logging occurs with various log levels via the `+setLogBlock:logLevel:` method. For example: - -```objective-c -// Set up FLAnimatedImage logging. -[FLAnimatedImage setLogBlock:^(NSString *logString, FLLogLevel logLevel) { - // Using NSLog - NSLog(@"%@", logString); - - // ...or CocoaLumberjackLogger only logging warnings and errors - if (logLevel == FLLogLevelError) { - DDLogError(@"%@", logString); - } else if (logLevel == FLLogLevelWarn) { - DDLogWarn(@"%@", logString); - } -} logLevel:FLLogLevelWarn]; -``` - -Since FLAnimatedImage is licensed under MIT, it's compatible with the terms of using it for any app on the App Store. - -## To Do -- Support other animated image formats such as APNG or WebP -- Integration into network libraries and image caches -- Investigate whether `FLAnimatedImage` should become a `UIImage` subclass -- Smarter buffering -- Bring demo app to iPhone - -This has successfully shipped to many people as is, but please do come with your questions, issues and pull requests! - -Feel free to reach out to [@RaphaelSchaad](https://twitter.com/raphaelschaad) for further help. - -## Select apps using FLAnimatedImage -- [Dropbox](https://www.dropbox.com) -- [Medium](https://medium.com) -- [Facebook](https://facebook.com) -- [Pinterest](https://pinterest.com) -- [LiveBooth](http://www.liveboothapp.com) -- [Design Shots](https://itunes.apple.com/app/id792517951) -- [lWlVl Festival](http://lwlvl.com) -- [Close-up](http://closeu.pe) -- [Zip Code Finder](https://itunes.apple.com/app/id893031254) -- [getGIF](https://itunes.apple.com/app/id964784701) -- [Giffage](http://giffage.com) -- [Flipboard](https://flipboard.com) -- [Gifalicious](https://itunes.apple.com/us/app/gifalicious-see-your-gifs/id965346708?mt=8) -- [Slack](https://slack.com/) - -Using FLAnimatedImage in your app? [Let me know!](https://twitter.com/raphaelschaad) diff --git a/Example/Pods/Headers/Private/FLAnimatedImage/FLAnimatedImage.h b/Example/Pods/Headers/Private/FLAnimatedImage/FLAnimatedImage.h deleted file mode 120000 index 6b3118af..00000000 --- a/Example/Pods/Headers/Private/FLAnimatedImage/FLAnimatedImage.h +++ /dev/null @@ -1 +0,0 @@ -../../../FLAnimatedImage/FLAnimatedImage/FLAnimatedImage.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/FLAnimatedImage/FLAnimatedImageView.h b/Example/Pods/Headers/Private/FLAnimatedImage/FLAnimatedImageView.h deleted file mode 120000 index 8d98a7bc..00000000 --- a/Example/Pods/Headers/Private/FLAnimatedImage/FLAnimatedImageView.h +++ /dev/null @@ -1 +0,0 @@ -../../../FLAnimatedImage/FLAnimatedImage/FLAnimatedImageView.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/NYTPhotoViewer/NSBundle+NYTPhotoViewer.h b/Example/Pods/Headers/Private/NYTPhotoViewer/NSBundle+NYTPhotoViewer.h deleted file mode 120000 index 0480dc75..00000000 --- a/Example/Pods/Headers/Private/NYTPhotoViewer/NSBundle+NYTPhotoViewer.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../Pod/Classes/ios/Resource Loading/NSBundle+NYTPhotoViewer.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/NYTPhotoViewer/NYTPhoto.h b/Example/Pods/Headers/Private/NYTPhotoViewer/NYTPhoto.h deleted file mode 120000 index fe8311d7..00000000 --- a/Example/Pods/Headers/Private/NYTPhotoViewer/NYTPhoto.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../Pod/Classes/ios/Protocols/NYTPhoto.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/NYTPhotoViewer/NYTPhotoCaptionView.h b/Example/Pods/Headers/Private/NYTPhotoViewer/NYTPhotoCaptionView.h deleted file mode 120000 index 3801f0a5..00000000 --- a/Example/Pods/Headers/Private/NYTPhotoViewer/NYTPhotoCaptionView.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../Pod/Classes/ios/NYTPhotoCaptionView.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/NYTPhotoViewer/NYTPhotoCaptionViewLayoutWidthHinting.h b/Example/Pods/Headers/Private/NYTPhotoViewer/NYTPhotoCaptionViewLayoutWidthHinting.h deleted file mode 120000 index 7a548d4e..00000000 --- a/Example/Pods/Headers/Private/NYTPhotoViewer/NYTPhotoCaptionViewLayoutWidthHinting.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../Pod/Classes/ios/Protocols/NYTPhotoCaptionViewLayoutWidthHinting.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/NYTPhotoViewer/NYTPhotoContainer.h b/Example/Pods/Headers/Private/NYTPhotoViewer/NYTPhotoContainer.h deleted file mode 120000 index 01675de3..00000000 --- a/Example/Pods/Headers/Private/NYTPhotoViewer/NYTPhotoContainer.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../Pod/Classes/ios/Protocols/NYTPhotoContainer.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/NYTPhotoViewer/NYTPhotoDismissalInteractionController.h b/Example/Pods/Headers/Private/NYTPhotoViewer/NYTPhotoDismissalInteractionController.h deleted file mode 120000 index f3a3de32..00000000 --- a/Example/Pods/Headers/Private/NYTPhotoViewer/NYTPhotoDismissalInteractionController.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../Pod/Classes/ios/NYTPhotoDismissalInteractionController.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/NYTPhotoViewer/NYTPhotoTransitionAnimator.h b/Example/Pods/Headers/Private/NYTPhotoViewer/NYTPhotoTransitionAnimator.h deleted file mode 120000 index 96c8154e..00000000 --- a/Example/Pods/Headers/Private/NYTPhotoViewer/NYTPhotoTransitionAnimator.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../Pod/Classes/ios/NYTPhotoTransitionAnimator.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/NYTPhotoViewer/NYTPhotoTransitionController.h b/Example/Pods/Headers/Private/NYTPhotoViewer/NYTPhotoTransitionController.h deleted file mode 120000 index 8517cf5f..00000000 --- a/Example/Pods/Headers/Private/NYTPhotoViewer/NYTPhotoTransitionController.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../Pod/Classes/ios/NYTPhotoTransitionController.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/NYTPhotoViewer/NYTPhotoViewController.h b/Example/Pods/Headers/Private/NYTPhotoViewer/NYTPhotoViewController.h deleted file mode 120000 index cdd7c343..00000000 --- a/Example/Pods/Headers/Private/NYTPhotoViewer/NYTPhotoViewController.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../Pod/Classes/ios/NYTPhotoViewController.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/NYTPhotoViewer/NYTPhotosDataSource.h b/Example/Pods/Headers/Private/NYTPhotoViewer/NYTPhotosDataSource.h deleted file mode 120000 index a2e554c2..00000000 --- a/Example/Pods/Headers/Private/NYTPhotoViewer/NYTPhotosDataSource.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../Pod/Classes/ios/NYTPhotosDataSource.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/NYTPhotoViewer/NYTPhotosOverlayView.h b/Example/Pods/Headers/Private/NYTPhotoViewer/NYTPhotosOverlayView.h deleted file mode 120000 index 0583639b..00000000 --- a/Example/Pods/Headers/Private/NYTPhotoViewer/NYTPhotosOverlayView.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../Pod/Classes/ios/NYTPhotosOverlayView.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/NYTPhotoViewer/NYTPhotosViewController.h b/Example/Pods/Headers/Private/NYTPhotoViewer/NYTPhotosViewController.h deleted file mode 120000 index 7804f257..00000000 --- a/Example/Pods/Headers/Private/NYTPhotoViewer/NYTPhotosViewController.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../Pod/Classes/ios/NYTPhotosViewController.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/NYTPhotoViewer/NYTPhotosViewControllerDataSource.h b/Example/Pods/Headers/Private/NYTPhotoViewer/NYTPhotosViewControllerDataSource.h deleted file mode 120000 index fb5d3139..00000000 --- a/Example/Pods/Headers/Private/NYTPhotoViewer/NYTPhotosViewControllerDataSource.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../Pod/Classes/ios/Protocols/NYTPhotosViewControllerDataSource.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/NYTPhotoViewer/NYTScalingImageView.h b/Example/Pods/Headers/Private/NYTPhotoViewer/NYTScalingImageView.h deleted file mode 120000 index bd46053e..00000000 --- a/Example/Pods/Headers/Private/NYTPhotoViewer/NYTScalingImageView.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../Pod/Classes/ios/NYTScalingImageView.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/OCMock/NSInvocation+OCMAdditions.h b/Example/Pods/Headers/Private/OCMock/NSInvocation+OCMAdditions.h deleted file mode 120000 index 84f94f38..00000000 --- a/Example/Pods/Headers/Private/OCMock/NSInvocation+OCMAdditions.h +++ /dev/null @@ -1 +0,0 @@ -../../../OCMock/Source/OCMock/NSInvocation+OCMAdditions.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/OCMock/NSMethodSignature+OCMAdditions.h b/Example/Pods/Headers/Private/OCMock/NSMethodSignature+OCMAdditions.h deleted file mode 120000 index 87ac967c..00000000 --- a/Example/Pods/Headers/Private/OCMock/NSMethodSignature+OCMAdditions.h +++ /dev/null @@ -1 +0,0 @@ -../../../OCMock/Source/OCMock/NSMethodSignature+OCMAdditions.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/OCMock/NSNotificationCenter+OCMAdditions.h b/Example/Pods/Headers/Private/OCMock/NSNotificationCenter+OCMAdditions.h deleted file mode 120000 index 9f466782..00000000 --- a/Example/Pods/Headers/Private/OCMock/NSNotificationCenter+OCMAdditions.h +++ /dev/null @@ -1 +0,0 @@ -../../../OCMock/Source/OCMock/NSNotificationCenter+OCMAdditions.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/OCMock/NSObject+OCMAdditions.h b/Example/Pods/Headers/Private/OCMock/NSObject+OCMAdditions.h deleted file mode 120000 index 6fc84fd4..00000000 --- a/Example/Pods/Headers/Private/OCMock/NSObject+OCMAdditions.h +++ /dev/null @@ -1 +0,0 @@ -../../../OCMock/Source/OCMock/NSObject+OCMAdditions.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/OCMock/NSValue+OCMAdditions.h b/Example/Pods/Headers/Private/OCMock/NSValue+OCMAdditions.h deleted file mode 120000 index d031ef4b..00000000 --- a/Example/Pods/Headers/Private/OCMock/NSValue+OCMAdditions.h +++ /dev/null @@ -1 +0,0 @@ -../../../OCMock/Source/OCMock/NSValue+OCMAdditions.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/OCMock/OCClassMockObject.h b/Example/Pods/Headers/Private/OCMock/OCClassMockObject.h deleted file mode 120000 index 2f1f96bd..00000000 --- a/Example/Pods/Headers/Private/OCMock/OCClassMockObject.h +++ /dev/null @@ -1 +0,0 @@ -../../../OCMock/Source/OCMock/OCClassMockObject.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/OCMock/OCMArg.h b/Example/Pods/Headers/Private/OCMock/OCMArg.h deleted file mode 120000 index 1090895d..00000000 --- a/Example/Pods/Headers/Private/OCMock/OCMArg.h +++ /dev/null @@ -1 +0,0 @@ -../../../OCMock/Source/OCMock/OCMArg.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/OCMock/OCMArgAction.h b/Example/Pods/Headers/Private/OCMock/OCMArgAction.h deleted file mode 120000 index 41b92dd8..00000000 --- a/Example/Pods/Headers/Private/OCMock/OCMArgAction.h +++ /dev/null @@ -1 +0,0 @@ -../../../OCMock/Source/OCMock/OCMArgAction.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/OCMock/OCMBlockArgCaller.h b/Example/Pods/Headers/Private/OCMock/OCMBlockArgCaller.h deleted file mode 120000 index 1e39dddb..00000000 --- a/Example/Pods/Headers/Private/OCMock/OCMBlockArgCaller.h +++ /dev/null @@ -1 +0,0 @@ -../../../OCMock/Source/OCMock/OCMBlockArgCaller.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/OCMock/OCMBlockCaller.h b/Example/Pods/Headers/Private/OCMock/OCMBlockCaller.h deleted file mode 120000 index 2510e820..00000000 --- a/Example/Pods/Headers/Private/OCMock/OCMBlockCaller.h +++ /dev/null @@ -1 +0,0 @@ -../../../OCMock/Source/OCMock/OCMBlockCaller.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/OCMock/OCMBoxedReturnValueProvider.h b/Example/Pods/Headers/Private/OCMock/OCMBoxedReturnValueProvider.h deleted file mode 120000 index c412f8d4..00000000 --- a/Example/Pods/Headers/Private/OCMock/OCMBoxedReturnValueProvider.h +++ /dev/null @@ -1 +0,0 @@ -../../../OCMock/Source/OCMock/OCMBoxedReturnValueProvider.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/OCMock/OCMConstraint.h b/Example/Pods/Headers/Private/OCMock/OCMConstraint.h deleted file mode 120000 index 3089b8c7..00000000 --- a/Example/Pods/Headers/Private/OCMock/OCMConstraint.h +++ /dev/null @@ -1 +0,0 @@ -../../../OCMock/Source/OCMock/OCMConstraint.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/OCMock/OCMExceptionReturnValueProvider.h b/Example/Pods/Headers/Private/OCMock/OCMExceptionReturnValueProvider.h deleted file mode 120000 index e0dbaec7..00000000 --- a/Example/Pods/Headers/Private/OCMock/OCMExceptionReturnValueProvider.h +++ /dev/null @@ -1 +0,0 @@ -../../../OCMock/Source/OCMock/OCMExceptionReturnValueProvider.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/OCMock/OCMExpectationRecorder.h b/Example/Pods/Headers/Private/OCMock/OCMExpectationRecorder.h deleted file mode 120000 index 1da432a8..00000000 --- a/Example/Pods/Headers/Private/OCMock/OCMExpectationRecorder.h +++ /dev/null @@ -1 +0,0 @@ -../../../OCMock/Source/OCMock/OCMExpectationRecorder.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/OCMock/OCMFunctions.h b/Example/Pods/Headers/Private/OCMock/OCMFunctions.h deleted file mode 120000 index 6a9606f3..00000000 --- a/Example/Pods/Headers/Private/OCMock/OCMFunctions.h +++ /dev/null @@ -1 +0,0 @@ -../../../OCMock/Source/OCMock/OCMFunctions.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/OCMock/OCMFunctionsPrivate.h b/Example/Pods/Headers/Private/OCMock/OCMFunctionsPrivate.h deleted file mode 120000 index 88977c3b..00000000 --- a/Example/Pods/Headers/Private/OCMock/OCMFunctionsPrivate.h +++ /dev/null @@ -1 +0,0 @@ -../../../OCMock/Source/OCMock/OCMFunctionsPrivate.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/OCMock/OCMIndirectReturnValueProvider.h b/Example/Pods/Headers/Private/OCMock/OCMIndirectReturnValueProvider.h deleted file mode 120000 index e4a0f666..00000000 --- a/Example/Pods/Headers/Private/OCMock/OCMIndirectReturnValueProvider.h +++ /dev/null @@ -1 +0,0 @@ -../../../OCMock/Source/OCMock/OCMIndirectReturnValueProvider.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/OCMock/OCMInvocationExpectation.h b/Example/Pods/Headers/Private/OCMock/OCMInvocationExpectation.h deleted file mode 120000 index ae7bd231..00000000 --- a/Example/Pods/Headers/Private/OCMock/OCMInvocationExpectation.h +++ /dev/null @@ -1 +0,0 @@ -../../../OCMock/Source/OCMock/OCMInvocationExpectation.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/OCMock/OCMInvocationMatcher.h b/Example/Pods/Headers/Private/OCMock/OCMInvocationMatcher.h deleted file mode 120000 index e178d648..00000000 --- a/Example/Pods/Headers/Private/OCMock/OCMInvocationMatcher.h +++ /dev/null @@ -1 +0,0 @@ -../../../OCMock/Source/OCMock/OCMInvocationMatcher.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/OCMock/OCMInvocationStub.h b/Example/Pods/Headers/Private/OCMock/OCMInvocationStub.h deleted file mode 120000 index 5ab5a9c0..00000000 --- a/Example/Pods/Headers/Private/OCMock/OCMInvocationStub.h +++ /dev/null @@ -1 +0,0 @@ -../../../OCMock/Source/OCMock/OCMInvocationStub.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/OCMock/OCMLocation.h b/Example/Pods/Headers/Private/OCMock/OCMLocation.h deleted file mode 120000 index 25c8f0e1..00000000 --- a/Example/Pods/Headers/Private/OCMock/OCMLocation.h +++ /dev/null @@ -1 +0,0 @@ -../../../OCMock/Source/OCMock/OCMLocation.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/OCMock/OCMMacroState.h b/Example/Pods/Headers/Private/OCMock/OCMMacroState.h deleted file mode 120000 index c8f3dd06..00000000 --- a/Example/Pods/Headers/Private/OCMock/OCMMacroState.h +++ /dev/null @@ -1 +0,0 @@ -../../../OCMock/Source/OCMock/OCMMacroState.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/OCMock/OCMNotificationPoster.h b/Example/Pods/Headers/Private/OCMock/OCMNotificationPoster.h deleted file mode 120000 index f8799421..00000000 --- a/Example/Pods/Headers/Private/OCMock/OCMNotificationPoster.h +++ /dev/null @@ -1 +0,0 @@ -../../../OCMock/Source/OCMock/OCMNotificationPoster.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/OCMock/OCMObserverRecorder.h b/Example/Pods/Headers/Private/OCMock/OCMObserverRecorder.h deleted file mode 120000 index f0dfa865..00000000 --- a/Example/Pods/Headers/Private/OCMock/OCMObserverRecorder.h +++ /dev/null @@ -1 +0,0 @@ -../../../OCMock/Source/OCMock/OCMObserverRecorder.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/OCMock/OCMPassByRefSetter.h b/Example/Pods/Headers/Private/OCMock/OCMPassByRefSetter.h deleted file mode 120000 index 687a2941..00000000 --- a/Example/Pods/Headers/Private/OCMock/OCMPassByRefSetter.h +++ /dev/null @@ -1 +0,0 @@ -../../../OCMock/Source/OCMock/OCMPassByRefSetter.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/OCMock/OCMRealObjectForwarder.h b/Example/Pods/Headers/Private/OCMock/OCMRealObjectForwarder.h deleted file mode 120000 index c22a73b9..00000000 --- a/Example/Pods/Headers/Private/OCMock/OCMRealObjectForwarder.h +++ /dev/null @@ -1 +0,0 @@ -../../../OCMock/Source/OCMock/OCMRealObjectForwarder.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/OCMock/OCMRecorder.h b/Example/Pods/Headers/Private/OCMock/OCMRecorder.h deleted file mode 120000 index 75eb2596..00000000 --- a/Example/Pods/Headers/Private/OCMock/OCMRecorder.h +++ /dev/null @@ -1 +0,0 @@ -../../../OCMock/Source/OCMock/OCMRecorder.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/OCMock/OCMReturnValueProvider.h b/Example/Pods/Headers/Private/OCMock/OCMReturnValueProvider.h deleted file mode 120000 index d5d857dc..00000000 --- a/Example/Pods/Headers/Private/OCMock/OCMReturnValueProvider.h +++ /dev/null @@ -1 +0,0 @@ -../../../OCMock/Source/OCMock/OCMReturnValueProvider.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/OCMock/OCMStubRecorder.h b/Example/Pods/Headers/Private/OCMock/OCMStubRecorder.h deleted file mode 120000 index 23f5e6ce..00000000 --- a/Example/Pods/Headers/Private/OCMock/OCMStubRecorder.h +++ /dev/null @@ -1 +0,0 @@ -../../../OCMock/Source/OCMock/OCMStubRecorder.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/OCMock/OCMVerifier.h b/Example/Pods/Headers/Private/OCMock/OCMVerifier.h deleted file mode 120000 index 2f36326f..00000000 --- a/Example/Pods/Headers/Private/OCMock/OCMVerifier.h +++ /dev/null @@ -1 +0,0 @@ -../../../OCMock/Source/OCMock/OCMVerifier.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/OCMock/OCMock.h b/Example/Pods/Headers/Private/OCMock/OCMock.h deleted file mode 120000 index 17e2e68a..00000000 --- a/Example/Pods/Headers/Private/OCMock/OCMock.h +++ /dev/null @@ -1 +0,0 @@ -../../../OCMock/Source/OCMock/OCMock.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/OCMock/OCMockObject.h b/Example/Pods/Headers/Private/OCMock/OCMockObject.h deleted file mode 120000 index 5645aaa2..00000000 --- a/Example/Pods/Headers/Private/OCMock/OCMockObject.h +++ /dev/null @@ -1 +0,0 @@ -../../../OCMock/Source/OCMock/OCMockObject.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/OCMock/OCObserverMockObject.h b/Example/Pods/Headers/Private/OCMock/OCObserverMockObject.h deleted file mode 120000 index 73f73efd..00000000 --- a/Example/Pods/Headers/Private/OCMock/OCObserverMockObject.h +++ /dev/null @@ -1 +0,0 @@ -../../../OCMock/Source/OCMock/OCObserverMockObject.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/OCMock/OCPartialMockObject.h b/Example/Pods/Headers/Private/OCMock/OCPartialMockObject.h deleted file mode 120000 index b76a3418..00000000 --- a/Example/Pods/Headers/Private/OCMock/OCPartialMockObject.h +++ /dev/null @@ -1 +0,0 @@ -../../../OCMock/Source/OCMock/OCPartialMockObject.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/OCMock/OCProtocolMockObject.h b/Example/Pods/Headers/Private/OCMock/OCProtocolMockObject.h deleted file mode 120000 index ebe84d56..00000000 --- a/Example/Pods/Headers/Private/OCMock/OCProtocolMockObject.h +++ /dev/null @@ -1 +0,0 @@ -../../../OCMock/Source/OCMock/OCProtocolMockObject.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/FLAnimatedImage/FLAnimatedImage.h b/Example/Pods/Headers/Public/FLAnimatedImage/FLAnimatedImage.h deleted file mode 120000 index 6b3118af..00000000 --- a/Example/Pods/Headers/Public/FLAnimatedImage/FLAnimatedImage.h +++ /dev/null @@ -1 +0,0 @@ -../../../FLAnimatedImage/FLAnimatedImage/FLAnimatedImage.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/FLAnimatedImage/FLAnimatedImageView.h b/Example/Pods/Headers/Public/FLAnimatedImage/FLAnimatedImageView.h deleted file mode 120000 index 8d98a7bc..00000000 --- a/Example/Pods/Headers/Public/FLAnimatedImage/FLAnimatedImageView.h +++ /dev/null @@ -1 +0,0 @@ -../../../FLAnimatedImage/FLAnimatedImage/FLAnimatedImageView.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/NYTPhotoViewer/NSBundle+NYTPhotoViewer.h b/Example/Pods/Headers/Public/NYTPhotoViewer/NSBundle+NYTPhotoViewer.h deleted file mode 120000 index 0480dc75..00000000 --- a/Example/Pods/Headers/Public/NYTPhotoViewer/NSBundle+NYTPhotoViewer.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../Pod/Classes/ios/Resource Loading/NSBundle+NYTPhotoViewer.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/NYTPhotoViewer/NYTPhoto.h b/Example/Pods/Headers/Public/NYTPhotoViewer/NYTPhoto.h deleted file mode 120000 index fe8311d7..00000000 --- a/Example/Pods/Headers/Public/NYTPhotoViewer/NYTPhoto.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../Pod/Classes/ios/Protocols/NYTPhoto.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/NYTPhotoViewer/NYTPhotoCaptionView.h b/Example/Pods/Headers/Public/NYTPhotoViewer/NYTPhotoCaptionView.h deleted file mode 120000 index 3801f0a5..00000000 --- a/Example/Pods/Headers/Public/NYTPhotoViewer/NYTPhotoCaptionView.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../Pod/Classes/ios/NYTPhotoCaptionView.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/NYTPhotoViewer/NYTPhotoCaptionViewLayoutWidthHinting.h b/Example/Pods/Headers/Public/NYTPhotoViewer/NYTPhotoCaptionViewLayoutWidthHinting.h deleted file mode 120000 index 7a548d4e..00000000 --- a/Example/Pods/Headers/Public/NYTPhotoViewer/NYTPhotoCaptionViewLayoutWidthHinting.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../Pod/Classes/ios/Protocols/NYTPhotoCaptionViewLayoutWidthHinting.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/NYTPhotoViewer/NYTPhotoContainer.h b/Example/Pods/Headers/Public/NYTPhotoViewer/NYTPhotoContainer.h deleted file mode 120000 index 01675de3..00000000 --- a/Example/Pods/Headers/Public/NYTPhotoViewer/NYTPhotoContainer.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../Pod/Classes/ios/Protocols/NYTPhotoContainer.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/NYTPhotoViewer/NYTPhotoDismissalInteractionController.h b/Example/Pods/Headers/Public/NYTPhotoViewer/NYTPhotoDismissalInteractionController.h deleted file mode 120000 index f3a3de32..00000000 --- a/Example/Pods/Headers/Public/NYTPhotoViewer/NYTPhotoDismissalInteractionController.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../Pod/Classes/ios/NYTPhotoDismissalInteractionController.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/NYTPhotoViewer/NYTPhotoTransitionAnimator.h b/Example/Pods/Headers/Public/NYTPhotoViewer/NYTPhotoTransitionAnimator.h deleted file mode 120000 index 96c8154e..00000000 --- a/Example/Pods/Headers/Public/NYTPhotoViewer/NYTPhotoTransitionAnimator.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../Pod/Classes/ios/NYTPhotoTransitionAnimator.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/NYTPhotoViewer/NYTPhotoTransitionController.h b/Example/Pods/Headers/Public/NYTPhotoViewer/NYTPhotoTransitionController.h deleted file mode 120000 index 8517cf5f..00000000 --- a/Example/Pods/Headers/Public/NYTPhotoViewer/NYTPhotoTransitionController.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../Pod/Classes/ios/NYTPhotoTransitionController.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/NYTPhotoViewer/NYTPhotoViewController.h b/Example/Pods/Headers/Public/NYTPhotoViewer/NYTPhotoViewController.h deleted file mode 120000 index cdd7c343..00000000 --- a/Example/Pods/Headers/Public/NYTPhotoViewer/NYTPhotoViewController.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../Pod/Classes/ios/NYTPhotoViewController.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/NYTPhotoViewer/NYTPhotosDataSource.h b/Example/Pods/Headers/Public/NYTPhotoViewer/NYTPhotosDataSource.h deleted file mode 120000 index a2e554c2..00000000 --- a/Example/Pods/Headers/Public/NYTPhotoViewer/NYTPhotosDataSource.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../Pod/Classes/ios/NYTPhotosDataSource.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/NYTPhotoViewer/NYTPhotosOverlayView.h b/Example/Pods/Headers/Public/NYTPhotoViewer/NYTPhotosOverlayView.h deleted file mode 120000 index 0583639b..00000000 --- a/Example/Pods/Headers/Public/NYTPhotoViewer/NYTPhotosOverlayView.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../Pod/Classes/ios/NYTPhotosOverlayView.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/NYTPhotoViewer/NYTPhotosViewController.h b/Example/Pods/Headers/Public/NYTPhotoViewer/NYTPhotosViewController.h deleted file mode 120000 index 7804f257..00000000 --- a/Example/Pods/Headers/Public/NYTPhotoViewer/NYTPhotosViewController.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../Pod/Classes/ios/NYTPhotosViewController.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/NYTPhotoViewer/NYTPhotosViewControllerDataSource.h b/Example/Pods/Headers/Public/NYTPhotoViewer/NYTPhotosViewControllerDataSource.h deleted file mode 120000 index fb5d3139..00000000 --- a/Example/Pods/Headers/Public/NYTPhotoViewer/NYTPhotosViewControllerDataSource.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../Pod/Classes/ios/Protocols/NYTPhotosViewControllerDataSource.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/NYTPhotoViewer/NYTScalingImageView.h b/Example/Pods/Headers/Public/NYTPhotoViewer/NYTScalingImageView.h deleted file mode 120000 index bd46053e..00000000 --- a/Example/Pods/Headers/Public/NYTPhotoViewer/NYTScalingImageView.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../Pod/Classes/ios/NYTScalingImageView.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/OCMock/NSNotificationCenter+OCMAdditions.h b/Example/Pods/Headers/Public/OCMock/NSNotificationCenter+OCMAdditions.h deleted file mode 120000 index 9f466782..00000000 --- a/Example/Pods/Headers/Public/OCMock/NSNotificationCenter+OCMAdditions.h +++ /dev/null @@ -1 +0,0 @@ -../../../OCMock/Source/OCMock/NSNotificationCenter+OCMAdditions.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/OCMock/OCMArg.h b/Example/Pods/Headers/Public/OCMock/OCMArg.h deleted file mode 120000 index 1090895d..00000000 --- a/Example/Pods/Headers/Public/OCMock/OCMArg.h +++ /dev/null @@ -1 +0,0 @@ -../../../OCMock/Source/OCMock/OCMArg.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/OCMock/OCMConstraint.h b/Example/Pods/Headers/Public/OCMock/OCMConstraint.h deleted file mode 120000 index 3089b8c7..00000000 --- a/Example/Pods/Headers/Public/OCMock/OCMConstraint.h +++ /dev/null @@ -1 +0,0 @@ -../../../OCMock/Source/OCMock/OCMConstraint.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/OCMock/OCMFunctions.h b/Example/Pods/Headers/Public/OCMock/OCMFunctions.h deleted file mode 120000 index 6a9606f3..00000000 --- a/Example/Pods/Headers/Public/OCMock/OCMFunctions.h +++ /dev/null @@ -1 +0,0 @@ -../../../OCMock/Source/OCMock/OCMFunctions.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/OCMock/OCMLocation.h b/Example/Pods/Headers/Public/OCMock/OCMLocation.h deleted file mode 120000 index 25c8f0e1..00000000 --- a/Example/Pods/Headers/Public/OCMock/OCMLocation.h +++ /dev/null @@ -1 +0,0 @@ -../../../OCMock/Source/OCMock/OCMLocation.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/OCMock/OCMMacroState.h b/Example/Pods/Headers/Public/OCMock/OCMMacroState.h deleted file mode 120000 index c8f3dd06..00000000 --- a/Example/Pods/Headers/Public/OCMock/OCMMacroState.h +++ /dev/null @@ -1 +0,0 @@ -../../../OCMock/Source/OCMock/OCMMacroState.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/OCMock/OCMRecorder.h b/Example/Pods/Headers/Public/OCMock/OCMRecorder.h deleted file mode 120000 index 75eb2596..00000000 --- a/Example/Pods/Headers/Public/OCMock/OCMRecorder.h +++ /dev/null @@ -1 +0,0 @@ -../../../OCMock/Source/OCMock/OCMRecorder.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/OCMock/OCMStubRecorder.h b/Example/Pods/Headers/Public/OCMock/OCMStubRecorder.h deleted file mode 120000 index 23f5e6ce..00000000 --- a/Example/Pods/Headers/Public/OCMock/OCMStubRecorder.h +++ /dev/null @@ -1 +0,0 @@ -../../../OCMock/Source/OCMock/OCMStubRecorder.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/OCMock/OCMock.h b/Example/Pods/Headers/Public/OCMock/OCMock.h deleted file mode 120000 index 17e2e68a..00000000 --- a/Example/Pods/Headers/Public/OCMock/OCMock.h +++ /dev/null @@ -1 +0,0 @@ -../../../OCMock/Source/OCMock/OCMock.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/OCMock/OCMockObject.h b/Example/Pods/Headers/Public/OCMock/OCMockObject.h deleted file mode 120000 index 5645aaa2..00000000 --- a/Example/Pods/Headers/Public/OCMock/OCMockObject.h +++ /dev/null @@ -1 +0,0 @@ -../../../OCMock/Source/OCMock/OCMockObject.h \ No newline at end of file diff --git a/Example/Pods/Local Podspecs/NYTPhotoViewer.podspec.json b/Example/Pods/Local Podspecs/NYTPhotoViewer.podspec.json deleted file mode 100644 index b4fecb3f..00000000 --- a/Example/Pods/Local Podspecs/NYTPhotoViewer.podspec.json +++ /dev/null @@ -1,50 +0,0 @@ -{ - "name": "NYTPhotoViewer", - "version": "0.1.2", - "description": "NYTPhotoViewer is a slideshow and image viewer that includes double tap to zoom, captions, support for multiple images, interactive flick to dismiss, animated zooming presentation, and more.", - "summary": "NYTPhotoViewer is a slideshow and image viewer that includes double tap to zoom, flick to dismiss, animated presentation, and more.", - "homepage": "https://github.com/NYTimes/NYTPhotoViewer", - "authors": "The New York Times", - "license": { - "type": "Apache 2.0" - }, - "source": { - "git": "https://github.com/NYTimes/NYTPhotoViewer.git", - "tag": "0.1.2" - }, - "platforms": { - "ios": "8.0" - }, - "requires_arc": true, - "subspecs": [ - { - "name": "Core", - "ios": { - "resource_bundles": { - "NYTPhotoViewer": [ - "Pod/Assets/ios/*.png" - ] - } - }, - "source_files": "Pod/Classes/**/*", - "frameworks": [ - "UIKit", - "Foundation" - ] - }, - { - "name": "AnimatedGifSupport", - "xcconfig": { - "GCC_PREPROCESSOR_DEFINITIONS": "ANIMATED_GIF_SUPPORT=1" - }, - "dependencies": { - "NYTPhotoViewer/Core": [ - - ], - "FLAnimatedImage": [ - "~> 1.0.8" - ] - } - } - ] -} diff --git a/Example/Pods/Manifest.lock b/Example/Pods/Manifest.lock deleted file mode 100644 index ba4882f1..00000000 --- a/Example/Pods/Manifest.lock +++ /dev/null @@ -1,22 +0,0 @@ -PODS: - - FLAnimatedImage (1.0.10) - - NYTPhotoViewer/AnimatedGifSupport (0.1.2): - - FLAnimatedImage (~> 1.0.8) - - NYTPhotoViewer/Core - - NYTPhotoViewer/Core (0.1.2) - - OCMock (3.2) - -DEPENDENCIES: - - NYTPhotoViewer/AnimatedGifSupport (from `../`) - - OCMock (~> 3.2) - -EXTERNAL SOURCES: - NYTPhotoViewer: - :path: "../" - -SPEC CHECKSUMS: - FLAnimatedImage: e16a1e1cef08e4c509b47e4acbe3923f65c16135 - NYTPhotoViewer: 06876beb4c9bc6f10a59eb8b898c480fd89f7c51 - OCMock: 28def049ef47f996b515a8eeea958be7ccab2dbb - -COCOAPODS: 0.39.0 diff --git a/Example/Pods/OCMock/License.txt b/Example/Pods/OCMock/License.txt deleted file mode 100644 index f433b1a5..00000000 --- a/Example/Pods/OCMock/License.txt +++ /dev/null @@ -1,177 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS diff --git a/Example/Pods/OCMock/README.md b/Example/Pods/OCMock/README.md deleted file mode 100644 index 948822e6..00000000 --- a/Example/Pods/OCMock/README.md +++ /dev/null @@ -1,10 +0,0 @@ -OCMock -====== - -OCMock is an Objective-C implementation of mock objects. - -For downloads, documentation, and support please visit [ocmock.org][]. - -[![Build Status](https://travis-ci.org/erikdoe/ocmock.svg?branch=master)](https://travis-ci.org/erikdoe/ocmock) - - [ocmock.org]: http://ocmock.org/ diff --git a/Example/Pods/OCMock/Source/OCMock/NSInvocation+OCMAdditions.h b/Example/Pods/OCMock/Source/OCMock/NSInvocation+OCMAdditions.h deleted file mode 100644 index c14278fd..00000000 --- a/Example/Pods/OCMock/Source/OCMock/NSInvocation+OCMAdditions.h +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright (c) 2006-2015 Erik Doernenburg and contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may - * not use these files except in compliance with the License. You may obtain - * a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - */ - -#import - -@interface NSInvocation(OCMAdditions) - -+ (NSInvocation *)invocationForBlock:(id)block withArguments:(NSArray *)arguments; - -- (BOOL)hasCharPointerArgument; - -- (id)getArgumentAtIndexAsObject:(NSInteger)argIndex; - -- (NSString *)invocationDescription; - -- (NSString *)argumentDescriptionAtIndex:(NSInteger)argIndex; - -- (NSString *)objectDescriptionAtIndex:(NSInteger)anInt; -- (NSString *)charDescriptionAtIndex:(NSInteger)anInt; -- (NSString *)unsignedCharDescriptionAtIndex:(NSInteger)anInt; -- (NSString *)intDescriptionAtIndex:(NSInteger)anInt; -- (NSString *)unsignedIntDescriptionAtIndex:(NSInteger)anInt; -- (NSString *)shortDescriptionAtIndex:(NSInteger)anInt; -- (NSString *)unsignedShortDescriptionAtIndex:(NSInteger)anInt; -- (NSString *)longDescriptionAtIndex:(NSInteger)anInt; -- (NSString *)unsignedLongDescriptionAtIndex:(NSInteger)anInt; -- (NSString *)longLongDescriptionAtIndex:(NSInteger)anInt; -- (NSString *)unsignedLongLongDescriptionAtIndex:(NSInteger)anInt; -- (NSString *)doubleDescriptionAtIndex:(NSInteger)anInt; -- (NSString *)floatDescriptionAtIndex:(NSInteger)anInt; -- (NSString *)structDescriptionAtIndex:(NSInteger)anInt; -- (NSString *)pointerDescriptionAtIndex:(NSInteger)anInt; -- (NSString *)cStringDescriptionAtIndex:(NSInteger)anInt; -- (NSString *)selectorDescriptionAtIndex:(NSInteger)anInt; - -@end diff --git a/Example/Pods/OCMock/Source/OCMock/NSInvocation+OCMAdditions.m b/Example/Pods/OCMock/Source/OCMock/NSInvocation+OCMAdditions.m deleted file mode 100644 index 6e2f484d..00000000 --- a/Example/Pods/OCMock/Source/OCMock/NSInvocation+OCMAdditions.m +++ /dev/null @@ -1,450 +0,0 @@ -/* - * Copyright (c) 2006-2015 Erik Doernenburg and contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may - * not use these files except in compliance with the License. You may obtain - * a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - */ - -#import "NSInvocation+OCMAdditions.h" -#import "OCMFunctionsPrivate.h" -#import "NSMethodSignature+OCMAdditions.h" - - -@implementation NSInvocation(OCMAdditions) - -+ (NSInvocation *)invocationForBlock:(id)block withArguments:(NSArray *)arguments -{ - NSMethodSignature *sig = [NSMethodSignature signatureForBlock:block]; - NSInvocation *inv = [self invocationWithMethodSignature:sig]; - - NSUInteger numArgsRequired = sig.numberOfArguments - 1; - if((arguments != nil) && ([arguments count] != numArgsRequired)) - [NSException raise:NSInvalidArgumentException format:@"Specified too few arguments for block; expected %lu arguments.", (unsigned long) numArgsRequired]; - - for(NSUInteger i = 0, j = 1; i < numArgsRequired; ++i, ++j) - { - id arg = [arguments objectAtIndex:i]; - char const *typeEncoding = [sig getArgumentTypeAtIndex:j]; - - if((arg == nil) || [arg isKindOfClass:[NSNull class]]) - { - if(typeEncoding[0] == '^') - { - void *nullPtr = NULL; - [inv setArgument:&nullPtr atIndex:j]; - } - else if(typeEncoding[0] == '@') - { - id nilObj = nil; - [inv setArgument:&nilObj atIndex:j]; - } - else if(OCMNumberTypeForObjCType(typeEncoding)) - { - NSUInteger zero = 0; - [inv setArgument:&zero atIndex:j]; - } - else - { - [NSException raise:NSInvalidArgumentException format:@"Unable to create default value for type %s. All arguments must be specified for this block.", typeEncoding]; - } - } - else if (typeEncoding[0] == '@') - { - [inv setArgument:&arg atIndex:j]; - } - else - { - if(![arg isKindOfClass:[NSValue class]]) - [NSException raise:NSInvalidArgumentException format:@"Argument at index %lu should be boxed in NSValue.", (long unsigned)i]; - - char const *valEncoding = [arg objCType]; - - /// @note Here we allow any data pointer to be passed as a void pointer and - /// any numberical types to be passed as arguments to the block. - BOOL takesVoidPtr = !strcmp(typeEncoding, "^v") && valEncoding[0] == '^'; - BOOL takesNumber = OCMNumberTypeForObjCType(typeEncoding) && OCMNumberTypeForObjCType(valEncoding); - - if(!takesVoidPtr && !takesNumber && !OCMEqualTypesAllowingOpaqueStructs(typeEncoding, valEncoding)) - [NSException raise:NSInvalidArgumentException format:@"Argument type mismatch; Block requires %s but argument provided is %s", typeEncoding, valEncoding]; - - NSUInteger argSize; - NSGetSizeAndAlignment(typeEncoding, &argSize, NULL); - void *argBuffer = malloc(argSize); - [arg getValue:argBuffer]; - [inv setArgument:argBuffer atIndex:j]; - free(argBuffer); - } - } - - return inv; - -} - - -- (BOOL)hasCharPointerArgument -{ - NSMethodSignature *signature = [self methodSignature]; - for(NSUInteger i = 0; i < [signature numberOfArguments]; i++) - { - const char *argType = OCMTypeWithoutQualifiers([signature getArgumentTypeAtIndex:i]); - if(strcmp(argType, "*") == 0) - return YES; - } - return NO; -} - - -- (id)getArgumentAtIndexAsObject:(NSInteger)argIndex -{ - const char *argType = OCMTypeWithoutQualifiers([[self methodSignature] getArgumentTypeAtIndex:(NSUInteger)argIndex]); - - if((strlen(argType) > 1) && (strchr("{^", argType[0]) == NULL) && (strcmp("@?", argType) != 0)) - [NSException raise:NSInvalidArgumentException format:@"Cannot handle argument type '%s'.", argType]; - - if(OCMIsObjectType(argType)) - { - id value; - [self getArgument:&value atIndex:argIndex]; - return value; - } - - switch(argType[0]) - { - case ':': - { - SEL s = (SEL)0; - [self getArgument:&s atIndex:argIndex]; - return [NSValue valueWithBytes:&s objCType:":"]; - } - case 'i': - { - int value; - [self getArgument:&value atIndex:argIndex]; - return @(value); - } - case 's': - { - short value; - [self getArgument:&value atIndex:argIndex]; - return @(value); - } - case 'l': - { - long value; - [self getArgument:&value atIndex:argIndex]; - return @(value); - } - case 'q': - { - long long value; - [self getArgument:&value atIndex:argIndex]; - return @(value); - } - case 'c': - { - char value; - [self getArgument:&value atIndex:argIndex]; - return @(value); - } - case 'C': - { - unsigned char value; - [self getArgument:&value atIndex:argIndex]; - return @(value); - } - case 'I': - { - unsigned int value; - [self getArgument:&value atIndex:argIndex]; - return @(value); - } - case 'S': - { - unsigned short value; - [self getArgument:&value atIndex:argIndex]; - return @(value); - } - case 'L': - { - unsigned long value; - [self getArgument:&value atIndex:argIndex]; - return @(value); - } - case 'Q': - { - unsigned long long value; - [self getArgument:&value atIndex:argIndex]; - return @(value); - } - case 'f': - { - float value; - [self getArgument:&value atIndex:argIndex]; - return @(value); - } - case 'd': - { - double value; - [self getArgument:&value atIndex:argIndex]; - return @(value); - } - case 'D': - { - long double value; - [self getArgument:&value atIndex:argIndex]; - return [NSValue valueWithBytes:&value objCType:@encode(__typeof__(value))]; - } - case 'B': - { - bool value; - [self getArgument:&value atIndex:argIndex]; - return @(value); - } - case '^': - case '*': - { - void *value = NULL; - [self getArgument:&value atIndex:argIndex]; - return [NSValue valueWithPointer:value]; - } - case '{': // structure - { - NSUInteger argSize; - NSGetSizeAndAlignment([[self methodSignature] getArgumentTypeAtIndex:(NSUInteger)argIndex], &argSize, NULL); - if(argSize == 0) // TODO: Can this happen? Is frameLength a good choice in that case? - argSize = [[self methodSignature] frameLength]; - NSMutableData *argumentData = [[[NSMutableData alloc] initWithLength:argSize] autorelease]; - [self getArgument:[argumentData mutableBytes] atIndex:argIndex]; - return [NSValue valueWithBytes:[argumentData bytes] objCType:argType]; - } - - } - [NSException raise:NSInvalidArgumentException format:@"Argument type '%s' not supported", argType]; - return nil; -} - -- (NSString *)invocationDescription -{ - NSMethodSignature *methodSignature = [self methodSignature]; - NSUInteger numberOfArgs = [methodSignature numberOfArguments]; - - if (numberOfArgs == 2) - return NSStringFromSelector([self selector]); - - NSArray *selectorParts = [NSStringFromSelector([self selector]) componentsSeparatedByString:@":"]; - NSMutableString *description = [[NSMutableString alloc] init]; - NSUInteger i; - for(i = 2; i < numberOfArgs; i++) - { - [description appendFormat:@"%@%@:", (i > 2 ? @" " : @""), [selectorParts objectAtIndex:(i - 2)]]; - [description appendString:[self argumentDescriptionAtIndex:(NSInteger)i]]; - } - - return [description autorelease]; -} - -- (NSString *)argumentDescriptionAtIndex:(NSInteger)argIndex -{ - const char *argType = OCMTypeWithoutQualifiers([[self methodSignature] getArgumentTypeAtIndex:(NSUInteger)argIndex]); - - switch(*argType) - { - case '@': return [self objectDescriptionAtIndex:argIndex]; - case 'B': return [self boolDescriptionAtIndex:argIndex]; - case 'c': return [self charDescriptionAtIndex:argIndex]; - case 'C': return [self unsignedCharDescriptionAtIndex:argIndex]; - case 'i': return [self intDescriptionAtIndex:argIndex]; - case 'I': return [self unsignedIntDescriptionAtIndex:argIndex]; - case 's': return [self shortDescriptionAtIndex:argIndex]; - case 'S': return [self unsignedShortDescriptionAtIndex:argIndex]; - case 'l': return [self longDescriptionAtIndex:argIndex]; - case 'L': return [self unsignedLongDescriptionAtIndex:argIndex]; - case 'q': return [self longLongDescriptionAtIndex:argIndex]; - case 'Q': return [self unsignedLongLongDescriptionAtIndex:argIndex]; - case 'd': return [self doubleDescriptionAtIndex:argIndex]; - case 'f': return [self floatDescriptionAtIndex:argIndex]; - case 'D': return [self longDoubleDescriptionAtIndex:argIndex]; - case '{': return [self structDescriptionAtIndex:argIndex]; - case '^': return [self pointerDescriptionAtIndex:argIndex]; - case '*': return [self cStringDescriptionAtIndex:argIndex]; - case ':': return [self selectorDescriptionAtIndex:argIndex]; - default: return [@""]; // avoid confusion with trigraphs... - } - -} - - -- (NSString *)objectDescriptionAtIndex:(NSInteger)anInt -{ - id object; - - [self getArgument:&object atIndex:anInt]; - if (object == nil) - return @"nil"; - else if(![object isProxy] && [object isKindOfClass:[NSString class]]) - return [NSString stringWithFormat:@"@\"%@\"", [object description]]; - else - // The description cannot be nil, if it is then replace it - return [object description] ?: @""; -} - -- (NSString *)boolDescriptionAtIndex:(NSInteger)anInt -{ - bool value; - [self getArgument:&value atIndex:anInt]; - return value? @"YES" : @"NO"; -} - -- (NSString *)charDescriptionAtIndex:(NSInteger)anInt -{ - unsigned char buffer[128]; - memset(buffer, 0x0, 128); - - [self getArgument:&buffer atIndex:anInt]; - - // If there's only one character in the buffer, and it's 0 or 1, then we have a BOOL - if (buffer[1] == '\0' && (buffer[0] == 0 || buffer[0] == 1)) - return (buffer[0] == 1 ? @"YES" : @"NO"); - else - return [NSString stringWithFormat:@"'%c'", *buffer]; -} - -- (NSString *)unsignedCharDescriptionAtIndex:(NSInteger)anInt -{ - unsigned char buffer[128]; - memset(buffer, 0x0, 128); - - [self getArgument:&buffer atIndex:anInt]; - return [NSString stringWithFormat:@"'%c'", *buffer]; -} - -- (NSString *)intDescriptionAtIndex:(NSInteger)anInt -{ - int intValue; - - [self getArgument:&intValue atIndex:anInt]; - return [NSString stringWithFormat:@"%d", intValue]; -} - -- (NSString *)unsignedIntDescriptionAtIndex:(NSInteger)anInt -{ - unsigned int intValue; - - [self getArgument:&intValue atIndex:anInt]; - return [NSString stringWithFormat:@"%d", intValue]; -} - -- (NSString *)shortDescriptionAtIndex:(NSInteger)anInt -{ - short shortValue; - - [self getArgument:&shortValue atIndex:anInt]; - return [NSString stringWithFormat:@"%hi", shortValue]; -} - -- (NSString *)unsignedShortDescriptionAtIndex:(NSInteger)anInt -{ - unsigned short shortValue; - - [self getArgument:&shortValue atIndex:anInt]; - return [NSString stringWithFormat:@"%hu", shortValue]; -} - -- (NSString *)longDescriptionAtIndex:(NSInteger)anInt -{ - long longValue; - - [self getArgument:&longValue atIndex:anInt]; - return [NSString stringWithFormat:@"%ld", longValue]; -} - -- (NSString *)unsignedLongDescriptionAtIndex:(NSInteger)anInt -{ - unsigned long longValue; - - [self getArgument:&longValue atIndex:anInt]; - return [NSString stringWithFormat:@"%lu", longValue]; -} - -- (NSString *)longLongDescriptionAtIndex:(NSInteger)anInt -{ - long long longLongValue; - - [self getArgument:&longLongValue atIndex:anInt]; - return [NSString stringWithFormat:@"%qi", longLongValue]; -} - -- (NSString *)unsignedLongLongDescriptionAtIndex:(NSInteger)anInt -{ - unsigned long long longLongValue; - - [self getArgument:&longLongValue atIndex:anInt]; - return [NSString stringWithFormat:@"%qu", longLongValue]; -} - -- (NSString *)doubleDescriptionAtIndex:(NSInteger)anInt -{ - double doubleValue; - - [self getArgument:&doubleValue atIndex:anInt]; - return [NSString stringWithFormat:@"%f", doubleValue]; -} - -- (NSString *)floatDescriptionAtIndex:(NSInteger)anInt -{ - float floatValue; - - [self getArgument:&floatValue atIndex:anInt]; - return [NSString stringWithFormat:@"%f", floatValue]; -} - -- (NSString *)longDoubleDescriptionAtIndex:(NSInteger)anInt -{ - long double longDoubleValue; - - [self getArgument:&longDoubleValue atIndex:anInt]; - return [NSString stringWithFormat:@"%Lf", longDoubleValue]; -} - -- (NSString *)structDescriptionAtIndex:(NSInteger)anInt -{ - return [NSString stringWithFormat:@"(%@)", [[self getArgumentAtIndexAsObject:anInt] description]]; -} - -- (NSString *)pointerDescriptionAtIndex:(NSInteger)anInt -{ - void *buffer; - - [self getArgument:&buffer atIndex:anInt]; - return [NSString stringWithFormat:@"%p", buffer]; -} - -- (NSString *)cStringDescriptionAtIndex:(NSInteger)anInt -{ - char buffer[104]; - char *cStringPtr; - - [self getArgument:&cStringPtr atIndex:anInt]; - strlcpy(buffer, cStringPtr, sizeof(buffer)); - strlcpy(buffer + 100, "...", (sizeof(buffer) - 100)); - return [NSString stringWithFormat:@"\"%s\"", buffer]; -} - -- (NSString *)selectorDescriptionAtIndex:(NSInteger)anInt -{ - SEL selectorValue; - - [self getArgument:&selectorValue atIndex:anInt]; - return [NSString stringWithFormat:@"@selector(%@)", NSStringFromSelector(selectorValue)]; -} - -@end diff --git a/Example/Pods/OCMock/Source/OCMock/NSMethodSignature+OCMAdditions.h b/Example/Pods/OCMock/Source/OCMock/NSMethodSignature+OCMAdditions.h deleted file mode 100644 index 07864679..00000000 --- a/Example/Pods/OCMock/Source/OCMock/NSMethodSignature+OCMAdditions.h +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright (c) 2009-2015 Erik Doernenburg and contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may - * not use these files except in compliance with the License. You may obtain - * a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - */ - -#import - -@interface NSMethodSignature(OCMAdditions) - -+ (NSMethodSignature *)signatureForDynamicPropertyAccessedWithSelector:(SEL)selector inClass:(Class)aClass; -+ (NSMethodSignature *)signatureForBlock:(id)block; - -- (BOOL)usesSpecialStructureReturn; - -- (NSString *)fullTypeString; -- (const char *)fullObjCTypes; - -@end diff --git a/Example/Pods/OCMock/Source/OCMock/NSMethodSignature+OCMAdditions.m b/Example/Pods/OCMock/Source/OCMock/NSMethodSignature+OCMAdditions.m deleted file mode 100644 index 75c0b4de..00000000 --- a/Example/Pods/OCMock/Source/OCMock/NSMethodSignature+OCMAdditions.m +++ /dev/null @@ -1,205 +0,0 @@ -/* - * Copyright (c) 2009-2015 Erik Doernenburg and contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may - * not use these files except in compliance with the License. You may obtain - * a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - */ - -#import "NSMethodSignature+OCMAdditions.h" -#import "OCMFunctionsPrivate.h" -#import - - -@implementation NSMethodSignature(OCMAdditions) - -#pragma mark Signatures for dynamic properties - -+ (NSMethodSignature *)signatureForDynamicPropertyAccessedWithSelector:(SEL)selector inClass:(Class)aClass -{ - BOOL isGetter = YES; - objc_property_t property = [self propertyMatchingSelector:selector inClass:aClass isGetter:&isGetter]; - if(property == NULL) - return nil; - - const char *propertyAttributesString = property_getAttributes(property); - NSArray *propertyAttributes = [[NSString stringWithCString:propertyAttributesString - encoding:NSASCIIStringEncoding] componentsSeparatedByString:@","]; - NSString *typeStr = nil; - BOOL isDynamic = NO; - for(NSString *attribute in propertyAttributes) - { - if([attribute isEqualToString:@"D"]) - isDynamic = YES; - else if([attribute hasPrefix:@"T"]) - typeStr = [attribute substringFromIndex:1]; - } - - if(!isDynamic) - return nil; - - NSRange r = [typeStr rangeOfString:@"\""]; // incomplete workaround to deal with structs - if(r.location != NSNotFound) - typeStr = [typeStr substringToIndex:r.location]; - - NSString *sigStringFormat = isGetter ? @"%@@:" : @"v@:%@"; - const char *sigCString = [[NSString stringWithFormat:sigStringFormat, typeStr] cStringUsingEncoding:NSASCIIStringEncoding]; - return [NSMethodSignature signatureWithObjCTypes:sigCString]; -} - - -+ (objc_property_t)propertyMatchingSelector:(SEL)selector inClass:(Class)aClass isGetter:(BOOL *)isGetterPtr -{ - NSString *propertyName = NSStringFromSelector(selector); - - // first try selector as is aassuming it's a getter - objc_property_t property = class_getProperty(aClass, [propertyName cStringUsingEncoding:NSASCIIStringEncoding]); - if(property != NULL) - { - *isGetterPtr = YES; - return property; - } - - // try setter next if selector starts with "set" - if([propertyName hasPrefix:@"set"]) - { - propertyName = [propertyName substringFromIndex:@"set".length]; - propertyName = [propertyName stringByReplacingCharactersInRange:NSMakeRange(0, 1) withString:[[propertyName substringToIndex:1] lowercaseString]]; - if([propertyName hasSuffix:@":"]) - propertyName = [propertyName substringToIndex:[propertyName length] - 1]; - - property = class_getProperty(aClass, [propertyName cStringUsingEncoding:NSASCIIStringEncoding]); - if(property != NULL) - { - *isGetterPtr = NO; - return property; - } - } - - // search through properties with custom getter/setter that corresponds to selector - unsigned int propertiesCount = 0; - objc_property_t *allProperties = class_copyPropertyList(aClass, &propertiesCount); - for(unsigned int i = 0 ; i < propertiesCount; i++) - { - NSArray *propertyAttributes = [[NSString stringWithCString:property_getAttributes(allProperties[i]) - encoding:NSASCIIStringEncoding] componentsSeparatedByString:@","]; - for(NSString *attribute in propertyAttributes) - { - if(([attribute hasPrefix:@"G"] || [attribute hasPrefix:@"S"]) && - [[attribute substringFromIndex:1] isEqualToString:propertyName]) - { - *isGetterPtr = ![attribute hasPrefix:@"S"]; - property = allProperties[i]; - i = propertiesCount; - break; - } - } - } - free(allProperties); - - return property; -} - - -#pragma mark Signatures for blocks - -struct OCMBlockDef -{ - void *isa; // initialized to &_NSConcreteStackBlock or &_NSConcreteGlobalBlock - int flags; - int reserved; - void (*invoke)(void *, ...); - struct block_descriptor { - unsigned long int reserved; // NULL - unsigned long int size; // sizeof(struct Block_literal_1) - // optional helper functions - void (*copy_helper)(void *dst, void *src); // IFF (1<<25) - void (*dispose_helper)(void *src); // IFF (1<<25) - // required ABI.2010.3.16 - const char *signature; // IFF (1<<30) - } *descriptor; -}; - -enum -{ - OCMBlockDescriptionFlagsHasCopyDispose = (1 << 25), - OCMBlockDescriptionFlagsHasSignature = (1 << 30) -}; - - -+ (NSMethodSignature *)signatureForBlock:(id)block -{ - /* For a more complete implementation of parsing the block data structure see: - * - * https://github.com/ebf/CTObjectiveCRuntimeAdditions/tree/master/CTObjectiveCRuntimeAdditions/CTObjectiveCRuntimeAdditions - */ - - struct OCMBlockDef *blockRef = (__bridge struct OCMBlockDef *)block; - - if(!(blockRef->flags & OCMBlockDescriptionFlagsHasSignature)) - return nil; - - void *signatureLocation = blockRef->descriptor; - signatureLocation += sizeof(unsigned long int); - signatureLocation += sizeof(unsigned long int); - if(blockRef->flags & OCMBlockDescriptionFlagsHasCopyDispose) - { - signatureLocation += sizeof(void(*)(void *dst, void *src)); - signatureLocation += sizeof(void (*)(void *src)); - } - - const char *signature = (*(const char **)signatureLocation); - return [NSMethodSignature signatureWithObjCTypes:signature]; -} - - -#pragma mark Extended attributes - -- (BOOL)usesSpecialStructureReturn -{ - const char *types = OCMTypeWithoutQualifiers([self methodReturnType]); - - if((types == NULL) || (types[0] != '{')) - return NO; - - /* In some cases structures are returned by ref. The rules are complex and depend on the - architecture, see: - - http://sealiesoftware.com/blog/archive/2008/10/30/objc_explain_objc_msgSend_stret.html - http://developer.apple.com/library/mac/#documentation/DeveloperTools/Conceptual/LowLevelABI/000-Introduction/introduction.html - https://github.com/atgreen/libffi/blob/master/src/x86/ffi64.c - http://www.uclibc.org/docs/psABI-x86_64.pdf - http://infocenter.arm.com/help/topic/com.arm.doc.ihi0042e/IHI0042E_aapcs.pdf - - NSMethodSignature knows the details but has no API to return it, though it is in - the debugDescription. Horribly kludgy. - */ - NSRange range = [[self debugDescription] rangeOfString:@"is special struct return? YES"]; - return range.length > 0; -} - - -- (NSString *)fullTypeString -{ - NSMutableString *typeString = [NSMutableString string]; - [typeString appendFormat:@"%s", [self methodReturnType]]; - for (NSUInteger i=0; i<[self numberOfArguments]; i++) - [typeString appendFormat:@"%s", [self getArgumentTypeAtIndex:i]]; - return typeString; -} - - -- (const char *)fullObjCTypes -{ - return [[self fullTypeString] UTF8String]; -} - -@end diff --git a/Example/Pods/OCMock/Source/OCMock/NSNotificationCenter+OCMAdditions.h b/Example/Pods/OCMock/Source/OCMock/NSNotificationCenter+OCMAdditions.h deleted file mode 100644 index b54e2b78..00000000 --- a/Example/Pods/OCMock/Source/OCMock/NSNotificationCenter+OCMAdditions.h +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Copyright (c) 2009-2015 Erik Doernenburg and contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may - * not use these files except in compliance with the License. You may obtain - * a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - */ - -#import - -@class OCObserverMockObject; - - -@interface NSNotificationCenter(OCMAdditions) - -- (void)addMockObserver:(OCObserverMockObject *)notificationObserver name:(NSString *)notificationName object:(id)notificationSender; - -@end diff --git a/Example/Pods/OCMock/Source/OCMock/NSNotificationCenter+OCMAdditions.m b/Example/Pods/OCMock/Source/OCMock/NSNotificationCenter+OCMAdditions.m deleted file mode 100644 index b83da822..00000000 --- a/Example/Pods/OCMock/Source/OCMock/NSNotificationCenter+OCMAdditions.m +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright (c) 2009-2015 Erik Doernenburg and contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may - * not use these files except in compliance with the License. You may obtain - * a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - */ - -#import "NSNotificationCenter+OCMAdditions.h" -#import "OCObserverMockObject.h" - - -@implementation NSNotificationCenter(OCMAdditions) - -- (void)addMockObserver:(OCObserverMockObject *)notificationObserver name:(NSString *)notificationName object:(id)notificationSender -{ - [notificationObserver autoRemoveFromCenter:self]; - [self addObserver:notificationObserver selector:@selector(handleNotification:) name:notificationName object:notificationSender]; -} - -@end diff --git a/Example/Pods/OCMock/Source/OCMock/NSObject+OCMAdditions.h b/Example/Pods/OCMock/Source/OCMock/NSObject+OCMAdditions.h deleted file mode 100644 index 805a9589..00000000 --- a/Example/Pods/OCMock/Source/OCMock/NSObject+OCMAdditions.h +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright (c) 2013-2015 Erik Doernenburg and contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may - * not use these files except in compliance with the License. You may obtain - * a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - */ - -#import - -@interface NSObject(OCMAdditions) - -+ (IMP)instanceMethodForwarderForSelector:(SEL)aSelector; -+ (void)enumerateMethodsInClass:(Class)aClass usingBlock:(void (^)(Class cls, SEL sel))aBlock; - -@end diff --git a/Example/Pods/OCMock/Source/OCMock/NSObject+OCMAdditions.m b/Example/Pods/OCMock/Source/OCMock/NSObject+OCMAdditions.m deleted file mode 100644 index f453f8c5..00000000 --- a/Example/Pods/OCMock/Source/OCMock/NSObject+OCMAdditions.m +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Copyright (c) 2009-2015 Erik Doernenburg and contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may - * not use these files except in compliance with the License. You may obtain - * a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - */ - -#import "NSObject+OCMAdditions.h" -#import "NSMethodSignature+OCMAdditions.h" -#import - -@implementation NSObject(OCMAdditions) - -+ (IMP)instanceMethodForwarderForSelector:(SEL)aSelector -{ - // use sel_registerName() and not @selector to avoid warning - SEL selectorWithNoImplementation = sel_registerName("methodWhichMustNotExist::::"); - -#ifndef __arm64__ - static NSMutableDictionary *_OCMReturnTypeCache; - - if(_OCMReturnTypeCache == nil) - _OCMReturnTypeCache = [[NSMutableDictionary alloc] init]; - - BOOL needsStructureReturn; - void *rawCacheKey[2] = { (void *)self, aSelector }; - NSData *cacheKey = [NSData dataWithBytes:rawCacheKey length:sizeof(rawCacheKey)]; - NSNumber *cachedValue = [_OCMReturnTypeCache objectForKey:cacheKey]; - - if(cachedValue == nil) - { - NSMethodSignature *sig = [self instanceMethodSignatureForSelector:aSelector]; - needsStructureReturn = [sig usesSpecialStructureReturn]; - [_OCMReturnTypeCache setObject:@(needsStructureReturn) forKey:cacheKey]; - } - else - { - needsStructureReturn = [cachedValue boolValue]; - } - - if(needsStructureReturn) - return class_getMethodImplementation_stret([NSObject class], selectorWithNoImplementation); -#endif - - return class_getMethodImplementation([NSObject class], selectorWithNoImplementation); -} - - -+ (void)enumerateMethodsInClass:(Class)aClass usingBlock:(void (^)(Class cls, SEL sel))aBlock -{ - for(Class cls = aClass; cls != nil; cls = class_getSuperclass(cls)) - { - Method *methodList = class_copyMethodList(cls, NULL); - if(methodList == NULL) - continue; - - for(Method *mPtr = methodList; *mPtr != NULL; mPtr++) - { - SEL sel = method_getName(*mPtr); - aBlock(cls, sel); - } - free(methodList); - } -} - - -@end diff --git a/Example/Pods/OCMock/Source/OCMock/NSValue+OCMAdditions.h b/Example/Pods/OCMock/Source/OCMock/NSValue+OCMAdditions.h deleted file mode 100644 index 81aa60a5..00000000 --- a/Example/Pods/OCMock/Source/OCMock/NSValue+OCMAdditions.h +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Copyright (c) 2014-2015 Erik Doernenburg and contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may - * not use these files except in compliance with the License. You may obtain - * a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - */ - -#import - -@interface NSValue(OCMAdditions) - -- (BOOL)getBytes:(void *)outputBuf objCType:(const char *)targetType; - -@end diff --git a/Example/Pods/OCMock/Source/OCMock/NSValue+OCMAdditions.m b/Example/Pods/OCMock/Source/OCMock/NSValue+OCMAdditions.m deleted file mode 100644 index 50180e00..00000000 --- a/Example/Pods/OCMock/Source/OCMock/NSValue+OCMAdditions.m +++ /dev/null @@ -1,85 +0,0 @@ -/* - * Copyright (c) 2014-2015 Erik Doernenburg and contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may - * not use these files except in compliance with the License. You may obtain - * a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - */ - -#import "NSValue+OCMAdditions.h" -#import "OCMFunctionsPrivate.h" - -@implementation NSValue(OCMAdditions) - -static NSNumber *OCMNumberForValue(NSValue *value) -{ -#define CREATE_NUM(_type) ({ _type _v; [value getValue:&_v]; @(_v); }) - switch([value objCType][0]) - { - case 'c': return CREATE_NUM(char); - case 'C': return CREATE_NUM(unsigned char); - case 'B': return CREATE_NUM(bool); - case 's': return CREATE_NUM(short); - case 'S': return CREATE_NUM(unsigned short); - case 'i': return CREATE_NUM(int); - case 'I': return CREATE_NUM(unsigned int); - case 'l': return CREATE_NUM(long); - case 'L': return CREATE_NUM(unsigned long); - case 'q': return CREATE_NUM(long long); - case 'Q': return CREATE_NUM(unsigned long long); - case 'f': return CREATE_NUM(float); - case 'd': return CREATE_NUM(double); - default: return nil; - } -} - - -- (BOOL)getBytes:(void *)outputBuf objCType:(const char *)targetType -{ - /* - * See if they are similar number types, and if we can convert losslessly between them. - * For the most part, we set things up to use CFNumberGetValue, which returns false if - * conversion will be lossy. - */ - CFNumberType inputType = OCMNumberTypeForObjCType([self objCType]); - CFNumberType outputType = OCMNumberTypeForObjCType(targetType); - - if(inputType == 0 || outputType == 0) // one or both are non-number types - return NO; - - NSNumber *inputNumber = [self isKindOfClass:[NSNumber class]] ? (NSNumber *)self : OCMNumberForValue(self); - - /* - * Due to some legacy, back-compatible requirements in CFNumber.c, CFNumberGetValue can return true for - * some conversions which should not be allowed (by reading source, conversions from integer types to - * 8-bit or 16-bit integer types). So, check ourselves. - */ - long long min; - long long max; - long long val = [inputNumber longLongValue]; - switch(targetType[0]) - { - case 'B': - case 'c': min = CHAR_MIN; max = CHAR_MAX; break; - case 'C': min = 0; max = UCHAR_MAX; break; - case 's': min = SHRT_MIN; max = SHRT_MAX; break; - case 'S': min = 0; max = USHRT_MAX; break; - default: min = LLONG_MIN; max = LLONG_MAX; break; - } - if(val < min || val > max) - return NO; - - /* Get the number, and return NO if the value was out of range or conversion was lossy */ - return CFNumberGetValue((CFNumberRef)inputNumber, outputType, outputBuf); -} - - -@end diff --git a/Example/Pods/OCMock/Source/OCMock/OCClassMockObject.h b/Example/Pods/OCMock/Source/OCMock/OCClassMockObject.h deleted file mode 100644 index e5f9cd86..00000000 --- a/Example/Pods/OCMock/Source/OCMock/OCClassMockObject.h +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Copyright (c) 2005-2015 Erik Doernenburg and contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may - * not use these files except in compliance with the License. You may obtain - * a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - */ - -#import - -@interface OCClassMockObject : OCMockObject -{ - Class mockedClass; - Class originalMetaClass; -} - -- (id)initWithClass:(Class)aClass; - -- (Class)mockedClass; -- (Class)mockObjectClass; // since -class returns the mockedClass - -@end diff --git a/Example/Pods/OCMock/Source/OCMock/OCClassMockObject.m b/Example/Pods/OCMock/Source/OCMock/OCClassMockObject.m deleted file mode 100644 index a6dec01f..00000000 --- a/Example/Pods/OCMock/Source/OCMock/OCClassMockObject.m +++ /dev/null @@ -1,284 +0,0 @@ -/* - * Copyright (c) 2005-2015 Erik Doernenburg and contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may - * not use these files except in compliance with the License. You may obtain - * a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - */ - -#import -#import "OCClassMockObject.h" -#import "NSObject+OCMAdditions.h" -#import "OCMFunctionsPrivate.h" -#import "OCMInvocationStub.h" -#import "NSMethodSignature+OCMAdditions.h" - -@implementation OCClassMockObject - -#pragma mark Initialisers, description, accessors, etc. - -- (id)initWithClass:(Class)aClass -{ - NSParameterAssert(aClass != nil); - [super init]; - mockedClass = aClass; - [self prepareClassForClassMethodMocking]; - return self; -} - -- (void)dealloc -{ - [self stopMocking]; - [super dealloc]; -} - -- (NSString *)description -{ - return [NSString stringWithFormat:@"OCMockObject(%@)", NSStringFromClass(mockedClass)]; -} - -- (Class)mockedClass -{ - return mockedClass; -} - -#pragma mark Extending/overriding superclass behaviour - -- (void)stopMocking -{ - if(originalMetaClass != nil) - [self restoreMetaClass]; - [super stopMocking]; -} - -- (void)restoreMetaClass -{ - OCMSetAssociatedMockForClass(nil, mockedClass); - object_setClass(mockedClass, originalMetaClass); - originalMetaClass = nil; -} - -- (void)addStub:(OCMInvocationStub *)aStub -{ - [super addStub:aStub]; - if([aStub recordedAsClassMethod]) - [self setupForwarderForClassMethodSelector:[[aStub recordedInvocation] selector]]; -} - - -#pragma mark Class method mocking - -- (void)prepareClassForClassMethodMocking -{ - /* haven't figured out how to work around runtime dependencies on NSString, so exclude it for now */ - if([[mockedClass class] isSubclassOfClass:[NSString class]]) - return; - - /* if there is another mock for this exact class, stop it */ - id otherMock = OCMGetAssociatedMockForClass(mockedClass, NO); - if(otherMock != nil) - [otherMock restoreMetaClass]; - - OCMSetAssociatedMockForClass(self, mockedClass); - - /* dynamically create a subclass and use its meta class as the meta class for the mocked class */ - Class subclass = OCMCreateSubclass(mockedClass, mockedClass); - originalMetaClass = object_getClass(mockedClass); - id newMetaClass = object_getClass(subclass); - - /* create a dummy initialize method */ - Method myDummyInitializeMethod = class_getInstanceMethod([self mockObjectClass], @selector(initializeForClassObject)); - const char *initializeTypes = method_getTypeEncoding(myDummyInitializeMethod); - IMP myDummyInitializeIMP = method_getImplementation(myDummyInitializeMethod); - class_addMethod(newMetaClass, @selector(initialize), myDummyInitializeIMP, initializeTypes); - - object_setClass(mockedClass, newMetaClass); // only after dummy initialize is installed (iOS9) - - /* point forwardInvocation: of the object to the implementation in the mock */ - Method myForwardMethod = class_getInstanceMethod([self mockObjectClass], @selector(forwardInvocationForClassObject:)); - IMP myForwardIMP = method_getImplementation(myForwardMethod); - class_addMethod(newMetaClass, @selector(forwardInvocation:), myForwardIMP, method_getTypeEncoding(myForwardMethod)); - - - /* adding forwarder for most class methods (instance methods on meta class) to allow for verify after run */ - NSArray *methodBlackList = @[@"class", @"forwardingTargetForSelector:", @"methodSignatureForSelector:", @"forwardInvocation:", @"isBlock", - @"instanceMethodForwarderForSelector:", @"instanceMethodSignatureForSelector:"]; - [NSObject enumerateMethodsInClass:originalMetaClass usingBlock:^(Class cls, SEL sel) { - if((cls == object_getClass([NSObject class])) || (cls == [NSObject class]) || (cls == object_getClass(cls))) - return; - NSString *className = NSStringFromClass(cls); - NSString *selName = NSStringFromSelector(sel); - if(([className hasPrefix:@"NS"] || [className hasPrefix:@"UI"]) && - ([selName hasPrefix:@"_"] || [selName hasSuffix:@"_"])) - return; - if([methodBlackList containsObject:selName]) - return; - @try - { - [self setupForwarderForClassMethodSelector:sel]; - } - @catch(NSException *e) - { - // ignore for now - } - }]; -} - -- (void)setupForwarderForClassMethodSelector:(SEL)selector -{ - SEL aliasSelector = OCMAliasForOriginalSelector(selector); - if(class_getClassMethod(mockedClass, aliasSelector) != NULL) - return; - - Method originalMethod = class_getClassMethod(mockedClass, selector); - IMP originalIMP = method_getImplementation(originalMethod); - const char *types = method_getTypeEncoding(originalMethod); - - Class metaClass = object_getClass(mockedClass); - IMP forwarderIMP = [originalMetaClass instanceMethodForwarderForSelector:selector]; - class_replaceMethod(metaClass, selector, forwarderIMP, types); - class_addMethod(metaClass, aliasSelector, originalIMP, types); -} - - -- (void)forwardInvocationForClassObject:(NSInvocation *)anInvocation -{ - // in here "self" is a reference to the real class, not the mock - OCClassMockObject *mock = OCMGetAssociatedMockForClass((Class) self, YES); - if(mock == nil) - { - [NSException raise:NSInternalInconsistencyException format:@"No mock for class %@", NSStringFromClass((Class)self)]; - } - if([mock handleInvocation:anInvocation] == NO) - { - [anInvocation setSelector:OCMAliasForOriginalSelector([anInvocation selector])]; - [anInvocation invoke]; - } -} - -- (void)initializeForClassObject -{ - // we really just want to have an implementation so that the superclass's is not called -} - - -#pragma mark Proxy API - -- (NSMethodSignature *)methodSignatureForSelector:(SEL)aSelector -{ - NSMethodSignature *signature = [mockedClass instanceMethodSignatureForSelector:aSelector]; - if(signature == nil) - { - signature = [NSMethodSignature signatureForDynamicPropertyAccessedWithSelector:aSelector inClass:mockedClass]; - } - return signature; -} - -- (Class)mockObjectClass -{ - return [super class]; -} - -- (Class)class -{ - return mockedClass; -} - -- (BOOL)respondsToSelector:(SEL)selector -{ - return [mockedClass instancesRespondToSelector:selector]; -} - -- (BOOL)isKindOfClass:(Class)aClass -{ - return [mockedClass isSubclassOfClass:aClass]; -} - -- (BOOL)conformsToProtocol:(Protocol *)aProtocol -{ - return class_conformsToProtocol(mockedClass, aProtocol); -} - -@end - - -#pragma mark - - -/** - taken from: - `class-dump -f isNS /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator7.0.sdk/System/Library/Frameworks/CoreFoundation.framework` - - @interface NSObject (__NSIsKinds) - - (_Bool)isNSValue__; - - (_Bool)isNSTimeZone__; - - (_Bool)isNSString__; - - (_Bool)isNSSet__; - - (_Bool)isNSOrderedSet__; - - (_Bool)isNSNumber__; - - (_Bool)isNSDictionary__; - - (_Bool)isNSDate__; - - (_Bool)isNSData__; - - (_Bool)isNSArray__; - */ - -@implementation OCClassMockObject(NSIsKindsImplementation) - -- (BOOL)isNSValue__ -{ - return [mockedClass isSubclassOfClass:[NSValue class]]; -} - -- (BOOL)isNSTimeZone__ -{ - return [mockedClass isSubclassOfClass:[NSTimeZone class]]; -} - -- (BOOL)isNSSet__ -{ - return [mockedClass isSubclassOfClass:[NSSet class]]; -} - -- (BOOL)isNSOrderedSet__ -{ - return [mockedClass isSubclassOfClass:[NSOrderedSet class]]; -} - -- (BOOL)isNSNumber__ -{ - return [mockedClass isSubclassOfClass:[NSNumber class]]; -} - -- (BOOL)isNSDate__ -{ - return [mockedClass isSubclassOfClass:[NSDate class]]; -} - -- (BOOL)isNSString__ -{ - return [mockedClass isSubclassOfClass:[NSString class]]; -} - -- (BOOL)isNSDictionary__ -{ - return [mockedClass isSubclassOfClass:[NSDictionary class]]; -} - -- (BOOL)isNSData__ -{ - return [mockedClass isSubclassOfClass:[NSData class]]; -} - -- (BOOL)isNSArray__ -{ - return [mockedClass isSubclassOfClass:[NSArray class]]; -} - -@end diff --git a/Example/Pods/OCMock/Source/OCMock/OCMArg.h b/Example/Pods/OCMock/Source/OCMock/OCMArg.h deleted file mode 100644 index 5aaf0983..00000000 --- a/Example/Pods/OCMock/Source/OCMock/OCMArg.h +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Copyright (c) 2009-2015 Erik Doernenburg and contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may - * not use these files except in compliance with the License. You may obtain - * a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - */ - -#import - -@interface OCMArg : NSObject - -// constraining arguments - -+ (id)any; -+ (SEL)anySelector; -+ (void *)anyPointer; -+ (id __autoreleasing *)anyObjectRef; -+ (id)isNil; -+ (id)isNotNil; -+ (id)isEqual:(id)value; -+ (id)isNotEqual:(id)value; -+ (id)isKindOfClass:(Class)cls; -+ (id)checkWithSelector:(SEL)selector onObject:(id)anObject; -+ (id)checkWithBlock:(BOOL (^)(id obj))block; - -// manipulating arguments - -+ (id *)setTo:(id)value; -+ (void *)setToValue:(NSValue *)value; -+ (id)invokeBlock; -+ (id)invokeBlockWithArgs:(id)first,... NS_REQUIRES_NIL_TERMINATION; - -+ (id)defaultValue; - -// internal use only - -+ (id)resolveSpecialValues:(NSValue *)value; - -@end - -#define OCMOCK_ANY [OCMArg any] - -#if defined(__GNUC__) && !defined(__STRICT_ANSI__) - #define OCMOCK_VALUE(variable) \ - ({ __typeof__(variable) __v = (variable); [NSValue value:&__v withObjCType:@encode(__typeof__(__v))]; }) -#else - #define OCMOCK_VALUE(variable) [NSValue value:&variable withObjCType:@encode(__typeof__(variable))] -#endif - diff --git a/Example/Pods/OCMock/Source/OCMock/OCMArg.m b/Example/Pods/OCMock/Source/OCMock/OCMArg.m deleted file mode 100644 index f8aa2bf7..00000000 --- a/Example/Pods/OCMock/Source/OCMock/OCMArg.m +++ /dev/null @@ -1,146 +0,0 @@ -/* - * Copyright (c) 2009-2015 Erik Doernenburg and contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may - * not use these files except in compliance with the License. You may obtain - * a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - */ - -#import -#import -#import -#import "OCMPassByRefSetter.h" -#import "OCMBlockArgCaller.h" - -@implementation OCMArg - -+ (id)any -{ - return [OCMAnyConstraint constraint]; -} - -+ (void *)anyPointer -{ - return (void *)0x01234567; -} - -+ (id __autoreleasing *)anyObjectRef -{ - return (id *)0x01234567; -} - -+ (SEL)anySelector -{ - return NSSelectorFromString(@"aSelectorThatMatchesAnySelector"); -} - -+ (id)isNil -{ - return [OCMIsNilConstraint constraint]; -} - -+ (id)isNotNil -{ - return [OCMIsNotNilConstraint constraint]; -} - -+ (id)isEqual:(id)value -{ - return value; -} - -+ (id)isNotEqual:(id)value -{ - OCMIsNotEqualConstraint *constraint = [OCMIsNotEqualConstraint constraint]; - constraint->testValue = value; - return constraint; -} - -+ (id)isKindOfClass:(Class)cls -{ - return [[[OCMBlockConstraint alloc] initWithConstraintBlock:^BOOL(id obj) { - return [obj isKindOfClass:cls]; - }] autorelease]; -} - -+ (id)checkWithSelector:(SEL)selector onObject:(id)anObject -{ - return [OCMConstraint constraintWithSelector:selector onObject:anObject]; -} - -+ (id)checkWithBlock:(BOOL (^)(id))block -{ - return [[[OCMBlockConstraint alloc] initWithConstraintBlock:block] autorelease]; -} - -+ (id *)setTo:(id)value -{ - return (id *)[[[OCMPassByRefSetter alloc] initWithValue:value] autorelease]; -} - -+ (void *)setToValue:(NSValue *)value -{ - return (id *)[[[OCMPassByRefSetter alloc] initWithValue:value] autorelease]; -} - -+ (id)invokeBlock -{ - return [[[OCMBlockArgCaller alloc] init] autorelease]; -} - -+ (id)invokeBlockWithArgs:(id)first,... NS_REQUIRES_NIL_TERMINATION -{ - - NSMutableArray *params = [NSMutableArray array]; - va_list args; - if(first) - { - [params addObject:first]; - va_start(args, first); - id obj; - while((obj = va_arg(args, id))) - { - [params addObject:obj]; - } - va_end(args); - } - return [[[OCMBlockArgCaller alloc] initWithBlockArguments:params] autorelease]; - -} - -+ (id)defaultValue -{ - return [NSNull null]; -} - - -+ (id)resolveSpecialValues:(NSValue *)value -{ - const char *type = [value objCType]; - if(type[0] == '^') - { - void *pointer = [value pointerValue]; - if(pointer == (void *)0x01234567) - return [OCMArg any]; - if((pointer != NULL) && (object_getClass((id)pointer) == [OCMPassByRefSetter class])) - return (id)pointer; - } - else if(type[0] == ':') - { - SEL selector; - [value getValue:&selector]; - if(selector == NSSelectorFromString(@"aSelectorThatMatchesAnySelector")) - return [OCMArg any]; - } - return value; -} - -@end diff --git a/Example/Pods/OCMock/Source/OCMock/OCMArgAction.h b/Example/Pods/OCMock/Source/OCMock/OCMArgAction.h deleted file mode 100644 index 82eb013a..00000000 --- a/Example/Pods/OCMock/Source/OCMock/OCMArgAction.h +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Copyright (c) 2015 Erik Doernenburg and contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may - * not use these files except in compliance with the License. You may obtain - * a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - */ - -#import - -@interface OCMArgAction : NSObject - -- (void)handleArgument:(id)argument; - -@end \ No newline at end of file diff --git a/Example/Pods/OCMock/Source/OCMock/OCMArgAction.m b/Example/Pods/OCMock/Source/OCMock/OCMArgAction.m deleted file mode 100644 index 420b1b45..00000000 --- a/Example/Pods/OCMock/Source/OCMock/OCMArgAction.m +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Copyright (c) 2015 Erik Doernenburg and contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may - * not use these files except in compliance with the License. You may obtain - * a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - */ - -#import "OCMArgAction.h" - - -@implementation OCMArgAction - -- (void)handleArgument:(id)argument -{ - -} - - -@end \ No newline at end of file diff --git a/Example/Pods/OCMock/Source/OCMock/OCMBlockArgCaller.h b/Example/Pods/OCMock/Source/OCMock/OCMBlockArgCaller.h deleted file mode 100644 index e30188c9..00000000 --- a/Example/Pods/OCMock/Source/OCMock/OCMBlockArgCaller.h +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Copyright (c) 2015 Erik Doernenburg and contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may - * not use these files except in compliance with the License. You may obtain - * a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - */ - -#import "OCMArgAction.h" - -@interface OCMBlockArgCaller : OCMArgAction -{ - NSArray *arguments; -} - -- (instancetype)initWithBlockArguments:(NSArray *)someArgs; - -@end diff --git a/Example/Pods/OCMock/Source/OCMock/OCMBlockArgCaller.m b/Example/Pods/OCMock/Source/OCMock/OCMBlockArgCaller.m deleted file mode 100644 index d2d68dc7..00000000 --- a/Example/Pods/OCMock/Source/OCMock/OCMBlockArgCaller.m +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright (c) 2015 Erik Doernenburg and contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may - * not use these files except in compliance with the License. You may obtain - * a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - */ - -#import "OCMBlockArgCaller.h" -#import "NSInvocation+OCMAdditions.h" - - -@implementation OCMBlockArgCaller - -- (instancetype)initWithBlockArguments:(NSArray *)someArgs -{ - self = [super init]; - if(self) - { - arguments = [someArgs copy]; - } - return self; -} - -- (void)dealloc -{ - [arguments release]; - [super dealloc]; -} - -- (id)copyWithZone:(NSZone *)zone -{ - return [self retain]; -} - -- (void)handleArgument:(id)aBlock -{ - if(aBlock) - { - NSInvocation *inv = [NSInvocation invocationForBlock:aBlock withArguments:arguments]; - [inv invokeWithTarget:aBlock]; - } -} - -@end diff --git a/Example/Pods/OCMock/Source/OCMock/OCMBlockCaller.h b/Example/Pods/OCMock/Source/OCMock/OCMBlockCaller.h deleted file mode 100644 index 5c0aecc8..00000000 --- a/Example/Pods/OCMock/Source/OCMock/OCMBlockCaller.h +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Copyright (c) 2010-2015 Erik Doernenburg and contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may - * not use these files except in compliance with the License. You may obtain - * a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - */ - -#import - - -@interface OCMBlockCaller : NSObject -{ - void (^block)(NSInvocation *); -} - -- (id)initWithCallBlock:(void (^)(NSInvocation *))theBlock; - -- (void)handleInvocation:(NSInvocation *)anInvocation; - -@end - diff --git a/Example/Pods/OCMock/Source/OCMock/OCMBlockCaller.m b/Example/Pods/OCMock/Source/OCMock/OCMBlockCaller.m deleted file mode 100644 index b804edd8..00000000 --- a/Example/Pods/OCMock/Source/OCMock/OCMBlockCaller.m +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright (c) 2010-2015 Erik Doernenburg and contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may - * not use these files except in compliance with the License. You may obtain - * a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - */ - -#import "OCMBlockCaller.h" - - -@implementation OCMBlockCaller - --(id)initWithCallBlock:(void (^)(NSInvocation *))theBlock -{ - if ((self = [super init])) - { - block = [theBlock copy]; - } - - return self; -} - --(void)dealloc -{ - [block release]; - [super dealloc]; -} - -- (void)handleInvocation:(NSInvocation *)anInvocation -{ - if (block != nil) - { - block(anInvocation); - } -} - -@end diff --git a/Example/Pods/OCMock/Source/OCMock/OCMBoxedReturnValueProvider.h b/Example/Pods/OCMock/Source/OCMock/OCMBoxedReturnValueProvider.h deleted file mode 100644 index bc6f1196..00000000 --- a/Example/Pods/OCMock/Source/OCMock/OCMBoxedReturnValueProvider.h +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Copyright (c) 2009-2015 Erik Doernenburg and contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may - * not use these files except in compliance with the License. You may obtain - * a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - */ - -#import "OCMReturnValueProvider.h" - -@interface OCMBoxedReturnValueProvider : OCMReturnValueProvider -{ -} - -@end diff --git a/Example/Pods/OCMock/Source/OCMock/OCMBoxedReturnValueProvider.m b/Example/Pods/OCMock/Source/OCMock/OCMBoxedReturnValueProvider.m deleted file mode 100644 index 8f4bea65..00000000 --- a/Example/Pods/OCMock/Source/OCMock/OCMBoxedReturnValueProvider.m +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Copyright (c) 2009-2015 Erik Doernenburg and contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may - * not use these files except in compliance with the License. You may obtain - * a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - */ - -#import "OCMBoxedReturnValueProvider.h" -#import "OCMFunctionsPrivate.h" -#import "NSValue+OCMAdditions.h" - -@implementation OCMBoxedReturnValueProvider - -- (void)handleInvocation:(NSInvocation *)anInvocation -{ - const char *returnType = [[anInvocation methodSignature] methodReturnType]; - NSUInteger returnTypeSize = [[anInvocation methodSignature] methodReturnLength]; - char valueBuffer[returnTypeSize]; - NSValue *returnValueAsNSValue = (NSValue *)returnValue; - - if([self isMethodReturnType:returnType compatibleWithValueType:[returnValueAsNSValue objCType]]) - { - [returnValueAsNSValue getValue:valueBuffer]; - [anInvocation setReturnValue:valueBuffer]; - } - else if([returnValueAsNSValue getBytes:valueBuffer objCType:returnType]) - { - [anInvocation setReturnValue:valueBuffer]; - } - else - { - [NSException raise:NSInvalidArgumentException - format:@"Return value cannot be used for method; method signature declares '%s' but value is '%s'.", returnType, [returnValueAsNSValue objCType]]; - } -} - - -- (BOOL)isMethodReturnType:(const char *)returnType compatibleWithValueType:(const char *)valueType -{ - /* Same types are obviously compatible */ - if(strcmp(returnType, valueType) == 0) - return YES; - - /* Allow void* for methods that return id, mainly to be able to handle nil */ - if(strcmp(returnType, @encode(id)) == 0 && strcmp(valueType, @encode(void *)) == 0) - return YES; - - return OCMEqualTypesAllowingOpaqueStructs(returnType, valueType); -} - - -@end diff --git a/Example/Pods/OCMock/Source/OCMock/OCMConstraint.h b/Example/Pods/OCMock/Source/OCMock/OCMConstraint.h deleted file mode 100644 index 2164f321..00000000 --- a/Example/Pods/OCMock/Source/OCMock/OCMConstraint.h +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Copyright (c) 2007-2015 Erik Doernenburg and contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may - * not use these files except in compliance with the License. You may obtain - * a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - */ - -#import - - -@interface OCMConstraint : NSObject - -+ (instancetype)constraint; -- (BOOL)evaluate:(id)value; - -// if you are looking for any, isNil, etc, they have moved to OCMArg - -// try to use [OCMArg checkWith...] instead of the constraintWith... methods below - -+ (instancetype)constraintWithSelector:(SEL)aSelector onObject:(id)anObject; -+ (instancetype)constraintWithSelector:(SEL)aSelector onObject:(id)anObject withValue:(id)aValue; - - -@end - -@interface OCMAnyConstraint : OCMConstraint -@end - -@interface OCMIsNilConstraint : OCMConstraint -@end - -@interface OCMIsNotNilConstraint : OCMConstraint -@end - -@interface OCMIsNotEqualConstraint : OCMConstraint -{ - @public - id testValue; -} - -@end - -@interface OCMInvocationConstraint : OCMConstraint -{ - @public - NSInvocation *invocation; -} - -@end - -@interface OCMBlockConstraint : OCMConstraint -{ - BOOL (^block)(id); -} - -- (instancetype)initWithConstraintBlock:(BOOL (^)(id))block; - -@end - - -#define CONSTRAINT(aSelector) [OCMConstraint constraintWithSelector:aSelector onObject:self] -#define CONSTRAINTV(aSelector, aValue) [OCMConstraint constraintWithSelector:aSelector onObject:self withValue:(aValue)] diff --git a/Example/Pods/OCMock/Source/OCMock/OCMConstraint.m b/Example/Pods/OCMock/Source/OCMock/OCMConstraint.m deleted file mode 100644 index d92be74b..00000000 --- a/Example/Pods/OCMock/Source/OCMock/OCMConstraint.m +++ /dev/null @@ -1,156 +0,0 @@ -/* - * Copyright (c) 2007-2015 Erik Doernenburg and contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may - * not use these files except in compliance with the License. You may obtain - * a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - */ - -#import - - -@implementation OCMConstraint - -+ (instancetype)constraint -{ - return [[[self alloc] init] autorelease]; -} - -- (BOOL)evaluate:(id)value -{ - return NO; -} - -- (id)copyWithZone:(struct _NSZone *)zone -{ - return [self retain]; -} - -+ (instancetype)constraintWithSelector:(SEL)aSelector onObject:(id)anObject -{ - OCMInvocationConstraint *constraint = [OCMInvocationConstraint constraint]; - NSMethodSignature *signature = [anObject methodSignatureForSelector:aSelector]; - if(signature == nil) - [NSException raise:NSInvalidArgumentException format:@"Unkown selector %@ used in constraint.", NSStringFromSelector(aSelector)]; - NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:signature]; - [invocation setTarget:anObject]; - [invocation setSelector:aSelector]; - constraint->invocation = invocation; - return constraint; -} - -+ (instancetype)constraintWithSelector:(SEL)aSelector onObject:(id)anObject withValue:(id)aValue -{ - OCMInvocationConstraint *constraint = [self constraintWithSelector:aSelector onObject:anObject]; - if([[constraint->invocation methodSignature] numberOfArguments] < 4) - [NSException raise:NSInvalidArgumentException format:@"Constraint with value requires selector with two arguments."]; - [constraint->invocation setArgument:&aValue atIndex:3]; - return constraint; -} - - -@end - - - -#pragma mark - - -@implementation OCMAnyConstraint - -- (BOOL)evaluate:(id)value -{ - return YES; -} - -@end - - - -#pragma mark - - -@implementation OCMIsNilConstraint - -- (BOOL)evaluate:(id)value -{ - return value == nil; -} - -@end - - - -#pragma mark - - -@implementation OCMIsNotNilConstraint - -- (BOOL)evaluate:(id)value -{ - return value != nil; -} - -@end - - - -#pragma mark - - -@implementation OCMIsNotEqualConstraint - -- (BOOL)evaluate:(id)value -{ - return ![value isEqual:testValue]; -} - -@end - - - -#pragma mark - - -@implementation OCMInvocationConstraint - -- (BOOL)evaluate:(id)value -{ - [invocation setArgument:&value atIndex:2]; // should test if constraint takes arg - [invocation invoke]; - BOOL returnValue; - [invocation getReturnValue:&returnValue]; - return returnValue; -} - -@end - -#pragma mark - - -@implementation OCMBlockConstraint - -- (instancetype)initWithConstraintBlock:(BOOL (^)(id))aBlock -{ - if ((self = [super init])) - { - block = [aBlock copy]; - } - - return self; -} - -- (void)dealloc { - [block release]; - [super dealloc]; -} - -- (BOOL)evaluate:(id)value -{ - return block ? block(value) : NO; -} - - -@end diff --git a/Example/Pods/OCMock/Source/OCMock/OCMExceptionReturnValueProvider.h b/Example/Pods/OCMock/Source/OCMock/OCMExceptionReturnValueProvider.h deleted file mode 100644 index 7a7731fa..00000000 --- a/Example/Pods/OCMock/Source/OCMock/OCMExceptionReturnValueProvider.h +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Copyright (c) 2009-2015 Erik Doernenburg and contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may - * not use these files except in compliance with the License. You may obtain - * a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - */ - -#import "OCMReturnValueProvider.h" - -extern NSString *OCMStubbedException; - -@interface OCMExceptionReturnValueProvider : OCMReturnValueProvider -{ -} - -@end diff --git a/Example/Pods/OCMock/Source/OCMock/OCMExceptionReturnValueProvider.m b/Example/Pods/OCMock/Source/OCMock/OCMExceptionReturnValueProvider.m deleted file mode 100644 index 9ba5dd67..00000000 --- a/Example/Pods/OCMock/Source/OCMock/OCMExceptionReturnValueProvider.m +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Copyright (c) 2009-2015 Erik Doernenburg and contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may - * not use these files except in compliance with the License. You may obtain - * a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - */ - -#import "OCMExceptionReturnValueProvider.h" - - -@implementation OCMExceptionReturnValueProvider - -NSString *OCMStubbedException = @"OCMStubbedException"; - - -- (void)handleInvocation:(NSInvocation *)anInvocation -{ - [[NSException exceptionWithName:OCMStubbedException reason:@"Exception stubbed in test." userInfo:@{ @"exception": returnValue }] raise]; -} - -@end diff --git a/Example/Pods/OCMock/Source/OCMock/OCMExpectationRecorder.h b/Example/Pods/OCMock/Source/OCMock/OCMExpectationRecorder.h deleted file mode 100644 index 592c1791..00000000 --- a/Example/Pods/OCMock/Source/OCMock/OCMExpectationRecorder.h +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Copyright (c) 2004-2015 Erik Doernenburg and contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may - * not use these files except in compliance with the License. You may obtain - * a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - */ - -#import - -@interface OCMExpectationRecorder : OCMStubRecorder - -- (id)never; - -@end diff --git a/Example/Pods/OCMock/Source/OCMock/OCMExpectationRecorder.m b/Example/Pods/OCMock/Source/OCMock/OCMExpectationRecorder.m deleted file mode 100644 index 14a742b8..00000000 --- a/Example/Pods/OCMock/Source/OCMock/OCMExpectationRecorder.m +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright (c) 2004-2015 Erik Doernenburg and contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may - * not use these files except in compliance with the License. You may obtain - * a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - */ - -#import "OCMExpectationRecorder.h" -#import "OCMInvocationExpectation.h" - -@implementation OCMExpectationRecorder - -#pragma mark Initialisers, description, accessors, etc. - -- (id)init -{ - self = [super init]; - [invocationMatcher release]; - invocationMatcher = [[OCMInvocationExpectation alloc] init]; - return self; -} - -- (OCMInvocationExpectation *)expectation -{ - return (OCMInvocationExpectation *)invocationMatcher; -} - - -#pragma mark Modifying the expectation - -- (id)never -{ - [[self expectation] setMatchAndReject:YES]; - return self; -} - - -#pragma mark Finishing recording - -- (void)forwardInvocation:(NSInvocation *)anInvocation -{ - [super forwardInvocation:anInvocation]; - [mockObject addExpectation:[self expectation]]; -} - - -@end diff --git a/Example/Pods/OCMock/Source/OCMock/OCMFunctions.h b/Example/Pods/OCMock/Source/OCMock/OCMFunctions.h deleted file mode 100644 index 2f497d22..00000000 --- a/Example/Pods/OCMock/Source/OCMock/OCMFunctions.h +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright (c) 2014-2015 Erik Doernenburg and contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may - * not use these files except in compliance with the License. You may obtain - * a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - */ - -#import - - -#if defined(__cplusplus) -#define OCMOCK_EXTERN extern "C" -#else -#define OCMOCK_EXTERN extern -#endif - - -OCMOCK_EXTERN BOOL OCMIsObjectType(const char *objCType); diff --git a/Example/Pods/OCMock/Source/OCMock/OCMFunctions.m b/Example/Pods/OCMock/Source/OCMock/OCMFunctions.m deleted file mode 100644 index 4053a04b..00000000 --- a/Example/Pods/OCMock/Source/OCMock/OCMFunctions.m +++ /dev/null @@ -1,302 +0,0 @@ -/* - * Copyright (c) 2014-2015 Erik Doernenburg and contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may - * not use these files except in compliance with the License. You may obtain - * a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - */ - -#import -#import "OCMFunctionsPrivate.h" -#import "OCMLocation.h" -#import "OCClassMockObject.h" -#import "OCPartialMockObject.h" - - -#pragma mark Known private API - -@interface NSException(OCMKnownExceptionMethods) -+ (NSException *)failureInFile:(NSString *)file atLine:(int)line withDescription:(NSString *)formatString, ...; -@end - -@interface NSObject(OCMKnownTestCaseMethods) -- (void)recordFailureWithDescription:(NSString *)description inFile:(NSString *)file atLine:(NSUInteger)line expected:(BOOL)expected; -- (void)failWithException:(NSException *)exception; -@end - - -#pragma mark Functions related to ObjC type system - -BOOL OCMIsObjectType(const char *objCType) -{ - objCType = OCMTypeWithoutQualifiers(objCType); - - if(strcmp(objCType, @encode(id)) == 0 || strcmp(objCType, @encode(Class)) == 0) - return YES; - - // if the returnType is a typedef to an object, it has the form ^{OriginClass=#} - NSString *regexString = @"^\\^\\{(.*)=#.*\\}"; - NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:regexString options:0 error:NULL]; - NSString *type = [NSString stringWithCString:objCType encoding:NSASCIIStringEncoding]; - if([regex numberOfMatchesInString:type options:0 range:NSMakeRange(0, type.length)] > 0) - return YES; - - // if the return type is a block we treat it like an object - // TODO: if the runtime were to encode the block's argument and/or return types, this test would not be sufficient - if(strcmp(objCType, @encode(void(^)())) == 0) - return YES; - - return NO; -} - - -const char *OCMTypeWithoutQualifiers(const char *objCType) -{ - while(strchr("rnNoORV", objCType[0]) != NULL) - objCType += 1; - return objCType; -} - -CFNumberType OCMNumberTypeForObjCType(const char *objcType) -{ - switch (objcType[0]) - { - case 'c': return kCFNumberCharType; - case 'C': return kCFNumberCharType; - case 'B': return kCFNumberCharType; - case 's': return kCFNumberShortType; - case 'S': return kCFNumberShortType; - case 'i': return kCFNumberIntType; - case 'I': return kCFNumberIntType; - case 'l': return kCFNumberLongType; - case 'L': return kCFNumberLongType; - case 'q': return kCFNumberLongLongType; - case 'Q': return kCFNumberLongLongType; - case 'f': return kCFNumberFloatType; - case 'd': return kCFNumberDoubleType; - default: return 0; - } -} - -/* - * Sometimes an external type is an opaque struct (which will have an @encode of "{structName}" - * or "{structName=}") but the actual method return type, or property type, will know the contents - * of the struct (so will have an objcType of say "{structName=iiSS}". This function will determine - * those are equal provided they have the same structure name, otherwise everything else will be - * compared textually. This can happen particularly for pointers to such structures, which still - * encode what is being pointed to. - * - * For some types some runtime functions throw exceptions, which is why we wrap this in an - * exception handler just below. - */ -static BOOL OCMEqualTypesAllowingOpaqueStructsInternal(const char *type1, const char *type2) -{ - type1 = OCMTypeWithoutQualifiers(type1); - type2 = OCMTypeWithoutQualifiers(type2); - - switch (type1[0]) - { - case '{': - case '(': - { - if (type2[0] != type1[0]) - return NO; - char endChar = type1[0] == '{'? '}' : ')'; - - const char *type1End = strchr(type1, endChar); - const char *type2End = strchr(type2, endChar); - const char *type1Equals = strchr(type1, '='); - const char *type2Equals = strchr(type2, '='); - - /* Opaque types either don't have an equals sign (just the name and the end brace), or - * empty content after the equals sign. - * We want that to compare the same as a type of the same name but with the content. - */ - BOOL type1Opaque = (type1Equals == NULL || (type1End < type1Equals) || type1Equals[1] == endChar); - BOOL type2Opaque = (type2Equals == NULL || (type2End < type2Equals) || type2Equals[1] == endChar); - const char *type1NameEnd = (type1Equals == NULL || (type1End < type1Equals)) ? type1End : type1Equals; - const char *type2NameEnd = (type2Equals == NULL || (type2End < type2Equals)) ? type2End : type2Equals; - intptr_t type1NameLen = type1NameEnd - type1; - intptr_t type2NameLen = type2NameEnd - type2; - - /* If the names are not equal, return NO */ - if (type1NameLen != type2NameLen || strncmp(type1, type2, type1NameLen)) - return NO; - - /* If the same name, and at least one is opaque, that is close enough. */ - if (type1Opaque || type2Opaque) - return YES; - - /* Otherwise, compare all the elements. Use NSGetSizeAndAlignment to walk through the struct elements. */ - type1 = type1Equals + 1; - type2 = type2Equals + 1; - while (type1[0] != endChar && type1[0] != '\0') - { - if (!OCMEqualTypesAllowingOpaqueStructs(type1, type2)) - return NO; - type1 = NSGetSizeAndAlignment(type1, NULL, NULL); - type2 = NSGetSizeAndAlignment(type2, NULL, NULL); - } - return YES; - } - case '^': - /* for a pointer, make sure the other is a pointer, then recursively compare the rest */ - if (type2[0] != type1[0]) - return NO; - return OCMEqualTypesAllowingOpaqueStructs(type1 + 1, type2 + 1); - - case '?': - return type2[0] == '?'; - - case '\0': - return type2[0] == '\0'; - - default: - { - // Move the type pointers past the current types, then compare that region - const char *afterType1 = NSGetSizeAndAlignment(type1, NULL, NULL); - const char *afterType2 = NSGetSizeAndAlignment(type2, NULL, NULL); - intptr_t type1Len = afterType1 - type1; - intptr_t type2Len = afterType2 - type2; - - return (type1Len == type2Len && (strncmp(type1, type2, type1Len) == 0)); - } - } -} - -BOOL OCMEqualTypesAllowingOpaqueStructs(const char *type1, const char *type2) -{ - @try - { - return OCMEqualTypesAllowingOpaqueStructsInternal(type1, type2); - } - @catch (NSException *e) - { - /* Probably a bitfield or something that NSGetSizeAndAlignment chokes on, oh well */ - return NO; - } -} - - -#pragma mark Creating classes - -Class OCMCreateSubclass(Class class, void *ref) -{ - const char *className = [[NSString stringWithFormat:@"%@-%p-%u", NSStringFromClass(class), ref, arc4random()] UTF8String]; - Class subclass = objc_allocateClassPair(class, className, 0); - objc_registerClassPair(subclass); - return subclass; -} - - -#pragma mark Alias for renaming real methods - -static NSString *const OCMRealMethodAliasPrefix = @"ocmock_replaced_"; -static const char *const OCMRealMethodAliasPrefixCString = "ocmock_replaced_"; - -BOOL OCMIsAliasSelector(SEL selector) -{ - return [NSStringFromSelector(selector) hasPrefix:OCMRealMethodAliasPrefix]; -} - -SEL OCMAliasForOriginalSelector(SEL selector) -{ - char aliasName[2048]; - const char *originalName = sel_getName(selector); - strlcpy(aliasName, OCMRealMethodAliasPrefixCString, sizeof(aliasName)); - strlcat(aliasName, originalName, sizeof(aliasName)); - return sel_registerName(aliasName); -} - -SEL OCMOriginalSelectorForAlias(SEL selector) -{ - if(!OCMIsAliasSelector(selector)) - [NSException raise:NSInvalidArgumentException format:@"Not an alias selector; found %@", NSStringFromSelector(selector)]; - NSString *string = NSStringFromSelector(selector); - return NSSelectorFromString([string substringFromIndex:[OCMRealMethodAliasPrefix length]]); -} - - -#pragma mark Wrappers around associative references - -static NSString *const OCMClassMethodMockObjectKey = @"OCMClassMethodMockObjectKey"; - -void OCMSetAssociatedMockForClass(OCClassMockObject *mock, Class aClass) -{ - if((mock != nil) && (objc_getAssociatedObject(aClass, OCMClassMethodMockObjectKey) != nil)) - [NSException raise:NSInternalInconsistencyException format:@"Another mock is already associated with class %@", NSStringFromClass(aClass)]; - objc_setAssociatedObject(aClass, OCMClassMethodMockObjectKey, mock, OBJC_ASSOCIATION_ASSIGN); -} - -OCClassMockObject *OCMGetAssociatedMockForClass(Class aClass, BOOL includeSuperclasses) -{ - OCClassMockObject *mock = nil; - do - { - mock = objc_getAssociatedObject(aClass, OCMClassMethodMockObjectKey); - aClass = class_getSuperclass(aClass); - } - while((mock == nil) && (aClass != nil) && includeSuperclasses); - return mock; -} - -static NSString *const OCMPartialMockObjectKey = @"OCMPartialMockObjectKey"; - -void OCMSetAssociatedMockForObject(OCClassMockObject *mock, id anObject) -{ - if((mock != nil) && (objc_getAssociatedObject(anObject, OCMPartialMockObjectKey) != nil)) - [NSException raise:NSInternalInconsistencyException format:@"Another mock is already associated with object %@", anObject]; - objc_setAssociatedObject(anObject, OCMPartialMockObjectKey, mock, OBJC_ASSOCIATION_ASSIGN); -} - -OCPartialMockObject *OCMGetAssociatedMockForObject(id anObject) -{ - return objc_getAssociatedObject(anObject, OCMPartialMockObjectKey); -} - - -#pragma mark Functions related to IDE error reporting - -void OCMReportFailure(OCMLocation *loc, NSString *description) -{ - id testCase = [loc testCase]; - if((testCase != nil) && [testCase respondsToSelector:@selector(recordFailureWithDescription:inFile:atLine:expected:)]) - { - [testCase recordFailureWithDescription:description inFile:[loc file] atLine:[loc line] expected:NO]; - } - else if((testCase != nil) && [testCase respondsToSelector:@selector(failWithException:)]) - { - NSException *exception = nil; - if([NSException instancesRespondToSelector:@selector(failureInFile:atLine:withDescription:)]) - { - exception = [NSException failureInFile:[loc file] atLine:(int)[loc line] withDescription:description]; - } - else - { - NSString *reason = [NSString stringWithFormat:@"%@:%lu %@", [loc file], (unsigned long)[loc line], description]; - exception = [NSException exceptionWithName:@"OCMockTestFailure" reason:reason userInfo:nil]; - } - [testCase failWithException:exception]; - } - else if(loc != nil) - { - NSLog(@"%@:%lu %@", [loc file], (unsigned long)[loc line], description); - NSString *reason = [NSString stringWithFormat:@"%@:%lu %@", [loc file], (unsigned long)[loc line], description]; - [[NSException exceptionWithName:@"OCMockTestFailure" reason:reason userInfo:nil] raise]; - - } - else - { - NSLog(@"%@", description); - [[NSException exceptionWithName:@"OCMockTestFailure" reason:description userInfo:nil] raise]; - } - -} diff --git a/Example/Pods/OCMock/Source/OCMock/OCMFunctionsPrivate.h b/Example/Pods/OCMock/Source/OCMock/OCMFunctionsPrivate.h deleted file mode 100644 index 8aaa3996..00000000 --- a/Example/Pods/OCMock/Source/OCMock/OCMFunctionsPrivate.h +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Copyright (c) 2014-2015 Erik Doernenburg and contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may - * not use these files except in compliance with the License. You may obtain - * a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - */ - -#import - -#if defined(__cplusplus) -#define OCMOCK_EXTERN extern "C" -#else -#define OCMOCK_EXTERN extern -#endif - - -@class OCMLocation; -@class OCClassMockObject; -@class OCPartialMockObject; - - -OCMOCK_EXTERN BOOL OCMIsObjectType(const char *objCType); -const char *OCMTypeWithoutQualifiers(const char *objCType); -BOOL OCMEqualTypesAllowingOpaqueStructs(const char *type1, const char *type2); -CFNumberType OCMNumberTypeForObjCType(const char *objcType); - -Class OCMCreateSubclass(Class cls, void *ref); - -BOOL OCMIsAliasSelector(SEL selector); -SEL OCMAliasForOriginalSelector(SEL selector); -SEL OCMOriginalSelectorForAlias(SEL selector); - -void OCMSetAssociatedMockForClass(OCClassMockObject *mock, Class aClass); -OCClassMockObject *OCMGetAssociatedMockForClass(Class aClass, BOOL includeSuperclasses); - -void OCMSetAssociatedMockForObject(OCClassMockObject *mock, id anObject); -OCPartialMockObject *OCMGetAssociatedMockForObject(id anObject); - -void OCMReportFailure(OCMLocation *loc, NSString *description); diff --git a/Example/Pods/OCMock/Source/OCMock/OCMIndirectReturnValueProvider.h b/Example/Pods/OCMock/Source/OCMock/OCMIndirectReturnValueProvider.h deleted file mode 100644 index a7b15421..00000000 --- a/Example/Pods/OCMock/Source/OCMock/OCMIndirectReturnValueProvider.h +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright (c) 2009-2015 Erik Doernenburg and contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may - * not use these files except in compliance with the License. You may obtain - * a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - */ - -#import - -@interface OCMIndirectReturnValueProvider : NSObject -{ - id provider; - SEL selector; -} - -- (id)initWithProvider:(id)aProvider andSelector:(SEL)aSelector; - -- (void)handleInvocation:(NSInvocation *)anInvocation; - -@end diff --git a/Example/Pods/OCMock/Source/OCMock/OCMIndirectReturnValueProvider.m b/Example/Pods/OCMock/Source/OCMock/OCMIndirectReturnValueProvider.m deleted file mode 100644 index 1f22d993..00000000 --- a/Example/Pods/OCMock/Source/OCMock/OCMIndirectReturnValueProvider.m +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Copyright (c) 2009-2015 Erik Doernenburg and contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may - * not use these files except in compliance with the License. You may obtain - * a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - */ - -#import "NSMethodSignature+OCMAdditions.h" -#import "OCMIndirectReturnValueProvider.h" -#import "NSInvocation+OCMAdditions.h" - - -@implementation OCMIndirectReturnValueProvider - -- (id)initWithProvider:(id)aProvider andSelector:(SEL)aSelector -{ - if ((self = [super init])) - { - provider = [aProvider retain]; - selector = aSelector; - } - - return self; -} - -- (void)dealloc -{ - [provider release]; - [super dealloc]; -} - -- (void)handleInvocation:(NSInvocation *)anInvocation -{ - id originalTarget = [anInvocation target]; - SEL originalSelector = [anInvocation selector]; - - [anInvocation setTarget:provider]; - [anInvocation setSelector:selector]; - [anInvocation invoke]; - - [anInvocation setTarget:originalTarget]; - [anInvocation setSelector:originalSelector]; -} - -@end diff --git a/Example/Pods/OCMock/Source/OCMock/OCMInvocationExpectation.h b/Example/Pods/OCMock/Source/OCMock/OCMInvocationExpectation.h deleted file mode 100644 index a0a0909b..00000000 --- a/Example/Pods/OCMock/Source/OCMock/OCMInvocationExpectation.h +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Copyright (c) 2014-2015 Erik Doernenburg and contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may - * not use these files except in compliance with the License. You may obtain - * a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - */ - -#import "OCMInvocationStub.h" - -@interface OCMInvocationExpectation : OCMInvocationStub -{ - BOOL matchAndReject; - BOOL isSatisfied; -} - -- (void)setMatchAndReject:(BOOL)flag; -- (BOOL)isMatchAndReject; - -- (BOOL)isSatisfied; - -@end diff --git a/Example/Pods/OCMock/Source/OCMock/OCMInvocationExpectation.m b/Example/Pods/OCMock/Source/OCMock/OCMInvocationExpectation.m deleted file mode 100644 index db572d0c..00000000 --- a/Example/Pods/OCMock/Source/OCMock/OCMInvocationExpectation.m +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright (c) 2014-2015 Erik Doernenburg and contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may - * not use these files except in compliance with the License. You may obtain - * a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - */ - -#import "OCMInvocationExpectation.h" -#import "NSInvocation+OCMAdditions.h" - - -@implementation OCMInvocationExpectation - -- (void)setMatchAndReject:(BOOL)flag -{ - matchAndReject = flag; - if(matchAndReject) - isSatisfied = YES; -} - -- (BOOL)isMatchAndReject -{ - return matchAndReject; -} - -- (BOOL)isSatisfied -{ - return isSatisfied; -} - -- (void)handleInvocation:(NSInvocation *)anInvocation -{ - [super handleInvocation:anInvocation]; - - if(matchAndReject) - { - isSatisfied = NO; - [NSException raise:NSInternalInconsistencyException format:@"%@: explicitly disallowed method invoked: %@", - [self description], [anInvocation invocationDescription]]; - } - else - { - isSatisfied = YES; - } -} - -@end diff --git a/Example/Pods/OCMock/Source/OCMock/OCMInvocationMatcher.h b/Example/Pods/OCMock/Source/OCMock/OCMInvocationMatcher.h deleted file mode 100644 index bd2758b1..00000000 --- a/Example/Pods/OCMock/Source/OCMock/OCMInvocationMatcher.h +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright (c) 2014-2015 Erik Doernenburg and contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may - * not use these files except in compliance with the License. You may obtain - * a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - */ - -#import - -@interface OCMInvocationMatcher : NSObject -{ - NSInvocation *recordedInvocation; - BOOL recordedAsClassMethod; - BOOL ignoreNonObjectArgs; -} - -- (void)setInvocation:(NSInvocation *)anInvocation; -- (NSInvocation *)recordedInvocation; - -- (void)setRecordedAsClassMethod:(BOOL)flag; -- (BOOL)recordedAsClassMethod; - -- (void)setIgnoreNonObjectArgs:(BOOL)flag; - -- (BOOL)matchesSelector:(SEL)aSelector; -- (BOOL)matchesInvocation:(NSInvocation *)anInvocation; - -@end diff --git a/Example/Pods/OCMock/Source/OCMock/OCMInvocationMatcher.m b/Example/Pods/OCMock/Source/OCMock/OCMInvocationMatcher.m deleted file mode 100644 index 2cb7b7c9..00000000 --- a/Example/Pods/OCMock/Source/OCMock/OCMInvocationMatcher.m +++ /dev/null @@ -1,148 +0,0 @@ -/* - * Copyright (c) 2014-2015 Erik Doernenburg and contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may - * not use these files except in compliance with the License. You may obtain - * a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - */ - -#import -#import -#import -#import "OCMPassByRefSetter.h" -#import "NSInvocation+OCMAdditions.h" -#import "OCMInvocationMatcher.h" -#import "OCClassMockObject.h" -#import "OCMFunctionsPrivate.h" -#import "OCMBlockArgCaller.h" - - -@interface NSObject(HCMatcherDummy) -- (BOOL)matches:(id)item; -@end - - -@implementation OCMInvocationMatcher - -- (void)dealloc -{ - [recordedInvocation release]; - [super dealloc]; -} - -- (void)setInvocation:(NSInvocation *)anInvocation -{ - [recordedInvocation release]; - // When the method has a char* argument we do not retain the arguments. This makes it possible - // to match char* args literally and with anyPointer. Not retaining the argument means that - // in these cases tests that use their own autorelease pools may fail unexpectedly. - if(![anInvocation hasCharPointerArgument]) - [anInvocation retainArguments]; - recordedInvocation = [anInvocation retain]; -} - -- (void)setRecordedAsClassMethod:(BOOL)flag -{ - recordedAsClassMethod = flag; -} - -- (BOOL)recordedAsClassMethod -{ - return recordedAsClassMethod; -} - -- (void)setIgnoreNonObjectArgs:(BOOL)flag -{ - ignoreNonObjectArgs = flag; -} - -- (NSString *)description -{ - return [recordedInvocation invocationDescription]; -} - -- (NSInvocation *)recordedInvocation -{ - return recordedInvocation; -} - -- (BOOL)matchesSelector:(SEL)sel -{ - if(sel == [recordedInvocation selector]) - return YES; - if(OCMIsAliasSelector(sel) && - OCMOriginalSelectorForAlias(sel) == [recordedInvocation selector]) - return YES; - - return NO; -} - -- (BOOL)matchesInvocation:(NSInvocation *)anInvocation -{ - id target = [anInvocation target]; - BOOL isClassMethodInvocation = (target != nil) && (target == [target class]); - if(isClassMethodInvocation != recordedAsClassMethod) - return NO; - - if(![self matchesSelector:[anInvocation selector]]) - return NO; - - NSMethodSignature *signature = [recordedInvocation methodSignature]; - NSUInteger n = [signature numberOfArguments]; - for(NSUInteger i = 2; i < n; i++) - { - if(ignoreNonObjectArgs && strcmp([signature getArgumentTypeAtIndex:i], @encode(id))) - { - continue; - } - - id recordedArg = [recordedInvocation getArgumentAtIndexAsObject:i]; - id passedArg = [anInvocation getArgumentAtIndexAsObject:i]; - - if([recordedArg isProxy]) - { - if(![recordedArg isEqual:passedArg]) - return NO; - continue; - } - - if([recordedArg isKindOfClass:[NSValue class]]) - recordedArg = [OCMArg resolveSpecialValues:recordedArg]; - - if([recordedArg isKindOfClass:[OCMConstraint class]]) - { - if([recordedArg evaluate:passedArg] == NO) - return NO; - } - else if([recordedArg isKindOfClass:[OCMArgAction class]]) - { - // side effect but easier to do here than in handleInvocation - [recordedArg handleArgument:passedArg]; - } - else if([recordedArg conformsToProtocol:objc_getProtocol("HCMatcher")]) - { - if([recordedArg matches:passedArg] == NO) - return NO; - } - else - { - if(([recordedArg class] == [NSNumber class]) && - ([(NSNumber*)recordedArg compare:(NSNumber*)passedArg] != NSOrderedSame)) - return NO; - if(([recordedArg isEqual:passedArg] == NO) && - !((recordedArg == nil) && (passedArg == nil))) - return NO; - } - } - return YES; -} - -@end diff --git a/Example/Pods/OCMock/Source/OCMock/OCMInvocationStub.h b/Example/Pods/OCMock/Source/OCMock/OCMInvocationStub.h deleted file mode 100644 index d52467ba..00000000 --- a/Example/Pods/OCMock/Source/OCMock/OCMInvocationStub.h +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright (c) 2014-2015 Erik Doernenburg and contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may - * not use these files except in compliance with the License. You may obtain - * a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - */ - -#import "OCMInvocationMatcher.h" - -@interface OCMInvocationStub : OCMInvocationMatcher -{ - NSMutableArray *invocationActions; -} - -- (void)addInvocationAction:(id)anAction; -- (NSArray *)invocationActions; - -- (void)handleInvocation:(NSInvocation *)anInvocation; - -@end diff --git a/Example/Pods/OCMock/Source/OCMock/OCMInvocationStub.m b/Example/Pods/OCMock/Source/OCMock/OCMInvocationStub.m deleted file mode 100644 index b16e7b9b..00000000 --- a/Example/Pods/OCMock/Source/OCMock/OCMInvocationStub.m +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright (c) 2014-2015 Erik Doernenburg and contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may - * not use these files except in compliance with the License. You may obtain - * a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - */ - -#import "OCMInvocationStub.h" - -@implementation OCMInvocationStub - -- (id)init -{ - self = [super init]; - invocationActions = [[NSMutableArray alloc] init]; - return self; -} - -- (void)dealloc -{ - [invocationActions release]; - [super dealloc]; -} - - -- (void)addInvocationAction:(id)anAction -{ - [invocationActions addObject:anAction]; -} - -- (NSArray *)invocationActions -{ - return invocationActions; -} - - -- (void)handleInvocation:(NSInvocation *)anInvocation -{ -// if(![self matchesInvocation:anInvocation]) -// return NO; - [invocationActions makeObjectsPerformSelector:@selector(handleInvocation:) withObject:anInvocation]; -} - -@end diff --git a/Example/Pods/OCMock/Source/OCMock/OCMLocation.h b/Example/Pods/OCMock/Source/OCMock/OCMLocation.h deleted file mode 100644 index 958609d8..00000000 --- a/Example/Pods/OCMock/Source/OCMock/OCMLocation.h +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright (c) 2014-2015 Erik Doernenburg and contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may - * not use these files except in compliance with the License. You may obtain - * a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - */ - -#import -#import "OCMFunctions.h" - - -@interface OCMLocation : NSObject -{ - id testCase; - NSString *file; - NSUInteger line; -} - -+ (instancetype)locationWithTestCase:(id)aTestCase file:(NSString *)aFile line:(NSUInteger)aLine; - -- (instancetype)initWithTestCase:(id)aTestCase file:(NSString *)aFile line:(NSUInteger)aLine; - -- (id)testCase; -- (NSString *)file; -- (NSUInteger)line; - -@end - -OCMOCK_EXTERN OCMLocation *OCMMakeLocation(id testCase, const char *file, int line); diff --git a/Example/Pods/OCMock/Source/OCMock/OCMLocation.m b/Example/Pods/OCMock/Source/OCMock/OCMLocation.m deleted file mode 100644 index dbe59bc2..00000000 --- a/Example/Pods/OCMock/Source/OCMock/OCMLocation.m +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Copyright (c) 2014-2015 Erik Doernenburg and contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may - * not use these files except in compliance with the License. You may obtain - * a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - */ - -#import "OCMLocation.h" - -@implementation OCMLocation - -+ (instancetype)locationWithTestCase:(id)aTestCase file:(NSString *)aFile line:(NSUInteger)aLine -{ - return [[[OCMLocation alloc] initWithTestCase:aTestCase file:aFile line:aLine] autorelease]; -} - -- (instancetype)initWithTestCase:(id)aTestCase file:(NSString *)aFile line:(NSUInteger)aLine -{ - if ((self = [super init])) - { - testCase = aTestCase; - file = [aFile retain]; - line = aLine; - } - - return self; -} - -- (void)dealloc -{ - [file release]; - [super dealloc]; -} - -- (id)testCase -{ - return testCase; -} - -- (NSString *)file -{ - return file; -} - -- (NSUInteger)line -{ - return line; -} - -@end - - -OCMLocation *OCMMakeLocation(id testCase, const char *fileCString, int line) -{ - return [OCMLocation locationWithTestCase:testCase file:[NSString stringWithUTF8String:fileCString] line:line]; -} - diff --git a/Example/Pods/OCMock/Source/OCMock/OCMMacroState.h b/Example/Pods/OCMock/Source/OCMock/OCMMacroState.h deleted file mode 100644 index 96dc5e22..00000000 --- a/Example/Pods/OCMock/Source/OCMock/OCMMacroState.h +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright (c) 2014-2015 Erik Doernenburg and contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may - * not use these files except in compliance with the License. You may obtain - * a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - */ - -#import - -@class OCMLocation; -@class OCMRecorder; -@class OCMStubRecorder; -@class OCMockObject; - - -@interface OCMMacroState : NSObject -{ - OCMRecorder *recorder; -} - -+ (void)beginStubMacro; -+ (OCMStubRecorder *)endStubMacro; - -+ (void)beginExpectMacro; -+ (OCMStubRecorder *)endExpectMacro; - -+ (void)beginVerifyMacroAtLocation:(OCMLocation *)aLocation; -+ (void)endVerifyMacro; - -+ (OCMMacroState *)globalState; - -- (OCMRecorder *)recorder; - -- (void)switchToClassMethod; - -@end diff --git a/Example/Pods/OCMock/Source/OCMock/OCMMacroState.m b/Example/Pods/OCMock/Source/OCMock/OCMMacroState.m deleted file mode 100644 index ace67553..00000000 --- a/Example/Pods/OCMock/Source/OCMock/OCMMacroState.m +++ /dev/null @@ -1,112 +0,0 @@ -/* - * Copyright (c) 2014-2015 Erik Doernenburg and contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may - * not use these files except in compliance with the License. You may obtain - * a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - */ - -#import "OCMMacroState.h" -#import "OCMStubRecorder.h" -#import "OCMockObject.h" -#import "OCMExpectationRecorder.h" -#import "OCMVerifier.h" -#import "OCMInvocationMatcher.h" - - -@implementation OCMMacroState - -static OCMMacroState *globalState; - -#pragma mark Methods to begin/end macros - -+ (void)beginStubMacro -{ - OCMStubRecorder *recorder = [[[OCMStubRecorder alloc] init] autorelease]; - globalState = [[[OCMMacroState alloc] initWithRecorder:recorder] autorelease]; -} - -+ (OCMStubRecorder *)endStubMacro -{ - OCMStubRecorder *recorder = (OCMStubRecorder *)[globalState recorder]; - globalState = nil; - return recorder; -} - - -+ (void)beginExpectMacro -{ - OCMExpectationRecorder *recorder = [[[OCMExpectationRecorder alloc] init] autorelease]; - globalState = [[[OCMMacroState alloc] initWithRecorder:recorder] autorelease]; -} - -+ (OCMStubRecorder *)endExpectMacro -{ - return [self endStubMacro]; -} - - -+ (void)beginVerifyMacroAtLocation:(OCMLocation *)aLocation -{ - OCMVerifier *recorder = [[[OCMVerifier alloc] init] autorelease]; - [recorder setLocation:aLocation]; - globalState = [[[OCMMacroState alloc] initWithRecorder:recorder] autorelease]; -} - -+ (void)endVerifyMacro -{ - globalState = nil; -} - - -#pragma mark Accessing global state - -+ (OCMMacroState *)globalState -{ - return globalState; -} - - -#pragma mark Init, dealloc, accessors - -- (id)initWithRecorder:(OCMRecorder *)aRecorder -{ - if ((self = [super init])) - { - recorder = [aRecorder retain]; - } - - return self; -} - -- (void)dealloc -{ - [recorder release]; - if(globalState == self) - globalState = nil; - [super dealloc]; -} - -- (OCMRecorder *)recorder -{ - return recorder; -} - - -#pragma mark Changing the recorder - -- (void)switchToClassMethod -{ - [recorder classMethod]; -} - - -@end diff --git a/Example/Pods/OCMock/Source/OCMock/OCMNotificationPoster.h b/Example/Pods/OCMock/Source/OCMock/OCMNotificationPoster.h deleted file mode 100644 index d80d2a3b..00000000 --- a/Example/Pods/OCMock/Source/OCMock/OCMNotificationPoster.h +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Copyright (c) 2009-2015 Erik Doernenburg and contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may - * not use these files except in compliance with the License. You may obtain - * a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - */ - -#import - -@interface OCMNotificationPoster : NSObject -{ - NSNotification *notification; -} - -- (id)initWithNotification:(id)aNotification; - -- (void)handleInvocation:(NSInvocation *)anInvocation; - -@end diff --git a/Example/Pods/OCMock/Source/OCMock/OCMNotificationPoster.m b/Example/Pods/OCMock/Source/OCMock/OCMNotificationPoster.m deleted file mode 100644 index 764b23b3..00000000 --- a/Example/Pods/OCMock/Source/OCMock/OCMNotificationPoster.m +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright (c) 2009-2015 Erik Doernenburg and contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may - * not use these files except in compliance with the License. You may obtain - * a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - */ - -#import "OCMNotificationPoster.h" - - -@implementation OCMNotificationPoster - -- (id)initWithNotification:(id)aNotification -{ - if ((self = [super init])) - { - notification = [aNotification retain]; - } - - return self; -} - -- (void)dealloc -{ - [notification release]; - [super dealloc]; -} - -- (void)handleInvocation:(NSInvocation *)anInvocation -{ - [[NSNotificationCenter defaultCenter] postNotification:notification]; -} - - -@end diff --git a/Example/Pods/OCMock/Source/OCMock/OCMObserverRecorder.h b/Example/Pods/OCMock/Source/OCMock/OCMObserverRecorder.h deleted file mode 100644 index 04f657b0..00000000 --- a/Example/Pods/OCMock/Source/OCMock/OCMObserverRecorder.h +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Copyright (c) 2009-2015 Erik Doernenburg and contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may - * not use these files except in compliance with the License. You may obtain - * a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - */ - -#import - -@interface OCMObserverRecorder : NSObject -{ - NSNotification *recordedNotification; -} - -- (void)notificationWithName:(NSString *)name object:(id)sender; - -- (BOOL)matchesNotification:(NSNotification *)aNotification; - -- (BOOL)argument:(id)expectedArg matchesArgument:(id)observedArg; - -@end diff --git a/Example/Pods/OCMock/Source/OCMock/OCMObserverRecorder.m b/Example/Pods/OCMock/Source/OCMock/OCMObserverRecorder.m deleted file mode 100644 index ce28c0a6..00000000 --- a/Example/Pods/OCMock/Source/OCMock/OCMObserverRecorder.m +++ /dev/null @@ -1,87 +0,0 @@ -/* - * Copyright (c) 2009-2015 Erik Doernenburg and contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may - * not use these files except in compliance with the License. You may obtain - * a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - */ - -#import -#import -#import "NSInvocation+OCMAdditions.h" -#import "OCMObserverRecorder.h" - -@interface NSObject(HCMatcherDummy) -- (BOOL)matches:(id)item; -@end - -#pragma mark - - - -@implementation OCMObserverRecorder - -#pragma mark Initialisers, description, accessors, etc. - -- (void)dealloc -{ - [recordedNotification release]; - [super dealloc]; -} - - -#pragma mark Recording - -- (void)notificationWithName:(NSString *)name object:(id)sender -{ - recordedNotification = [[NSNotification notificationWithName:name object:sender] retain]; -} - -- (void)notificationWithName:(NSString *)name object:(id)sender userInfo:(NSDictionary *)userInfo -{ - recordedNotification = [[NSNotification notificationWithName:name object:sender userInfo:userInfo] retain]; -} - - -#pragma mark Verification - -- (BOOL)matchesNotification:(NSNotification *)aNotification -{ - return [self argument:[recordedNotification name] matchesArgument:[aNotification name]] && - [self argument:[recordedNotification object] matchesArgument:[aNotification object]] && - [self argument:[recordedNotification userInfo] matchesArgument:[aNotification userInfo]]; -} - -- (BOOL)argument:(id)expectedArg matchesArgument:(id)observedArg -{ - if([expectedArg isKindOfClass:[OCMConstraint class]]) - { - return [expectedArg evaluate:observedArg]; - } - else if([expectedArg conformsToProtocol:objc_getProtocol("HCMatcher")]) - { - return [expectedArg matches:observedArg]; - } - else if (expectedArg == observedArg) - { - return YES; - } - else if (expectedArg == nil || observedArg == nil) - { - return NO; - } - else - { - return [expectedArg isEqual:observedArg]; - } -} - - -@end diff --git a/Example/Pods/OCMock/Source/OCMock/OCMPassByRefSetter.h b/Example/Pods/OCMock/Source/OCMock/OCMPassByRefSetter.h deleted file mode 100644 index f3a72fb1..00000000 --- a/Example/Pods/OCMock/Source/OCMock/OCMPassByRefSetter.h +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Copyright (c) 2009-2015 Erik Doernenburg and contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may - * not use these files except in compliance with the License. You may obtain - * a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - */ - -#import "OCMArgAction.h" - -@interface OCMPassByRefSetter : OCMArgAction -{ - id value; -} - -- (id)initWithValue:(id)value; - -@end diff --git a/Example/Pods/OCMock/Source/OCMock/OCMPassByRefSetter.m b/Example/Pods/OCMock/Source/OCMock/OCMPassByRefSetter.m deleted file mode 100644 index dbefd9cf..00000000 --- a/Example/Pods/OCMock/Source/OCMock/OCMPassByRefSetter.m +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright (c) 2009-2015 Erik Doernenburg and contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may - * not use these files except in compliance with the License. You may obtain - * a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - */ - -#import "OCMPassByRefSetter.h" - - -@implementation OCMPassByRefSetter - -- (id)initWithValue:(id)aValue -{ - if ((self = [super init])) - { - value = [aValue retain]; - } - - return self; -} - -- (void)dealloc -{ - [value release]; - [super dealloc]; -} - -- (void)handleArgument:(id)arg -{ - if([value isKindOfClass:[NSValue class]]) - [(NSValue *)value getValue:[arg pointerValue]]; - else - *(id *)[arg pointerValue] = value; -} - -@end diff --git a/Example/Pods/OCMock/Source/OCMock/OCMRealObjectForwarder.h b/Example/Pods/OCMock/Source/OCMock/OCMRealObjectForwarder.h deleted file mode 100644 index d09bebb6..00000000 --- a/Example/Pods/OCMock/Source/OCMock/OCMRealObjectForwarder.h +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Copyright (c) 2010-2015 Erik Doernenburg and contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may - * not use these files except in compliance with the License. You may obtain - * a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - */ - -#import - -@interface OCMRealObjectForwarder : NSObject -{ -} - -- (void)handleInvocation:(NSInvocation *)anInvocation; - -@end diff --git a/Example/Pods/OCMock/Source/OCMock/OCMRealObjectForwarder.m b/Example/Pods/OCMock/Source/OCMock/OCMRealObjectForwarder.m deleted file mode 100644 index cef58bdc..00000000 --- a/Example/Pods/OCMock/Source/OCMock/OCMRealObjectForwarder.m +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Copyright (c) 2010-2015 Erik Doernenburg and contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may - * not use these files except in compliance with the License. You may obtain - * a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - */ - -#import -#import "OCPartialMockObject.h" -#import "OCMRealObjectForwarder.h" -#import "OCMFunctionsPrivate.h" - - -@implementation OCMRealObjectForwarder - -- (void)handleInvocation:(NSInvocation *)anInvocation -{ - id invocationTarget = [anInvocation target]; - - [anInvocation setSelector:OCMAliasForOriginalSelector([anInvocation selector])]; - if ([invocationTarget isProxy]) - { - if (class_getInstanceMethod([invocationTarget mockObjectClass], @selector(realObject))) - { - // the method has been invoked on the mock, we need to change the target to the real object - [anInvocation setTarget:[(OCPartialMockObject *)invocationTarget realObject]]; - } - else - { - [NSException raise:NSInternalInconsistencyException - format:@"Method andForwardToRealObject can only be used with partial mocks and class methods."]; - } - } - - [anInvocation invoke]; -} - - -@end diff --git a/Example/Pods/OCMock/Source/OCMock/OCMRecorder.h b/Example/Pods/OCMock/Source/OCMock/OCMRecorder.h deleted file mode 100644 index 3496c77c..00000000 --- a/Example/Pods/OCMock/Source/OCMock/OCMRecorder.h +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright (c) 2014-2015 Erik Doernenburg and contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may - * not use these files except in compliance with the License. You may obtain - * a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - */ - -#import - -@class OCMockObject; -@class OCMInvocationMatcher; - - -@interface OCMRecorder : NSProxy -{ - OCMockObject *mockObject; - OCMInvocationMatcher *invocationMatcher; -} - -- (instancetype)init; -- (instancetype)initWithMockObject:(OCMockObject *)aMockObject; - -- (void)setMockObject:(OCMockObject *)aMockObject; - -- (OCMInvocationMatcher *)invocationMatcher; - -- (id)classMethod; -- (id)ignoringNonObjectArgs; - -@end diff --git a/Example/Pods/OCMock/Source/OCMock/OCMRecorder.m b/Example/Pods/OCMock/Source/OCMock/OCMRecorder.m deleted file mode 100644 index 4f630b68..00000000 --- a/Example/Pods/OCMock/Source/OCMock/OCMRecorder.m +++ /dev/null @@ -1,109 +0,0 @@ -/* - * Copyright (c) 2014-2015 Erik Doernenburg and contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may - * not use these files except in compliance with the License. You may obtain - * a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - */ - -#import -#import "OCMRecorder.h" -#import "OCMockObject.h" -#import "OCMInvocationMatcher.h" -#import "OCClassMockObject.h" - -@implementation OCMRecorder - -- (instancetype)init -{ - // no super, we're inheriting from NSProxy - return self; -} - -- (instancetype)initWithMockObject:(OCMockObject *)aMockObject -{ - [self init]; - [self setMockObject:aMockObject]; - return self; -} - -- (void)setMockObject:(OCMockObject *)aMockObject -{ - mockObject = aMockObject; -} - -- (void)dealloc -{ - [invocationMatcher release]; - [super dealloc]; -} - -- (NSString *)description -{ - return [invocationMatcher description]; -} - -- (OCMInvocationMatcher *)invocationMatcher -{ - return invocationMatcher; -} - - -#pragma mark Modifying the matcher - -- (id)classMethod -{ - // should we handle the case where this is called with a mock that isn't a class mock? - [invocationMatcher setRecordedAsClassMethod:YES]; - return self; -} - -- (id)ignoringNonObjectArgs -{ - [invocationMatcher setIgnoreNonObjectArgs:YES]; - return self; -} - - -#pragma mark Recording the actual invocation - -- (NSMethodSignature *)methodSignatureForSelector:(SEL)aSelector -{ - if([invocationMatcher recordedAsClassMethod]) - return [[(OCClassMockObject *)mockObject mockedClass] methodSignatureForSelector:aSelector]; - - NSMethodSignature *signature = [mockObject methodSignatureForSelector:aSelector]; - if(signature == nil) - { - // if we're a working with a class mock and there is a class method, auto-switch - if(([object_getClass(mockObject) isSubclassOfClass:[OCClassMockObject class]]) && - ([[(OCClassMockObject *)mockObject mockedClass] respondsToSelector:aSelector])) - { - [self classMethod]; - signature = [self methodSignatureForSelector:aSelector]; - } - } - return signature; -} - -- (void)forwardInvocation:(NSInvocation *)anInvocation -{ - [anInvocation setTarget:nil]; - [invocationMatcher setInvocation:anInvocation]; -} - -- (void)doesNotRecognizeSelector:(SEL)aSelector -{ - [NSException raise:NSInvalidArgumentException format:@"%@: cannot stub/expect/verify method '%@' because no such method exists in the mocked class.", mockObject, NSStringFromSelector(aSelector)]; -} - - -@end diff --git a/Example/Pods/OCMock/Source/OCMock/OCMReturnValueProvider.h b/Example/Pods/OCMock/Source/OCMock/OCMReturnValueProvider.h deleted file mode 100644 index f6690c3a..00000000 --- a/Example/Pods/OCMock/Source/OCMock/OCMReturnValueProvider.h +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Copyright (c) 2009-2015 Erik Doernenburg and contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may - * not use these files except in compliance with the License. You may obtain - * a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - */ - -#import - -@interface OCMReturnValueProvider : NSObject -{ - id returnValue; -} - -- (instancetype)initWithValue:(id)aValue; - -- (void)handleInvocation:(NSInvocation *)anInvocation; - -@end diff --git a/Example/Pods/OCMock/Source/OCMock/OCMReturnValueProvider.m b/Example/Pods/OCMock/Source/OCMock/OCMReturnValueProvider.m deleted file mode 100644 index 99e285a8..00000000 --- a/Example/Pods/OCMock/Source/OCMock/OCMReturnValueProvider.m +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright (c) 2009-2015 Erik Doernenburg and contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may - * not use these files except in compliance with the License. You may obtain - * a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - */ - -#import "NSMethodSignature+OCMAdditions.h" -#import "OCMReturnValueProvider.h" -#import "OCMFunctions.h" - - -@implementation OCMReturnValueProvider - -- (instancetype)initWithValue:(id)aValue -{ - if ((self = [super init])) - { - returnValue = [aValue retain]; - } - - return self; -} - -- (void)dealloc -{ - [returnValue release]; - [super dealloc]; -} - -- (void)handleInvocation:(NSInvocation *)anInvocation -{ - if(!OCMIsObjectType([[anInvocation methodSignature] methodReturnType])) - { - @throw [NSException exceptionWithName:NSInvalidArgumentException reason:@"Expected invocation with object return type. Did you mean to use andReturnValue: instead?" userInfo:nil]; - } - NSString *sel = NSStringFromSelector([anInvocation selector]); - if([sel hasPrefix:@"alloc"] || [sel hasPrefix:@"new"] || [sel hasPrefix:@"copy"] || [sel hasPrefix:@"mutableCopy"]) - { - // methods that "create" an object return it with an extra retain count - [returnValue retain]; - } - [anInvocation setReturnValue:&returnValue]; -} - -@end diff --git a/Example/Pods/OCMock/Source/OCMock/OCMStubRecorder.h b/Example/Pods/OCMock/Source/OCMock/OCMStubRecorder.h deleted file mode 100644 index 470869a0..00000000 --- a/Example/Pods/OCMock/Source/OCMock/OCMStubRecorder.h +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright (c) 2004-2015 Erik Doernenburg and contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may - * not use these files except in compliance with the License. You may obtain - * a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - */ - -#import -#import -#import - -@interface OCMStubRecorder : OCMRecorder - -- (id)andReturn:(id)anObject; -- (id)andReturnValue:(NSValue *)aValue; -- (id)andThrow:(NSException *)anException; -- (id)andPost:(NSNotification *)aNotification; -- (id)andCall:(SEL)selector onObject:(id)anObject; -- (id)andDo:(void (^)(NSInvocation *invocation))block; -- (id)andForwardToRealObject; - -@end - - -@interface OCMStubRecorder (Properties) - -#define andReturn(aValue) _andReturn(({ \ - __typeof__(aValue) _val = (aValue); \ - NSValue *_nsval = [NSValue value:&_val withObjCType:@encode(__typeof__(_val))]; \ - if (OCMIsObjectType(@encode(__typeof(_val)))) { \ - objc_setAssociatedObject(_nsval, "OCMAssociatedBoxedValue", *(__unsafe_unretained id *) (void *) &_val, OBJC_ASSOCIATION_RETAIN); \ - } \ - _nsval; \ -})) -@property (nonatomic, readonly) OCMStubRecorder *(^ _andReturn)(NSValue *); - -#define andThrow(anException) _andThrow(anException) -@property (nonatomic, readonly) OCMStubRecorder *(^ _andThrow)(NSException *); - -#define andPost(aNotification) _andPost(aNotification) -@property (nonatomic, readonly) OCMStubRecorder *(^ _andPost)(NSNotification *); - -#define andCall(anObject, aSelector) _andCall(anObject, aSelector) -@property (nonatomic, readonly) OCMStubRecorder *(^ _andCall)(id, SEL); - -#define andDo(aBlock) _andDo(aBlock) -@property (nonatomic, readonly) OCMStubRecorder *(^ _andDo)(void (^)(NSInvocation *)); - -#define andForwardToRealObject() _andForwardToRealObject() -@property (nonatomic, readonly) OCMStubRecorder *(^ _andForwardToRealObject)(void); - -@end - - - diff --git a/Example/Pods/OCMock/Source/OCMock/OCMStubRecorder.m b/Example/Pods/OCMock/Source/OCMock/OCMStubRecorder.m deleted file mode 100644 index 665fa8f3..00000000 --- a/Example/Pods/OCMock/Source/OCMock/OCMStubRecorder.m +++ /dev/null @@ -1,187 +0,0 @@ -/* - * Copyright (c) 2004-2015 Erik Doernenburg and contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may - * not use these files except in compliance with the License. You may obtain - * a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - */ - -#import "OCMStubRecorder.h" -#import "OCClassMockObject.h" -#import "OCMReturnValueProvider.h" -#import "OCMBoxedReturnValueProvider.h" -#import "OCMExceptionReturnValueProvider.h" -#import "OCMIndirectReturnValueProvider.h" -#import "OCMNotificationPoster.h" -#import "OCMBlockCaller.h" -#import "OCMRealObjectForwarder.h" -#import "OCMFunctions.h" -#import "OCMInvocationStub.h" - - -@implementation OCMStubRecorder - -#pragma mark Initialisers, description, accessors, etc. - -- (id)init -{ - self = [super init]; - invocationMatcher = [[OCMInvocationStub alloc] init]; - return self; -} - -- (OCMInvocationStub *)stub -{ - return (OCMInvocationStub *)invocationMatcher; -} - - -#pragma mark Recording invocation actions - -- (id)andReturn:(id)anObject -{ - [[self stub] addInvocationAction:[[[OCMReturnValueProvider alloc] initWithValue:anObject] autorelease]]; - return self; -} - -- (id)andReturnValue:(NSValue *)aValue -{ - [[self stub] addInvocationAction:[[[OCMBoxedReturnValueProvider alloc] initWithValue:aValue] autorelease]]; - return self; -} - -- (id)andThrow:(NSException *)anException -{ - [[self stub] addInvocationAction:[[[OCMExceptionReturnValueProvider alloc] initWithValue:anException] autorelease]]; - return self; -} - -- (id)andPost:(NSNotification *)aNotification -{ - [[self stub] addInvocationAction:[[[OCMNotificationPoster alloc] initWithNotification:aNotification] autorelease]]; - return self; -} - -- (id)andCall:(SEL)selector onObject:(id)anObject -{ - [[self stub] addInvocationAction:[[[OCMIndirectReturnValueProvider alloc] initWithProvider:anObject andSelector:selector] autorelease]]; - return self; -} - -- (id)andDo:(void (^)(NSInvocation *))aBlock -{ - [[self stub] addInvocationAction:[[[OCMBlockCaller alloc] initWithCallBlock:aBlock] autorelease]]; - return self; -} - -- (id)andForwardToRealObject -{ - [[self stub] addInvocationAction:[[[OCMRealObjectForwarder alloc] init] autorelease]]; - return self; -} - - -#pragma mark Finishing recording - -- (void)forwardInvocation:(NSInvocation *)anInvocation -{ - [super forwardInvocation:anInvocation]; - [mockObject addStub:[self stub]]; -} - - -@end - - -@implementation OCMStubRecorder (Properties) - -@dynamic _andReturn; - -- (OCMStubRecorder *(^)(NSValue *))_andReturn -{ - id (^theBlock)(id) = ^ (NSValue *aValue) - { - if(OCMIsObjectType([aValue objCType])) - { - NSValue *objValue = nil; - [aValue getValue:&objValue]; - return [self andReturn:objValue]; - } - else - { - return [self andReturnValue:aValue]; - } - }; - return [[theBlock copy] autorelease]; -} - - -@dynamic _andThrow; - -- (OCMStubRecorder *(^)(NSException *))_andThrow -{ - id (^theBlock)(id) = ^ (NSException * anException) - { - return [self andThrow:anException]; - }; - return [[theBlock copy] autorelease]; -} - - -@dynamic _andPost; - -- (OCMStubRecorder *(^)(NSNotification *))_andPost -{ - id (^theBlock)(id) = ^ (NSNotification * aNotification) - { - return [self andPost:aNotification]; - }; - return [[theBlock copy] autorelease]; -} - - -@dynamic _andCall; - -- (OCMStubRecorder *(^)(id, SEL))_andCall -{ - id (^theBlock)(id, SEL) = ^ (id anObject, SEL aSelector) - { - return [self andCall:aSelector onObject:anObject]; - }; - return [[theBlock copy] autorelease]; -} - - -@dynamic _andDo; - -- (OCMStubRecorder *(^)(void (^)(NSInvocation *)))_andDo -{ - id (^theBlock)(void (^)(NSInvocation *)) = ^ (void (^ blockToCall)(NSInvocation *)) - { - return [self andDo:blockToCall]; - }; - return [[theBlock copy] autorelease]; -} - - -@dynamic _andForwardToRealObject; - -- (OCMStubRecorder *(^)(void))_andForwardToRealObject -{ - id (^theBlock)(void) = ^ (void) - { - return [self andForwardToRealObject]; - }; - return [[theBlock copy] autorelease]; -} - - -@end diff --git a/Example/Pods/OCMock/Source/OCMock/OCMVerifier.h b/Example/Pods/OCMock/Source/OCMock/OCMVerifier.h deleted file mode 100644 index c41a6bd1..00000000 --- a/Example/Pods/OCMock/Source/OCMock/OCMVerifier.h +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Copyright (c) 2014-2015 Erik Doernenburg and contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may - * not use these files except in compliance with the License. You may obtain - * a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - */ - -#import "OCMRecorder.h" -#import "OCMLocation.h" - - -@interface OCMVerifier : OCMRecorder - -@property(retain) OCMLocation *location; - -@end diff --git a/Example/Pods/OCMock/Source/OCMock/OCMVerifier.m b/Example/Pods/OCMock/Source/OCMock/OCMVerifier.m deleted file mode 100644 index 011935df..00000000 --- a/Example/Pods/OCMock/Source/OCMock/OCMVerifier.m +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Copyright (c) 2014-2015 Erik Doernenburg and contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may - * not use these files except in compliance with the License. You may obtain - * a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - */ - -#import -#import "OCMVerifier.h" -#import "OCMockObject.h" -#import "OCMLocation.h" -#import "OCMInvocationMatcher.h" - - -@implementation OCMVerifier - -- (id)init -{ - if ((self = [super init])) - { - invocationMatcher = [[OCMInvocationMatcher alloc] init]; - } - - return self; -} - -- (void)forwardInvocation:(NSInvocation *)anInvocation -{ - [super forwardInvocation:anInvocation]; - [mockObject verifyInvocation:invocationMatcher atLocation:self.location]; -} - -- (void)dealloc -{ - [_location release]; - [super dealloc]; -} - -@end diff --git a/Example/Pods/OCMock/Source/OCMock/OCMock.h b/Example/Pods/OCMock/Source/OCMock/OCMock.h deleted file mode 100644 index 94360e72..00000000 --- a/Example/Pods/OCMock/Source/OCMock/OCMock.h +++ /dev/null @@ -1,86 +0,0 @@ -/* - * Copyright (c) 2004-2015 Erik Doernenburg and contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may - * not use these files except in compliance with the License. You may obtain - * a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - */ - -#import -#import -#import -#import -#import -#import -#import -#import -#import - - -#define OCMClassMock(cls) [OCMockObject niceMockForClass:cls] - -#define OCMStrictClassMock(cls) [OCMockObject mockForClass:cls] - -#define OCMProtocolMock(protocol) [OCMockObject niceMockForProtocol:protocol] - -#define OCMStrictProtocolMock(protocol) [OCMockObject mockForProtocol:protocol] - -#define OCMPartialMock(obj) [OCMockObject partialMockForObject:obj] - -#define OCMObserverMock() [OCMockObject observerMock] - - -#define OCMStub(invocation) \ -({ \ - _OCMSilenceWarnings( \ - [OCMMacroState beginStubMacro]; \ - invocation; \ - [OCMMacroState endStubMacro]; \ - ); \ -}) - -#define OCMExpect(invocation) \ -({ \ - _OCMSilenceWarnings( \ - [OCMMacroState beginExpectMacro]; \ - invocation; \ - [OCMMacroState endExpectMacro]; \ - ); \ -}) - -#define ClassMethod(invocation) \ - _OCMSilenceWarnings( \ - [[OCMMacroState globalState] switchToClassMethod]; \ - invocation; \ - ); - - -#define OCMVerifyAll(mock) [mock verifyAtLocation:OCMMakeLocation(self, __FILE__, __LINE__)] - -#define OCMVerifyAllWithDelay(mock, delay) [mock verifyWithDelay:delay atLocation:OCMMakeLocation(self, __FILE__, __LINE__)] - -#define OCMVerify(invocation) \ -({ \ - _OCMSilenceWarnings( \ - [OCMMacroState beginVerifyMacroAtLocation:OCMMakeLocation(self, __FILE__, __LINE__)]; \ - invocation; \ - [OCMMacroState endVerifyMacro]; \ - ); \ -}) - -#define _OCMSilenceWarnings(macro) \ -({ \ - _Pragma("clang diagnostic push") \ - _Pragma("clang diagnostic ignored \"-Wunused-value\"") \ - _Pragma("clang diagnostic ignored \"-Wunused-getter-return-value\"") \ - macro \ - _Pragma("clang diagnostic pop") \ -}) diff --git a/Example/Pods/OCMock/Source/OCMock/OCMockObject.h b/Example/Pods/OCMock/Source/OCMock/OCMockObject.h deleted file mode 100644 index 58df67d7..00000000 --- a/Example/Pods/OCMock/Source/OCMock/OCMockObject.h +++ /dev/null @@ -1,74 +0,0 @@ -/* - * Copyright (c) 2004-2015 Erik Doernenburg and contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may - * not use these files except in compliance with the License. You may obtain - * a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - */ - -#import - -@class OCMLocation; -@class OCMInvocationStub; -@class OCMStubRecorder; -@class OCMInvocationMatcher; -@class OCMInvocationExpectation; - - -@interface OCMockObject : NSProxy -{ - BOOL isNice; - BOOL expectationOrderMatters; - NSMutableArray *stubs; - NSMutableArray *expectations; - NSMutableArray *exceptions; - NSMutableArray *invocations; -} - -+ (id)mockForClass:(Class)aClass; -+ (id)mockForProtocol:(Protocol *)aProtocol; -+ (id)partialMockForObject:(NSObject *)anObject; - -+ (id)niceMockForClass:(Class)aClass; -+ (id)niceMockForProtocol:(Protocol *)aProtocol; - -+ (id)observerMock; - -- (instancetype)init; - -- (void)setExpectationOrderMatters:(BOOL)flag; - -- (id)stub; -- (id)expect; -- (id)reject; - -- (id)verify; -- (id)verifyAtLocation:(OCMLocation *)location; - -- (void)verifyWithDelay:(NSTimeInterval)delay; -- (void)verifyWithDelay:(NSTimeInterval)delay atLocation:(OCMLocation *)location; - -- (void)stopMocking; - -// internal use only - -- (void)addStub:(OCMInvocationStub *)aStub; -- (void)addExpectation:(OCMInvocationExpectation *)anExpectation; - -- (BOOL)handleInvocation:(NSInvocation *)anInvocation; -- (void)handleUnRecordedInvocation:(NSInvocation *)anInvocation; -- (BOOL)handleSelector:(SEL)sel; - -- (void)verifyInvocation:(OCMInvocationMatcher *)matcher; -- (void)verifyInvocation:(OCMInvocationMatcher *)matcher atLocation:(OCMLocation *)location; - -@end - diff --git a/Example/Pods/OCMock/Source/OCMock/OCMockObject.m b/Example/Pods/OCMock/Source/OCMock/OCMockObject.m deleted file mode 100644 index 5267136b..00000000 --- a/Example/Pods/OCMock/Source/OCMock/OCMockObject.m +++ /dev/null @@ -1,377 +0,0 @@ -/* - * Copyright (c) 2004-2015 Erik Doernenburg and contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may - * not use these files except in compliance with the License. You may obtain - * a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - */ - -#import -#import "OCClassMockObject.h" -#import "OCProtocolMockObject.h" -#import "OCPartialMockObject.h" -#import "OCObserverMockObject.h" -#import "OCMStubRecorder.h" -#import -#import "NSInvocation+OCMAdditions.h" -#import "OCMInvocationMatcher.h" -#import "OCMMacroState.h" -#import "OCMFunctionsPrivate.h" -#import "OCMVerifier.h" -#import "OCMInvocationExpectation.h" -#import "OCMExceptionReturnValueProvider.h" -#import "OCMExpectationRecorder.h" - - -@implementation OCMockObject - -#pragma mark Class initialisation - -+ (void)initialize -{ - if([[NSInvocation class] instanceMethodSignatureForSelector:@selector(getArgumentAtIndexAsObject:)] == NULL) - [NSException raise:NSInternalInconsistencyException format:@"** Expected method not present; the method getArgumentAtIndexAsObject: is not implemented by NSInvocation. If you see this exception it is likely that you are using the static library version of OCMock and your project is not configured correctly to load categories from static libraries. Did you forget to add the -ObjC linker flag?"]; -} - - -#pragma mark Factory methods - -+ (id)mockForClass:(Class)aClass -{ - return [[[OCClassMockObject alloc] initWithClass:aClass] autorelease]; -} - -+ (id)mockForProtocol:(Protocol *)aProtocol -{ - return [[[OCProtocolMockObject alloc] initWithProtocol:aProtocol] autorelease]; -} - -+ (id)partialMockForObject:(NSObject *)anObject -{ - return [[[OCPartialMockObject alloc] initWithObject:anObject] autorelease]; -} - - -+ (id)niceMockForClass:(Class)aClass -{ - return [self _makeNice:[self mockForClass:aClass]]; -} - -+ (id)niceMockForProtocol:(Protocol *)aProtocol -{ - return [self _makeNice:[self mockForProtocol:aProtocol]]; -} - - -+ (id)_makeNice:(OCMockObject *)mock -{ - mock->isNice = YES; - return mock; -} - - -+ (id)observerMock -{ - return [[[OCObserverMockObject alloc] init] autorelease]; -} - - -#pragma mark Initialisers, description, accessors, etc. - -- (instancetype)init -{ - // no [super init], we're inheriting from NSProxy - expectationOrderMatters = NO; - stubs = [[NSMutableArray alloc] init]; - expectations = [[NSMutableArray alloc] init]; - exceptions = [[NSMutableArray alloc] init]; - invocations = [[NSMutableArray alloc] init]; - return self; -} - -- (void)dealloc -{ - [stubs release]; - [expectations release]; - [exceptions release]; - [invocations release]; - [super dealloc]; -} - -- (NSString *)description -{ - return @"OCMockObject"; -} - -- (void)addStub:(OCMInvocationStub *)aStub -{ - [stubs addObject:aStub]; -} - -- (void)addExpectation:(OCMInvocationExpectation *)anExpectation -{ - [expectations addObject:anExpectation]; -} - - -#pragma mark Public API - -- (void)setExpectationOrderMatters:(BOOL)flag -{ - expectationOrderMatters = flag; -} - -- (void)stopMocking -{ - // no-op for mock objects that are not class object or partial mocks -} - - -- (id)stub -{ - return [[[OCMStubRecorder alloc] initWithMockObject:self] autorelease]; -} - -- (id)expect -{ - return [[[OCMExpectationRecorder alloc] initWithMockObject:self] autorelease]; -} - -- (id)reject -{ - return [[self expect] never]; -} - - -- (id)verify -{ - return [self verifyAtLocation:nil]; -} - -- (id)verifyAtLocation:(OCMLocation *)location -{ - NSMutableArray *unsatisfiedExpectations = [NSMutableArray array]; - for(OCMInvocationExpectation *e in expectations) - { - if(![e isSatisfied]) - [unsatisfiedExpectations addObject:e]; - } - - if([unsatisfiedExpectations count] == 1) - { - NSString *description = [NSString stringWithFormat:@"%@: expected method was not invoked: %@", - [self description], [[unsatisfiedExpectations objectAtIndex:0] description]]; - OCMReportFailure(location, description); - } - else if([unsatisfiedExpectations count] > 0) - { - NSString *description = [NSString stringWithFormat:@"%@: %@ expected methods were not invoked: %@", - [self description], @([unsatisfiedExpectations count]), [self _stubDescriptions:YES]]; - OCMReportFailure(location, description); - } - - if([exceptions count] > 0) - { - NSString *description = [NSString stringWithFormat:@"%@: %@ (This is a strict mock failure that was ignored when it actually occured.)", - [self description], [[exceptions objectAtIndex:0] description]]; - OCMReportFailure(location, description); - } - - return [[[OCMVerifier alloc] initWithMockObject:self] autorelease]; -} - - -- (void)verifyWithDelay:(NSTimeInterval)delay -{ - [self verifyWithDelay:delay atLocation:nil]; -} - -- (void)verifyWithDelay:(NSTimeInterval)delay atLocation:(OCMLocation *)location -{ - NSTimeInterval step = 0.01; - while(delay > 0) - { - if([expectations count] == 0) - break; - [[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:step]]; - delay -= step; - step *= 2; - } - [self verifyAtLocation:location]; -} - - -#pragma mark Verify after running - -- (void)verifyInvocation:(OCMInvocationMatcher *)matcher -{ - [self verifyInvocation:matcher atLocation:nil]; -} - -- (void)verifyInvocation:(OCMInvocationMatcher *)matcher atLocation:(OCMLocation *)location -{ - for(NSInvocation *invocation in invocations) - { - if([matcher matchesInvocation:invocation]) - return; - } - NSString *description = [NSString stringWithFormat:@"%@: Method %@ was not invoked.", - [self description], [matcher description]]; - - OCMReportFailure(location, description); -} - - -#pragma mark Handling invocations - -- (id)forwardingTargetForSelector:(SEL)aSelector -{ - if([OCMMacroState globalState] != nil) - { - OCMRecorder *recorder = [[OCMMacroState globalState] recorder]; - [recorder setMockObject:self]; - return recorder; - } - return nil; -} - - -- (BOOL)handleSelector:(SEL)sel -{ - for(OCMInvocationStub *recorder in stubs) - if([recorder matchesSelector:sel]) - return YES; - - return NO; -} - -- (void)forwardInvocation:(NSInvocation *)anInvocation -{ - @try - { - if([self handleInvocation:anInvocation] == NO) - [self handleUnRecordedInvocation:anInvocation]; - } - @catch(NSException *e) - { - if([[e name] isEqualToString:OCMStubbedException]) - { - e = [[e userInfo] objectForKey:@"exception"]; - } - else - { - // add non-stubbed method to list of exceptions to be re-raised in verify - [exceptions addObject:e]; - } - [e raise]; - } -} - -- (BOOL)handleInvocation:(NSInvocation *)anInvocation -{ - [invocations addObject:anInvocation]; - - OCMInvocationStub *stub = nil; - for(stub in stubs) - { - // If the stub forwards its invocation to the real object, then we don't want to do handleInvocation: yet, since forwarding the invocation to the real object could call a method that is expected to happen after this one, which is bad if expectationOrderMatters is YES - if([stub matchesInvocation:anInvocation]) - break; - } - // Retain the stub in case it ends up being removed from stubs and expectations, since we still have to call handleInvocation on the stub at the end - [stub retain]; - if(stub == nil) - return NO; - - if([expectations containsObject:stub]) - { - OCMInvocationExpectation *expectation = [self _nextExpectedInvocation]; - if(expectationOrderMatters && (expectation != stub)) - { - [NSException raise:NSInternalInconsistencyException format:@"%@: unexpected method invoked: %@\n\texpected:\t%@", - [self description], [stub description], [[expectations objectAtIndex:0] description]]; - } - - // We can't check isSatisfied yet, since the stub won't be satisfied until we call handleInvocation:, and we don't want to call handleInvocation: yes for the reason in the comment above, since we'll still have the current expectation in the expectations array, which will cause an exception if expectationOrderMatters is YES and we're not ready for any future expected methods to be called yet - if(![(OCMInvocationExpectation *)stub isMatchAndReject]) - { - [expectations removeObject:stub]; - [stubs removeObject:stub]; - } - } - [stub handleInvocation:anInvocation]; - [stub release]; - - return YES; -} - - -- (OCMInvocationExpectation *)_nextExpectedInvocation -{ - for(OCMInvocationExpectation *expectation in expectations) - if(![expectation isMatchAndReject]) - return expectation; - return nil; -} - -- (void)handleUnRecordedInvocation:(NSInvocation *)anInvocation -{ - if(isNice == NO) - { - [NSException raise:NSInternalInconsistencyException format:@"%@: unexpected method invoked: %@ %@", - [self description], [anInvocation invocationDescription], [self _stubDescriptions:NO]]; - } -} - -- (void)doesNotRecognizeSelector:(SEL)aSelector __unused -{ - if([OCMMacroState globalState] != nil) - { - // we can't do anything clever with the macro state because we must raise an exception here - [NSException raise:NSInvalidArgumentException format:@"%@: Cannot stub/expect/verify method '%@' because no such method exists in the mocked class.", - [self description], NSStringFromSelector(aSelector)]; - } - else - { - [NSException raise:NSInvalidArgumentException format:@"-[%@ %@]: unrecognized selector sent to instance %p", - [self description], NSStringFromSelector(aSelector), (void *)self]; - } -} - - -#pragma mark Helper methods - -- (NSString *)_stubDescriptions:(BOOL)onlyExpectations -{ - NSMutableString *outputString = [NSMutableString string]; - for(OCMStubRecorder *stub in stubs) - { - NSString *prefix = @""; - - if(onlyExpectations) - { - if([expectations containsObject:stub] == NO) - continue; - } - else - { - if([expectations containsObject:stub]) - prefix = @"expected:\t"; - else - prefix = @"stubbed:\t"; - } - [outputString appendFormat:@"\n\t%@%@", prefix, [stub description]]; - } - return outputString; -} - - -@end diff --git a/Example/Pods/OCMock/Source/OCMock/OCObserverMockObject.h b/Example/Pods/OCMock/Source/OCMock/OCObserverMockObject.h deleted file mode 100644 index 7b70e365..00000000 --- a/Example/Pods/OCMock/Source/OCMock/OCObserverMockObject.h +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright (c) 2009-2015 Erik Doernenburg and contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may - * not use these files except in compliance with the License. You may obtain - * a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - */ - -#import - -@class OCMLocation; - - -@interface OCObserverMockObject : NSObject -{ - BOOL expectationOrderMatters; - NSMutableArray *recorders; - NSMutableArray *centers; -} - -- (void)setExpectationOrderMatters:(BOOL)flag; - -- (id)expect; - -- (void)verify; -- (void)verifyAtLocation:(OCMLocation *)location; - -- (void)handleNotification:(NSNotification *)aNotification; - -// internal use - -- (void)autoRemoveFromCenter:(NSNotificationCenter *)aCenter; -- (void)notificationWithName:(NSString *)name object:(id)sender; - -@end diff --git a/Example/Pods/OCMock/Source/OCMock/OCObserverMockObject.m b/Example/Pods/OCMock/Source/OCMock/OCObserverMockObject.m deleted file mode 100644 index 85495ef5..00000000 --- a/Example/Pods/OCMock/Source/OCMock/OCObserverMockObject.m +++ /dev/null @@ -1,127 +0,0 @@ -/* - * Copyright (c) 2009-2015 Erik Doernenburg and contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may - * not use these files except in compliance with the License. You may obtain - * a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - */ - -#import "OCObserverMockObject.h" -#import "OCMObserverRecorder.h" -#import "OCMLocation.h" -#import "OCMFunctionsPrivate.h" - - -@implementation OCObserverMockObject - -#pragma mark Initialisers, description, accessors, etc. - -- (id)init -{ - if ((self = [super init])) - { - recorders = [[NSMutableArray alloc] init]; - centers = [[NSMutableArray alloc] init]; - } - - return self; -} - -- (id)retain -{ - return [super retain]; -} - -- (void)dealloc -{ - for(NSNotificationCenter *c in centers) - [c removeObserver:self]; - [centers release]; - [recorders release]; - [super dealloc]; -} - -- (NSString *)description -{ - return @"OCMockObserver"; -} - -- (void)setExpectationOrderMatters:(BOOL)flag -{ - expectationOrderMatters = flag; -} - -- (void)autoRemoveFromCenter:(NSNotificationCenter *)aCenter -{ - [centers addObject:aCenter]; -} - - -#pragma mark Public API - -- (id)expect -{ - OCMObserverRecorder *recorder = [[[OCMObserverRecorder alloc] init] autorelease]; - [recorders addObject:recorder]; - return recorder; -} - -- (void)verify -{ - [self verifyAtLocation:nil]; -} - -- (void)verifyAtLocation:(OCMLocation *)location -{ - if([recorders count] == 1) - { - NSString *description = [NSString stringWithFormat:@"%@: expected notification was not observed: %@", - [self description], [[recorders lastObject] description]]; - OCMReportFailure(location, description); - } - else if([recorders count] > 0) - { - NSString *description = [NSString stringWithFormat:@"%@ : %@ expected notifications were not observed.", - [self description], @([recorders count])]; - OCMReportFailure(location, description); - } -} - - -#pragma mark Receiving recording requests via macro - -- (void)notificationWithName:(NSString *)name object:(id)sender -{ - [[self expect] notificationWithName:name object:sender]; -} - - -#pragma mark Receiving notifications - -- (void)handleNotification:(NSNotification *)aNotification -{ - NSUInteger i, limit; - - limit = expectationOrderMatters ? 1 : [recorders count]; - for(i = 0; i < limit; i++) - { - if([[recorders objectAtIndex:i] matchesNotification:aNotification]) - { - [recorders removeObjectAtIndex:i]; - return; - } - } - [NSException raise:NSInternalInconsistencyException format:@"%@: unexpected notification observed: %@", [self description], - [aNotification description]]; -} - - -@end diff --git a/Example/Pods/OCMock/Source/OCMock/OCPartialMockObject.h b/Example/Pods/OCMock/Source/OCMock/OCPartialMockObject.h deleted file mode 100644 index 646aa6aa..00000000 --- a/Example/Pods/OCMock/Source/OCMock/OCPartialMockObject.h +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Copyright (c) 2009-2015 Erik Doernenburg and contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may - * not use these files except in compliance with the License. You may obtain - * a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - */ - -#import "OCClassMockObject.h" - -@interface OCPartialMockObject : OCClassMockObject -{ - NSObject *realObject; -} - -- (id)initWithObject:(NSObject *)anObject; - -- (NSObject *)realObject; - -@end diff --git a/Example/Pods/OCMock/Source/OCMock/OCPartialMockObject.m b/Example/Pods/OCMock/Source/OCMock/OCPartialMockObject.m deleted file mode 100644 index c82db822..00000000 --- a/Example/Pods/OCMock/Source/OCMock/OCPartialMockObject.m +++ /dev/null @@ -1,218 +0,0 @@ -/* - * Copyright (c) 2009-2015 Erik Doernenburg and contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may - * not use these files except in compliance with the License. You may obtain - * a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - */ - -#import -#import "OCMockObject.h" -#import "OCPartialMockObject.h" -#import "NSMethodSignature+OCMAdditions.h" -#import "NSObject+OCMAdditions.h" -#import "OCMFunctionsPrivate.h" -#import "OCMInvocationStub.h" - - -@implementation OCPartialMockObject - -#pragma mark Initialisers, description, accessors, etc. - -- (id)initWithObject:(NSObject *)anObject -{ - NSParameterAssert(anObject != nil); - [self assertClassIsSupported:[anObject class]]; - [super initWithClass:[anObject class]]; - realObject = [anObject retain]; - [self prepareObjectForInstanceMethodMocking]; - return self; -} - -- (void)dealloc -{ - [self stopMocking]; - [realObject release]; - [super dealloc]; -} - -- (NSString *)description -{ - return [NSString stringWithFormat:@"OCPartialMockObject(%@)", NSStringFromClass(mockedClass)]; -} - -- (NSObject *)realObject -{ - return realObject; -} - -#pragma mark Helper methods - -- (void)assertClassIsSupported:(Class)class -{ - NSString *classname = NSStringFromClass(class); - NSString *reason = nil; - if([classname hasPrefix:@"__NSTagged"] || [classname hasPrefix:@"NSTagged"]) - reason = [NSString stringWithFormat:@"OCMock does not support partially mocking tagged classes; got %@", classname]; - else if([classname hasPrefix:@"__NSCF"]) - reason = [NSString stringWithFormat:@"OCMock does not support partially mocking toll-free bridged classes; got %@", classname]; - - if(reason != nil) - [[NSException exceptionWithName:NSInvalidArgumentException reason:reason userInfo:nil] raise]; -} - - -#pragma mark Extending/overriding superclass behaviour - -- (void)stopMocking -{ - if(realObject != nil) - { - OCMSetAssociatedMockForObject(nil, realObject); - object_setClass(realObject, [self mockedClass]); - [realObject release]; - realObject = nil; - } - [super stopMocking]; -} - -- (void)addStub:(OCMInvocationStub *)aStub -{ - [super addStub:aStub]; - if(![aStub recordedAsClassMethod]) - [self setupForwarderForSelector:[[aStub recordedInvocation] selector]]; -} - -- (void)handleUnRecordedInvocation:(NSInvocation *)anInvocation -{ - [anInvocation invokeWithTarget:realObject]; -} - - -#pragma mark Subclass management - -- (void)prepareObjectForInstanceMethodMocking -{ - OCMSetAssociatedMockForObject(self, realObject); - - /* dynamically create a subclass and set it as the class of the object */ - Class subclass = OCMCreateSubclass(mockedClass, realObject); - object_setClass(realObject, subclass); - - /* point forwardInvocation: of the object to the implementation in the mock */ - Method myForwardMethod = class_getInstanceMethod([self mockObjectClass], @selector(forwardInvocationForRealObject:)); - IMP myForwardIMP = method_getImplementation(myForwardMethod); - class_addMethod(subclass, @selector(forwardInvocation:), myForwardIMP, method_getTypeEncoding(myForwardMethod)); - - /* do the same for forwardingTargetForSelector, remember existing imp with alias selector */ - Method myForwardingTargetMethod = class_getInstanceMethod([self mockObjectClass], @selector(forwardingTargetForSelectorForRealObject:)); - IMP myForwardingTargetIMP = method_getImplementation(myForwardingTargetMethod); - IMP originalForwardingTargetIMP = [mockedClass instanceMethodForSelector:@selector(forwardingTargetForSelector:)]; - class_addMethod(subclass, @selector(forwardingTargetForSelector:), myForwardingTargetIMP, method_getTypeEncoding(myForwardingTargetMethod)); - class_addMethod(subclass, @selector(ocmock_replaced_forwardingTargetForSelector:), originalForwardingTargetIMP, method_getTypeEncoding(myForwardingTargetMethod)); - - /* We also override the -class method to return the original class */ - Method myObjectClassMethod = class_getInstanceMethod([self mockObjectClass], @selector(classForRealObject)); - const char *objectClassTypes = method_getTypeEncoding(myObjectClassMethod); - IMP myObjectClassImp = method_getImplementation(myObjectClassMethod); - class_addMethod(subclass, @selector(class), myObjectClassImp, objectClassTypes); - - /* Adding forwarder for most instance methods to allow for verify after run */ - NSArray *methodBlackList = @[@"class", @"forwardingTargetForSelector:", @"methodSignatureForSelector:", @"forwardInvocation:", - @"allowsWeakReference", @"retainWeakReference", @"isBlock"]; - [NSObject enumerateMethodsInClass:mockedClass usingBlock:^(Class cls, SEL sel) { - if((cls == [NSObject class]) || (cls == [NSProxy class])) - return; - NSString *className = NSStringFromClass(cls); - NSString *selName = NSStringFromSelector(sel); - if(([className hasPrefix:@"NS"] || [className hasPrefix:@"UI"]) && - ([selName hasPrefix:@"_"] || [selName hasSuffix:@"_"])) - return; - if([methodBlackList containsObject:selName]) - return; - @try - { - [self setupForwarderForSelector:sel]; - } - @catch(NSException *e) - { - // ignore for now - } - }]; -} - -- (void)setupForwarderForSelector:(SEL)sel -{ - SEL aliasSelector = OCMAliasForOriginalSelector(sel); - if(class_getInstanceMethod(object_getClass(realObject), aliasSelector) != NULL) - return; - - Method originalMethod = class_getInstanceMethod(mockedClass, sel); - IMP originalIMP = method_getImplementation(originalMethod); - const char *types = method_getTypeEncoding(originalMethod); - /* Might be NULL if the selector is forwarded to another class */ - // TODO: check the fallback implementation is actually sufficient - if(types == NULL) - types = ([[mockedClass instanceMethodSignatureForSelector:sel] fullObjCTypes]); - - Class subclass = object_getClass([self realObject]); - IMP forwarderIMP = [mockedClass instanceMethodForwarderForSelector:sel]; - class_replaceMethod(subclass, sel, forwarderIMP, types); - class_addMethod(subclass, aliasSelector, originalIMP, types); -} - - -// Implementation of the -class method; return the Class that was reported with [realObject class] prior to mocking -- (Class)classForRealObject -{ - // in here "self" is a reference to the real object, not the mock - OCPartialMockObject *mock = OCMGetAssociatedMockForObject(self); - if(mock == nil) - [NSException raise:NSInternalInconsistencyException format:@"No partial mock for object %p", self]; - return [mock mockedClass]; -} - - -- (id)forwardingTargetForSelectorForRealObject:(SEL)sel -{ - // in here "self" is a reference to the real object, not the mock - OCPartialMockObject *mock = OCMGetAssociatedMockForObject(self); - if(mock == nil) - [NSException raise:NSInternalInconsistencyException format:@"No partial mock for object %p", self]; - if([mock handleSelector:sel]) - return self; - - return [self ocmock_replaced_forwardingTargetForSelector:sel]; -} - -// Make the compiler happy in -forwardingTargetForSelectorForRealObject: because it can't find the message… -- (id)ocmock_replaced_forwardingTargetForSelector:(SEL)sel -{ - return nil; -} - - -- (void)forwardInvocationForRealObject:(NSInvocation *)anInvocation -{ - // in here "self" is a reference to the real object, not the mock - OCPartialMockObject *mock = OCMGetAssociatedMockForObject(self); - if(mock == nil) - [NSException raise:NSInternalInconsistencyException format:@"No partial mock for object %p", self]; - - if([mock handleInvocation:anInvocation] == NO) - { - [anInvocation setSelector:OCMAliasForOriginalSelector([anInvocation selector])]; - [anInvocation invoke]; - } -} - - -@end diff --git a/Example/Pods/OCMock/Source/OCMock/OCProtocolMockObject.h b/Example/Pods/OCMock/Source/OCMock/OCProtocolMockObject.h deleted file mode 100644 index 9a102b3f..00000000 --- a/Example/Pods/OCMock/Source/OCMock/OCProtocolMockObject.h +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright (c) 2005-2015 Erik Doernenburg and contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may - * not use these files except in compliance with the License. You may obtain - * a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - */ - -#import - -@interface OCProtocolMockObject : OCMockObject -{ - Protocol *mockedProtocol; -} - -- (id)initWithProtocol:(Protocol *)aProtocol; - -@end - diff --git a/Example/Pods/OCMock/Source/OCMock/OCProtocolMockObject.m b/Example/Pods/OCMock/Source/OCMock/OCProtocolMockObject.m deleted file mode 100644 index 82f61679..00000000 --- a/Example/Pods/OCMock/Source/OCMock/OCProtocolMockObject.m +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright (c) 2005-2015 Erik Doernenburg and contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may - * not use these files except in compliance with the License. You may obtain - * a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - */ - -#import -#import "NSMethodSignature+OCMAdditions.h" -#import "OCProtocolMockObject.h" - -@implementation OCProtocolMockObject - -#pragma mark Initialisers, description, accessors, etc. - -- (id)initWithProtocol:(Protocol *)aProtocol -{ - NSParameterAssert(aProtocol != nil); - [super init]; - mockedProtocol = aProtocol; - return self; -} - -- (NSString *)description -{ - const char* name = protocol_getName(mockedProtocol); - return [NSString stringWithFormat:@"OCMockObject(%s)", name]; -} - -#pragma mark Proxy API - -- (NSMethodSignature *)methodSignatureForSelector:(SEL)aSelector -{ - struct { BOOL isRequired; BOOL isInstance; } opts[4] = { {YES, YES}, {NO, YES}, {YES, NO}, {NO, NO} }; - for(int i = 0; i < 4; i++) - { - struct objc_method_description methodDescription = protocol_getMethodDescription(mockedProtocol, aSelector, opts[i].isRequired, opts[i].isInstance); - if(methodDescription.name != NULL) - return [NSMethodSignature signatureWithObjCTypes:methodDescription.types]; - } - return nil; -} - -- (BOOL)conformsToProtocol:(Protocol *)aProtocol -{ - return protocol_conformsToProtocol(mockedProtocol, aProtocol); -} - -- (BOOL)respondsToSelector:(SEL)selector -{ - return ([self methodSignatureForSelector:selector] != nil); -} - -@end diff --git a/Example/Pods/Pods.xcodeproj/project.pbxproj b/Example/Pods/Pods.xcodeproj/project.pbxproj deleted file mode 100644 index 0323a8a2..00000000 --- a/Example/Pods/Pods.xcodeproj/project.pbxproj +++ /dev/null @@ -1,1711 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 46; - objects = { - -/* Begin PBXBuildFile section */ - 03EF931564978791D4ABC400F3FDDBED /* OCMVerifier.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D1F8DFB3B198B389EEB6275D77F16BE /* OCMVerifier.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 046937EA1C4859D4D96EFA7B7687E441 /* OCMBlockCaller.m in Sources */ = {isa = PBXBuildFile; fileRef = 5C9A797A2497538C323AFD99D88A2729 /* OCMBlockCaller.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 062258F0A1BD8AB11E3E3B1815357988 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 22CC099EDADB76C55367796DBD37AE8D /* QuartzCore.framework */; }; - 0934D3DAC27331C1569A357A677B2206 /* NSMethodSignature+OCMAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = A9D76DC181FFA24CA772C83CC5998F99 /* NSMethodSignature+OCMAdditions.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 0A7C4089DBD8BD40374AFA8EEAB7CA3C /* OCMPassByRefSetter.m in Sources */ = {isa = PBXBuildFile; fileRef = D30281F94F4C6A8CADB1829C32CBE143 /* OCMPassByRefSetter.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 0DECD374B59611D4E32BD5EF406679F1 /* NYTPhotoViewerCloseButtonX@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 98899FA2A9FDC7C35C5BDB88F86A11CB /* NYTPhotoViewerCloseButtonX@3x.png */; }; - 0EE98780873CB1A29EE8B4A36BA7E14A /* OCMFunctions.h in Headers */ = {isa = PBXBuildFile; fileRef = 0B9C2EF14DDBCDD41F6D3A9D98ABAE82 /* OCMFunctions.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 0EFCE23D81397A312044D44B2DEF5E98 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CEBC85ECBD828DF92AC9EEB8B18DA6F1 /* Foundation.framework */; }; - 10AEAD2136880EEE7E771F533331F250 /* OCMock.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B368F633457B0DB0830B17B921F8C1C /* OCMock.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 149DE9C6DB74B12EFF07D185484D946F /* NSInvocation+OCMAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 814AEB5E1354012135422C0913AE8797 /* NSInvocation+OCMAdditions.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 14EA64C0FC85C40F7CC6B35835F44F60 /* NYTPhotoViewerCloseButtonXLandscape@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = B271D7914F3BBE18B22AB38342AF3803 /* NYTPhotoViewerCloseButtonXLandscape@3x.png */; }; - 1586CD3BDB1E92D87A0E423AAC313FD4 /* OCMObserverRecorder.m in Sources */ = {isa = PBXBuildFile; fileRef = DDA5DD2854CFED7FF011EE6A9A4DCB4D /* OCMObserverRecorder.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 171F70710819BE87270EFA05924971F4 /* NYTPhotoViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = A96A27F7E8595C88C9531E7CF754A42C /* NYTPhotoViewController.m */; }; - 1800397EDF43C932093838940EAAA045 /* NYTPhotosDataSource.m in Sources */ = {isa = PBXBuildFile; fileRef = C21AE0BF51688EC33F3530295270954C /* NYTPhotosDataSource.m */; }; - 183C8BCE6A8A8CA5FE2853FA7A16752A /* NYTPhotosOverlayView.h in Headers */ = {isa = PBXBuildFile; fileRef = 68CB521D81490E919F4C67BF5766A8A0 /* NYTPhotosOverlayView.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1B7E21160BEF08CC76BA8C17E94E455A /* OCMLocation.m in Sources */ = {isa = PBXBuildFile; fileRef = 72C05092D1DCF7F77B1007CC48394741 /* OCMLocation.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 20C39DB909C33B491D60F23FA1D415C2 /* OCMRealObjectForwarder.m in Sources */ = {isa = PBXBuildFile; fileRef = BFEFEBEFC9AC34B6DBF92B2945966247 /* OCMRealObjectForwarder.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 210933BCD4FBAFBA646D79E67E4EFF34 /* Pods-NYTPhotoViewer-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = DCC3DA2F14023E384CDB88FA771B7376 /* Pods-NYTPhotoViewer-dummy.m */; }; - 21721F5FAF6C68D4B94C743FCDAEA790 /* NYTPhotosViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 7BFA570C0B1F268736D9A57B61FC5AC0 /* NYTPhotosViewController.m */; }; - 25EBFE1A355E5270C8C4E886D6FA1A6D /* NYTPhotoContainer.h in Headers */ = {isa = PBXBuildFile; fileRef = A57B0D2B7A37D7FF6C68F57A2100B921 /* NYTPhotoContainer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 2B20322155F43A8B6132E72BDB3DB723 /* NYTPhoto.h in Headers */ = {isa = PBXBuildFile; fileRef = F272208CEBC0979AF3E0744A2F82FDC8 /* NYTPhoto.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 3009A71CCDC3E0A261D1DEFD79F8531D /* NYTPhotoCaptionView.m in Sources */ = {isa = PBXBuildFile; fileRef = 52A46719EDEA6919CB7CE89CEA7D170B /* NYTPhotoCaptionView.m */; }; - 3152811CD17686AA726713BFE3612206 /* OCMConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = B3A7959AAF13C4513F0A26907B05BE38 /* OCMConstraint.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 33C4E9CA4B43CD4C468B338E2ED06860 /* OCMVerifier.h in Headers */ = {isa = PBXBuildFile; fileRef = F170EA151A6B5BB3B1185891240455B8 /* OCMVerifier.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 34AE6EE9360CA0D32BAAC84B94E0D29A /* MobileCoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B304EE4E3C9C59C6AC5562290B8E54A0 /* MobileCoreServices.framework */; }; - 3A769EE15211B7EBBAF4B1C8AD542502 /* OCMFunctionsPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 9632A102BEFC5A696820ABD422C0FEB4 /* OCMFunctionsPrivate.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 3A969D019F6F52E82EB1CB4DFCCD842C /* Pods-NYTPhotoViewer-SwiftTests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 98F3701FC2ADBCB700525DEC45BF8F18 /* Pods-NYTPhotoViewer-SwiftTests-dummy.m */; }; - 3D1407E70C4B261294BB427D9600F75C /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CEBC85ECBD828DF92AC9EEB8B18DA6F1 /* Foundation.framework */; }; - 3D258E9A843C52C991E5E9455CB8DB51 /* FLAnimatedImage-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = DFD7649EA2AC00E2DA8E2B447ABE63A7 /* FLAnimatedImage-dummy.m */; }; - 3EEE56426C5838CA2F13E8F95B594401 /* OCMRecorder.m in Sources */ = {isa = PBXBuildFile; fileRef = B6520FC9FA7ACAF05FFA2A104D7BC74A /* OCMRecorder.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 40B2ABF25812A14D83A05D8937FBDB7B /* OCProtocolMockObject.h in Headers */ = {isa = PBXBuildFile; fileRef = ABA9A2401DD6B78C19450E4B5317EAFC /* OCProtocolMockObject.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 422CC40CE7C1DAE6334D28111C10491C /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CEBC85ECBD828DF92AC9EEB8B18DA6F1 /* Foundation.framework */; }; - 475BBAB1062B524EBF543ABD0ADA1829 /* Pods-Tests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 3F3D665965406E236F4F31B2B196DAC5 /* Pods-Tests-dummy.m */; }; - 4CF0A4AD04F2F3CF7465991A5E76AD47 /* OCMStubRecorder.m in Sources */ = {isa = PBXBuildFile; fileRef = 6D19A946EFEB0E767DEAC81E1B4E79D7 /* OCMStubRecorder.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 5030BA8BB5492165F062BD652988EBB4 /* NYTScalingImageView.m in Sources */ = {isa = PBXBuildFile; fileRef = 0EB8C9AB20B04C92ADD97EF8A5693AC4 /* NYTScalingImageView.m */; }; - 55EA7FCA2F507BCC25959CE95D295A8C /* OCMConstraint.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E9688896207877A736E092961E8E5CA /* OCMConstraint.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 55F2C7C98AB5E300663D064AAA64B80B /* OCMArgAction.m in Sources */ = {isa = PBXBuildFile; fileRef = 973189E773DE18BAB80FDB24AF02C58A /* OCMArgAction.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 55FA6B09D105DEDDB1AAACFD6FF69B4D /* NYTPhotosDataSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 0E09EDD8693DA4EAB1AA460341C04088 /* NYTPhotosDataSource.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 562C4A7A171B6F0000B132E22372C3DA /* OCPartialMockObject.h in Headers */ = {isa = PBXBuildFile; fileRef = C2E66F0C5763D1D42B63369B433D1180 /* OCPartialMockObject.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 59BC54DA90AD2433D20358F9853622CA /* OCMMacroState.m in Sources */ = {isa = PBXBuildFile; fileRef = B5BA50A06BFCCE49101A4EA9DB780838 /* OCMMacroState.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 5BB246B2587EBC3E5597DBD6CD33777F /* NSMethodSignature+OCMAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = E9218905F90589519D5C9E501403FD5F /* NSMethodSignature+OCMAdditions.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 5E279FED57021E3C50468564F86AA8A0 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CEBC85ECBD828DF92AC9EEB8B18DA6F1 /* Foundation.framework */; }; - 5F04262019BBB326960E643861626099 /* OCMExceptionReturnValueProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = 279BBD3C9C572DC7ED8957AA397482B3 /* OCMExceptionReturnValueProvider.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 60225E43F29FDCDDA5C106FEFADEF076 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B79803237D0CE63E235B8BB3964A0726 /* UIKit.framework */; }; - 60244C06E35A0C05A6F3FB1694B95BBF /* NYTPhotosOverlayView.m in Sources */ = {isa = PBXBuildFile; fileRef = 35B1FDF843FF7681C271B1B8B6B2C88D /* NYTPhotosOverlayView.m */; }; - 651F3096B56BFF131C5F956001D7BAAB /* OCMArg.m in Sources */ = {isa = PBXBuildFile; fileRef = 15C391E1A916398055220E74FB12455B /* OCMArg.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 672FE514B7C1EB583AF6CEB2538025A7 /* OCMBoxedReturnValueProvider.m in Sources */ = {isa = PBXBuildFile; fileRef = 53D2EBBA2495B7A137B80E8BB7C00AA2 /* OCMBoxedReturnValueProvider.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 6C10E812F3AFFCBD5062BD599E05499E /* NYTPhotoDismissalInteractionController.m in Sources */ = {isa = PBXBuildFile; fileRef = D0A9BF394870352693A8F730E148574B /* NYTPhotoDismissalInteractionController.m */; }; - 6D2AD1DFA8F27BA0EBB3365A5AF7AC1B /* OCMExpectationRecorder.m in Sources */ = {isa = PBXBuildFile; fileRef = 9017344DB0E0D91029C98D909F46601D /* OCMExpectationRecorder.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 6DF6EB8F7E7738D44FD3BEC9321646C3 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CEBC85ECBD828DF92AC9EEB8B18DA6F1 /* Foundation.framework */; }; - 70AC31D0736F568C0386716176361D09 /* OCMInvocationMatcher.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D6C86847B42822970F8110945431AB6 /* OCMInvocationMatcher.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 71899DFD8094C412FFC39669279B4533 /* OCMBlockArgCaller.h in Headers */ = {isa = PBXBuildFile; fileRef = 39298D10B1AF6F64D12AEF39105C78C5 /* OCMBlockArgCaller.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 71CFED44C6B6DFC86B8DFCC574F6B8E4 /* NYTPhotoTransitionController.h in Headers */ = {isa = PBXBuildFile; fileRef = 8D998033226514D2EC165F848A5C8C25 /* NYTPhotoTransitionController.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 784F1A8416EA6268640F5E75E1E638E5 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CEBC85ECBD828DF92AC9EEB8B18DA6F1 /* Foundation.framework */; }; - 7AE83DFAD9756ED1FB1CB5E36F9CF6EB /* FLAnimatedImageView.h in Headers */ = {isa = PBXBuildFile; fileRef = BA5D458ED36671F4746AEABDAED29C17 /* FLAnimatedImageView.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 7C7C91B0D616ADD86E208713A22419B9 /* NSBundle+NYTPhotoViewer.m in Sources */ = {isa = PBXBuildFile; fileRef = 8E8CBA03245CE3B5C11D88D402467BE7 /* NSBundle+NYTPhotoViewer.m */; }; - 7EE0FD33AB30006545874DEF02F9243E /* OCMNotificationPoster.m in Sources */ = {isa = PBXBuildFile; fileRef = 45335C03F34A383F34E517DADC72434F /* OCMNotificationPoster.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 7FFCEEC0036EC9E7A5D3BAD719B28D4A /* NSNotificationCenter+OCMAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 5691FC56E16BB852D31B5C2AF7367AE3 /* NSNotificationCenter+OCMAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 830B3A29668D59C62571A4CE4D3BAFCA /* OCMIndirectReturnValueProvider.m in Sources */ = {isa = PBXBuildFile; fileRef = D6506560499D9CF41A49EE06AD59D906 /* OCMIndirectReturnValueProvider.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 87AA263FA688A8E92C2B8ADEE72C98C6 /* OCMObserverRecorder.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C968E4417F50EBE13D935B280709ED2 /* OCMObserverRecorder.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8A1370FF0DD475F945954535A988ED4B /* OCMockObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 4D1FBC04E5306A91390D2C59B29A0A45 /* OCMockObject.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 8AD3CBF5EFD13418B67B7DBD7673CE9C /* NYTPhotosViewControllerDataSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 841176779F5748D4E85904F14BBAAF32 /* NYTPhotosViewControllerDataSource.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 8AEB5737F1DA5540B3BDB2DDCE2D7401 /* NYTPhotoTransitionAnimator.m in Sources */ = {isa = PBXBuildFile; fileRef = 2E3CA746E4CF52E8A7372029183A6E69 /* NYTPhotoTransitionAnimator.m */; }; - 8AEFADC427762A8A3071EC11B058E560 /* NYTPhotoViewerCloseButtonXLandscape@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3EF36C267040C056833C738BF6A83715 /* NYTPhotoViewerCloseButtonXLandscape@2x.png */; }; - 8D40AF80800C0D4A691F4A0656E53D98 /* OCMRealObjectForwarder.h in Headers */ = {isa = PBXBuildFile; fileRef = 4E26B1A1CA12E1024027283E572C92A6 /* OCMRealObjectForwarder.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 94216C983E91F2BA503920465DE1972A /* OCClassMockObject.h in Headers */ = {isa = PBXBuildFile; fileRef = FDC2EB857342A0F7825BAA82E87A03E3 /* OCClassMockObject.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 950C209E1D004EBDCD43D6C2136B5AA2 /* OCMStubRecorder.h in Headers */ = {isa = PBXBuildFile; fileRef = BC0C50397B5BE45862226C08BEE972A9 /* OCMStubRecorder.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 96AA6CBA703C2690A707AF3E9099032C /* NSBundle+NYTPhotoViewer.h in Headers */ = {isa = PBXBuildFile; fileRef = EE9C5F374B788B38F7577CBACD6374D1 /* NSBundle+NYTPhotoViewer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 97E7A55C33E1C7717A8BE961F6547D13 /* NYTPhotoTransitionController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E0C66159C5486540FCCAE67BEA34892 /* NYTPhotoTransitionController.m */; }; - 9A4FD7CA85278E4080D9567479369546 /* NYTPhotoViewerCloseButtonX@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 84BCB2FD814B25FC5DF03FD650EAD2A2 /* NYTPhotoViewerCloseButtonX@2x.png */; }; - 9C195CB2280DCD3183057794B4504B22 /* OCMRecorder.h in Headers */ = {isa = PBXBuildFile; fileRef = 8417B4A576326FD5B69E414C3E0BCAC8 /* OCMRecorder.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9ED6B48F0C000C83C89249483D3398A6 /* OCMFunctions.m in Sources */ = {isa = PBXBuildFile; fileRef = ADAE12538446AEDF3DE9593F2108322B /* OCMFunctions.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - A425B4C6EAA79B2C9BB4F374180DC194 /* NSValue+OCMAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 0C5CDA59660820CDB2B09268A49054F1 /* NSValue+OCMAdditions.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A516CB608A827C4FEA550CB372854AF7 /* OCMReturnValueProvider.m in Sources */ = {isa = PBXBuildFile; fileRef = 648B832E9713AA7AF2DD04B3A4860884 /* OCMReturnValueProvider.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - AD672A92EF1A71CB35F77D51924A63D7 /* OCMInvocationStub.h in Headers */ = {isa = PBXBuildFile; fileRef = 39795D3BE594F7B39D0AED9BDFF57905 /* OCMInvocationStub.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B0E05562A115CEC19523EC0337D4391A /* NYTPhotoViewerCloseButtonX.png in Resources */ = {isa = PBXBuildFile; fileRef = C3E9A885D5E9DA77276661C525199CD9 /* NYTPhotoViewerCloseButtonX.png */; }; - B184CBA7492201A7F61468F027FFBE7F /* NYTScalingImageView.h in Headers */ = {isa = PBXBuildFile; fileRef = 2DC9C91E71106B35175DE328DCDCA7AA /* NYTScalingImageView.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B28B82281F2A75B1A27E9B1B289B179D /* OCClassMockObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 3595EAD9437F9960F3C3E6C490EB3ABA /* OCClassMockObject.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - B36995CF7E36CC57C8C118EC5EC049A6 /* OCMock-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 2ED407E08183A0D1212BCB2EEC11A4E5 /* OCMock-dummy.m */; }; - B3AA789E74DBAB167DAD0FDCA19690C7 /* FLAnimatedImageView.m in Sources */ = {isa = PBXBuildFile; fileRef = B752F47FD8479CA6FDE16B864DFE3BD6 /* FLAnimatedImageView.m */; }; - B466ACC84DEB3B813EDBFFEC95760AB3 /* NYTPhotosViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 2D275C43CB9D76E11C8D859651EE5D49 /* NYTPhotosViewController.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B4D6973B3F74EB04E719BFCFCBF04C0B /* OCMInvocationStub.m in Sources */ = {isa = PBXBuildFile; fileRef = 4507027DC7568BD104F0729CEC2FE4F3 /* OCMInvocationStub.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - BC7143B82E45DDE808B1D8E8F6970E41 /* OCMInvocationExpectation.h in Headers */ = {isa = PBXBuildFile; fileRef = F95176C5920DC50D4337C850A2F982E4 /* OCMInvocationExpectation.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C01520F21314A4A11E0BD5C9BE190A1A /* OCMExpectationRecorder.h in Headers */ = {isa = PBXBuildFile; fileRef = DC347E4D58FA4006D0DB039E114C4197 /* OCMExpectationRecorder.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C21FA017A42E8B1CA9CC3F9C1F88318F /* NYTPhotoTransitionAnimator.h in Headers */ = {isa = PBXBuildFile; fileRef = 2491FAB95107BC50DD0CF5CC6146FD13 /* NYTPhotoTransitionAnimator.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C2596CDB92D59D7FC5505505B68FD55C /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDC947C2C4A736687249A5D97209C29B /* CoreGraphics.framework */; }; - C4235F3704F471BAF74CB4482A99D340 /* OCMReturnValueProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = 0036B91691E79FAAD7625F40D5F57D56 /* OCMReturnValueProvider.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C508640C7607A5BE183916AC4202A026 /* OCMInvocationMatcher.m in Sources */ = {isa = PBXBuildFile; fileRef = 78D74C4D5A45C6EA54A64F0865D7A416 /* OCMInvocationMatcher.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - C55C0B0594D26DE09DEC7F161910A211 /* OCObserverMockObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 5400FB5B71623EB9F3634D026D88B09B /* OCObserverMockObject.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - C624AEA7F64F268ECC7A636D0B118185 /* NYTPhotoCaptionView.h in Headers */ = {isa = PBXBuildFile; fileRef = 1781D669D30BF31E3D30458C11401EC4 /* NYTPhotoCaptionView.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C6DEDAD5B01946A2644F428020F881B6 /* OCObserverMockObject.h in Headers */ = {isa = PBXBuildFile; fileRef = A118FA0DF9EDA4523D44E32EBD8B46DE /* OCObserverMockObject.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C796F27878B148315E4EB60535EEA4BE /* OCMLocation.h in Headers */ = {isa = PBXBuildFile; fileRef = A4AEE7E7536BA5005C87B09A47B8D2BA /* OCMLocation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C9D4A031824B3CFEEEBDD7F8B57CC161 /* Pods-NYTPhotoViewer-Swift-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = F702EA88D0926BE8D736994211CD85F8 /* Pods-NYTPhotoViewer-Swift-dummy.m */; }; - CC40C17D2E01DDDF48A7A8D50B8E92F8 /* OCMMacroState.h in Headers */ = {isa = PBXBuildFile; fileRef = EA8E1E7CEE735DA4896915A276D1BC40 /* OCMMacroState.h */; settings = {ATTRIBUTES = (Public, ); }; }; - CC4F14C27B167A64F09A356652410909 /* OCMInvocationExpectation.m in Sources */ = {isa = PBXBuildFile; fileRef = 9C0D80914E2D996F2D7260CA8AFD0002 /* OCMInvocationExpectation.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - CC5C84B30927F4CE48D7EC04BF652005 /* OCMockObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 1CC85561A09A114A310B0AF1522218FC /* OCMockObject.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - CE1D11A21BB0D710B640F31B18935BF3 /* NSObject+OCMAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = E918988881A1DC5DD9C73611C699B5EF /* NSObject+OCMAdditions.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D0487B97CDAE11C119336FD22A1B09DE /* NYTPhotoViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 04B574365EAB5934994AE69CFBDAD936 /* NYTPhotoViewController.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D21CCD2E0296D920702D681D6B74F877 /* NYTPhotoViewerCloseButtonXLandscape.png in Resources */ = {isa = PBXBuildFile; fileRef = 6128F498EC184A5F67CC3EE7FF8BC11B /* NYTPhotoViewerCloseButtonXLandscape.png */; }; - D470FD7FF206B100A7B79714E7FA0F4A /* OCMNotificationPoster.h in Headers */ = {isa = PBXBuildFile; fileRef = CFB26DA0397EDEC97F9223686DCAA7D3 /* OCMNotificationPoster.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D78D41AA2CEB6ED571503108CEC3DA15 /* OCMArg.h in Headers */ = {isa = PBXBuildFile; fileRef = E6E09C6F8F457DEBE5871EECECA22A0A /* OCMArg.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D9EA9C8052853B8962318FFD5A5551B6 /* OCMExceptionReturnValueProvider.m in Sources */ = {isa = PBXBuildFile; fileRef = 08B71F32EE94E5A8391738FB0EB578EC /* OCMExceptionReturnValueProvider.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - DADACF239B30C047FA9304E5FDDA8B2E /* NSObject+OCMAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 96B119F83993011B3B3A99E169B1D92C /* NSObject+OCMAdditions.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - DE57384C891A85506CB91EA186D2D2B4 /* OCMArgAction.h in Headers */ = {isa = PBXBuildFile; fileRef = 31077C653BEFF474A8C48CB9E2C4F3CE /* OCMArgAction.h */; settings = {ATTRIBUTES = (Project, ); }; }; - DF0A3CB81B12C054F9C8258F680F7C9D /* OCPartialMockObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 02F2DC63DEA3B6AAE0C42C4CF53DEAC5 /* OCPartialMockObject.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - E00ABE7FC44CB9D1B511D96D47C16AD5 /* NSInvocation+OCMAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 93D8259D40CEC85A11AF991C76F56038 /* NSInvocation+OCMAdditions.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - E2D2C2DEBBB651077ABC3710A423594F /* NSValue+OCMAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = A4BEB6AAF8E89B3D88516B5143A282CF /* NSValue+OCMAdditions.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - E45D617A6259C90DC54D6F22571998E8 /* OCMPassByRefSetter.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AC5F56E5B643D51DD4548F881C2934D /* OCMPassByRefSetter.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E7B12EB9B2A6443B0FB6541B46DB1DB9 /* NYTPhotoViewer-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 57055F34F29B7610639451C480540F6C /* NYTPhotoViewer-dummy.m */; }; - E8CDCEDCDC0ADE51EBAFCC09F44EFF12 /* OCMBlockArgCaller.m in Sources */ = {isa = PBXBuildFile; fileRef = 92C4B5E15B42999732406D11FF27399E /* OCMBlockArgCaller.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - E99CE64289F5FDD09B7E1188379AED41 /* FLAnimatedImage.m in Sources */ = {isa = PBXBuildFile; fileRef = 0302D606627AFF213D39DE2877B4638D /* FLAnimatedImage.m */; }; - EA2A970253EA9B298F0BB63864AA18D1 /* OCProtocolMockObject.m in Sources */ = {isa = PBXBuildFile; fileRef = D2F9528FC984AA1AC37E0C37A193A06E /* OCProtocolMockObject.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - ED61A6F91BC025BD57D6BD2A504E1DA4 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CEBC85ECBD828DF92AC9EEB8B18DA6F1 /* Foundation.framework */; }; - EEBEC3C68DD8C679511876B4610D582A /* OCMBoxedReturnValueProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = A9A8A71E9B0A1271A4EDDE402221428C /* OCMBoxedReturnValueProvider.h */; settings = {ATTRIBUTES = (Project, ); }; }; - F0E9BE1709D8B3501A9E791E8D36FBED /* NSNotificationCenter+OCMAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C0D5801E0E8C2C07D2E34E8AED0B8D3 /* NSNotificationCenter+OCMAdditions.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - F5C01AC5B350E12C063267A3FE002E5C /* ImageIO.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 89FBE0107A6C5519C16F855DD8133A06 /* ImageIO.framework */; }; - FB294C8C8DCC4EACB074C58C027C9723 /* OCMIndirectReturnValueProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = DFEE15C59F74D39729145BD29145FE5E /* OCMIndirectReturnValueProvider.h */; settings = {ATTRIBUTES = (Project, ); }; }; - FB423EE72C2A6D0ED5DEFBEE9BE80A98 /* FLAnimatedImage.h in Headers */ = {isa = PBXBuildFile; fileRef = 1777FBF7AB53EABE912D85E7E0556670 /* FLAnimatedImage.h */; settings = {ATTRIBUTES = (Public, ); }; }; - FBB048FC0930D06D3946FF941CFDF555 /* NYTPhotoCaptionViewLayoutWidthHinting.h in Headers */ = {isa = PBXBuildFile; fileRef = 2891A0D8A07EB10D5EA116698072DFAA /* NYTPhotoCaptionViewLayoutWidthHinting.h */; settings = {ATTRIBUTES = (Public, ); }; }; - FDFD77CF38AE5FDD235A02217B763809 /* OCMBlockCaller.h in Headers */ = {isa = PBXBuildFile; fileRef = 1D21982DA2CC6317653C58D0C155AD1F /* OCMBlockCaller.h */; settings = {ATTRIBUTES = (Project, ); }; }; - FF89D64A56347C235B8A081539AF9DD2 /* NYTPhotoDismissalInteractionController.h in Headers */ = {isa = PBXBuildFile; fileRef = 8E251763ABC4628F9FD370376C62339C /* NYTPhotoDismissalInteractionController.h */; settings = {ATTRIBUTES = (Public, ); }; }; -/* End PBXBuildFile section */ - -/* Begin PBXContainerItemProxy section */ - 2FAE342CFFFA5C8159FEA9D856247783 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; - proxyType = 1; - remoteGlobalIDString = 1A79BA86DB198181905CBBFC1F1E6701; - remoteInfo = FLAnimatedImage; - }; - 31C9079AC5B3D2DFF1844A4A10BD7049 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; - proxyType = 1; - remoteGlobalIDString = 1A79BA86DB198181905CBBFC1F1E6701; - remoteInfo = FLAnimatedImage; - }; - 360931A573BBF9BF7C08B40113A0FBBF /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; - proxyType = 1; - remoteGlobalIDString = 0654143889A23F99F0114BE527E8E3B0; - remoteInfo = NYTPhotoViewer; - }; - 51BA6C87CEFC9F55F8E5003AF5DBA923 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; - proxyType = 1; - remoteGlobalIDString = 0654143889A23F99F0114BE527E8E3B0; - remoteInfo = NYTPhotoViewer; - }; - 536F3ACDA6C6E493B53CD6E1DD1FFF6B /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; - proxyType = 1; - remoteGlobalIDString = 4A2CAA839F2722C796C6F1DFDC806B92; - remoteInfo = OCMock; - }; - 6172F0104FB64E5208B145ADFB627E62 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; - proxyType = 1; - remoteGlobalIDString = 0654143889A23F99F0114BE527E8E3B0; - remoteInfo = NYTPhotoViewer; - }; - 7EBE4843A061104AB6084A9768B3499B /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; - proxyType = 1; - remoteGlobalIDString = 0654143889A23F99F0114BE527E8E3B0; - remoteInfo = NYTPhotoViewer; - }; - 9FE7D691C8923353B319580F5981D029 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; - proxyType = 1; - remoteGlobalIDString = 1A79BA86DB198181905CBBFC1F1E6701; - remoteInfo = FLAnimatedImage; - }; - AE3809356F577E09124E08D48D549B45 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; - proxyType = 1; - remoteGlobalIDString = 1A79BA86DB198181905CBBFC1F1E6701; - remoteInfo = FLAnimatedImage; - }; - AF47FE2DB728285ED7B873C40660842C /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; - proxyType = 1; - remoteGlobalIDString = 4A2CAA839F2722C796C6F1DFDC806B92; - remoteInfo = OCMock; - }; - B6A43A6161806CE532F207A79B63D406 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; - proxyType = 1; - remoteGlobalIDString = 693C39C58B0B71A71225DDAE17874B3E; - remoteInfo = "NYTPhotoViewer-NYTPhotoViewer"; - }; - CE0EF9B38D1CB9097F8EE2059CD8B3C7 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; - proxyType = 1; - remoteGlobalIDString = 1A79BA86DB198181905CBBFC1F1E6701; - remoteInfo = FLAnimatedImage; - }; -/* End PBXContainerItemProxy section */ - -/* Begin PBXFileReference section */ - 0036B91691E79FAAD7625F40D5F57D56 /* OCMReturnValueProvider.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = OCMReturnValueProvider.h; path = Source/OCMock/OCMReturnValueProvider.h; sourceTree = ""; }; - 015910EC2578EF7210EA0A4954B52AD9 /* Pods-NYTPhotoViewer.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-NYTPhotoViewer.debug.xcconfig"; sourceTree = ""; }; - 02F2DC63DEA3B6AAE0C42C4CF53DEAC5 /* OCPartialMockObject.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = OCPartialMockObject.m; path = Source/OCMock/OCPartialMockObject.m; sourceTree = ""; }; - 0302D606627AFF213D39DE2877B4638D /* FLAnimatedImage.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FLAnimatedImage.m; path = FLAnimatedImage/FLAnimatedImage.m; sourceTree = ""; }; - 04B574365EAB5934994AE69CFBDAD936 /* NYTPhotoViewController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = NYTPhotoViewController.h; sourceTree = ""; }; - 064E1C219125C6C9038C857CA3BD6583 /* NYTPhotoViewer.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = NYTPhotoViewer.xcconfig; sourceTree = ""; }; - 06692780E124290FDB6556C283DCEEAD /* FLAnimatedImage.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FLAnimatedImage.xcconfig; sourceTree = ""; }; - 08B71F32EE94E5A8391738FB0EB578EC /* OCMExceptionReturnValueProvider.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = OCMExceptionReturnValueProvider.m; path = Source/OCMock/OCMExceptionReturnValueProvider.m; sourceTree = ""; }; - 0B9C2EF14DDBCDD41F6D3A9D98ABAE82 /* OCMFunctions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = OCMFunctions.h; path = Source/OCMock/OCMFunctions.h; sourceTree = ""; }; - 0C5CDA59660820CDB2B09268A49054F1 /* NSValue+OCMAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSValue+OCMAdditions.h"; path = "Source/OCMock/NSValue+OCMAdditions.h"; sourceTree = ""; }; - 0E09EDD8693DA4EAB1AA460341C04088 /* NYTPhotosDataSource.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = NYTPhotosDataSource.h; sourceTree = ""; }; - 0EB8C9AB20B04C92ADD97EF8A5693AC4 /* NYTScalingImageView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = NYTScalingImageView.m; sourceTree = ""; }; - 11A9FDBFCDA87A560F7172E37E8B2FA4 /* Pods-NYTPhotoViewer-Swift.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-NYTPhotoViewer-Swift.release.xcconfig"; sourceTree = ""; }; - 14C0EE5854C75187952451BDF0000DBD /* libPods-NYTPhotoViewer-Swift.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-NYTPhotoViewer-Swift.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - 15C391E1A916398055220E74FB12455B /* OCMArg.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = OCMArg.m; path = Source/OCMock/OCMArg.m; sourceTree = ""; }; - 1777FBF7AB53EABE912D85E7E0556670 /* FLAnimatedImage.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FLAnimatedImage.h; path = FLAnimatedImage/FLAnimatedImage.h; sourceTree = ""; }; - 1781D669D30BF31E3D30458C11401EC4 /* NYTPhotoCaptionView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = NYTPhotoCaptionView.h; sourceTree = ""; }; - 1AC5F56E5B643D51DD4548F881C2934D /* OCMPassByRefSetter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = OCMPassByRefSetter.h; path = Source/OCMock/OCMPassByRefSetter.h; sourceTree = ""; }; - 1CC85561A09A114A310B0AF1522218FC /* OCMockObject.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = OCMockObject.m; path = Source/OCMock/OCMockObject.m; sourceTree = ""; }; - 1D21982DA2CC6317653C58D0C155AD1F /* OCMBlockCaller.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = OCMBlockCaller.h; path = Source/OCMock/OCMBlockCaller.h; sourceTree = ""; }; - 1F2D53EE162B13CFB4CDFF6EE503B571 /* Pods-NYTPhotoViewer-Swift-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-NYTPhotoViewer-Swift-resources.sh"; sourceTree = ""; }; - 22CC099EDADB76C55367796DBD37AE8D /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.0.sdk/System/Library/Frameworks/QuartzCore.framework; sourceTree = DEVELOPER_DIR; }; - 2412F8FD2DB0F9BD2B67B6D625B37720 /* Pods-NYTPhotoViewer-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-NYTPhotoViewer-resources.sh"; sourceTree = ""; }; - 2491FAB95107BC50DD0CF5CC6146FD13 /* NYTPhotoTransitionAnimator.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = NYTPhotoTransitionAnimator.h; sourceTree = ""; }; - 24A1662B019F68EB6B2FF25D82FA7E57 /* Pods-NYTPhotoViewer-Swift.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-NYTPhotoViewer-Swift.debug.xcconfig"; sourceTree = ""; }; - 279BBD3C9C572DC7ED8957AA397482B3 /* OCMExceptionReturnValueProvider.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = OCMExceptionReturnValueProvider.h; path = Source/OCMock/OCMExceptionReturnValueProvider.h; sourceTree = ""; }; - 2891A0D8A07EB10D5EA116698072DFAA /* NYTPhotoCaptionViewLayoutWidthHinting.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = NYTPhotoCaptionViewLayoutWidthHinting.h; sourceTree = ""; }; - 2D275C43CB9D76E11C8D859651EE5D49 /* NYTPhotosViewController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = NYTPhotosViewController.h; sourceTree = ""; }; - 2DC9C91E71106B35175DE328DCDCA7AA /* NYTScalingImageView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = NYTScalingImageView.h; sourceTree = ""; }; - 2E3CA746E4CF52E8A7372029183A6E69 /* NYTPhotoTransitionAnimator.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = NYTPhotoTransitionAnimator.m; sourceTree = ""; }; - 2ED407E08183A0D1212BCB2EEC11A4E5 /* OCMock-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "OCMock-dummy.m"; sourceTree = ""; }; - 31077C653BEFF474A8C48CB9E2C4F3CE /* OCMArgAction.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = OCMArgAction.h; path = Source/OCMock/OCMArgAction.h; sourceTree = ""; }; - 3312F3BB9EB529E361D7557F11720647 /* libNYTPhotoViewer.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libNYTPhotoViewer.a; sourceTree = BUILT_PRODUCTS_DIR; }; - 3529BF22431013E7BB6E418B1F38256E /* libPods-NYTPhotoViewer.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-NYTPhotoViewer.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - 3595EAD9437F9960F3C3E6C490EB3ABA /* OCClassMockObject.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = OCClassMockObject.m; path = Source/OCMock/OCClassMockObject.m; sourceTree = ""; }; - 35B1FDF843FF7681C271B1B8B6B2C88D /* NYTPhotosOverlayView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = NYTPhotosOverlayView.m; sourceTree = ""; }; - 39298D10B1AF6F64D12AEF39105C78C5 /* OCMBlockArgCaller.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = OCMBlockArgCaller.h; path = Source/OCMock/OCMBlockArgCaller.h; sourceTree = ""; }; - 39795D3BE594F7B39D0AED9BDFF57905 /* OCMInvocationStub.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = OCMInvocationStub.h; path = Source/OCMock/OCMInvocationStub.h; sourceTree = ""; }; - 3EF36C267040C056833C738BF6A83715 /* NYTPhotoViewerCloseButtonXLandscape@2x.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; path = "NYTPhotoViewerCloseButtonXLandscape@2x.png"; sourceTree = ""; }; - 3F3D665965406E236F4F31B2B196DAC5 /* Pods-Tests-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-Tests-dummy.m"; sourceTree = ""; }; - 4064C262053F71DE29600E5D90AF88A4 /* Pods-Tests-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-Tests-acknowledgements.plist"; sourceTree = ""; }; - 422E1E1847C5FC6857026E551B81314E /* Pods-NYTPhotoViewer-SwiftTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-NYTPhotoViewer-SwiftTests.debug.xcconfig"; sourceTree = ""; }; - 42E3ACBE85CB1F629512FB5F81764DA2 /* NYTPhotoViewer-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "NYTPhotoViewer-prefix.pch"; sourceTree = ""; }; - 4507027DC7568BD104F0729CEC2FE4F3 /* OCMInvocationStub.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = OCMInvocationStub.m; path = Source/OCMock/OCMInvocationStub.m; sourceTree = ""; }; - 45335C03F34A383F34E517DADC72434F /* OCMNotificationPoster.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = OCMNotificationPoster.m; path = Source/OCMock/OCMNotificationPoster.m; sourceTree = ""; }; - 4ABCF2A17701A801D94CD9AA17E43D0F /* Pods-NYTPhotoViewer-Swift-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-NYTPhotoViewer-Swift-acknowledgements.plist"; sourceTree = ""; }; - 4C0D5801E0E8C2C07D2E34E8AED0B8D3 /* NSNotificationCenter+OCMAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSNotificationCenter+OCMAdditions.m"; path = "Source/OCMock/NSNotificationCenter+OCMAdditions.m"; sourceTree = ""; }; - 4D1FBC04E5306A91390D2C59B29A0A45 /* OCMockObject.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = OCMockObject.h; path = Source/OCMock/OCMockObject.h; sourceTree = ""; }; - 4E26B1A1CA12E1024027283E572C92A6 /* OCMRealObjectForwarder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = OCMRealObjectForwarder.h; path = Source/OCMock/OCMRealObjectForwarder.h; sourceTree = ""; }; - 52A46719EDEA6919CB7CE89CEA7D170B /* NYTPhotoCaptionView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = NYTPhotoCaptionView.m; sourceTree = ""; }; - 53D2EBBA2495B7A137B80E8BB7C00AA2 /* OCMBoxedReturnValueProvider.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = OCMBoxedReturnValueProvider.m; path = Source/OCMock/OCMBoxedReturnValueProvider.m; sourceTree = ""; }; - 5400FB5B71623EB9F3634D026D88B09B /* OCObserverMockObject.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = OCObserverMockObject.m; path = Source/OCMock/OCObserverMockObject.m; sourceTree = ""; }; - 5691FC56E16BB852D31B5C2AF7367AE3 /* NSNotificationCenter+OCMAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSNotificationCenter+OCMAdditions.h"; path = "Source/OCMock/NSNotificationCenter+OCMAdditions.h"; sourceTree = ""; }; - 57055F34F29B7610639451C480540F6C /* NYTPhotoViewer-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "NYTPhotoViewer-dummy.m"; sourceTree = ""; }; - 5C9A797A2497538C323AFD99D88A2729 /* OCMBlockCaller.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = OCMBlockCaller.m; path = Source/OCMock/OCMBlockCaller.m; sourceTree = ""; }; - 5D6C86847B42822970F8110945431AB6 /* OCMInvocationMatcher.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = OCMInvocationMatcher.h; path = Source/OCMock/OCMInvocationMatcher.h; sourceTree = ""; }; - 60DDAC8D2C58974210DA6772C11410BA /* Pods-NYTPhotoViewer-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-NYTPhotoViewer-acknowledgements.plist"; sourceTree = ""; }; - 6128F498EC184A5F67CC3EE7FF8BC11B /* NYTPhotoViewerCloseButtonXLandscape.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; path = NYTPhotoViewerCloseButtonXLandscape.png; sourceTree = ""; }; - 648B832E9713AA7AF2DD04B3A4860884 /* OCMReturnValueProvider.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = OCMReturnValueProvider.m; path = Source/OCMock/OCMReturnValueProvider.m; sourceTree = ""; }; - 64B6E627F3949DD7F4127D2C687AA09D /* Pods-NYTPhotoViewer-Swift-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-NYTPhotoViewer-Swift-frameworks.sh"; sourceTree = ""; }; - 68CB521D81490E919F4C67BF5766A8A0 /* NYTPhotosOverlayView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = NYTPhotosOverlayView.h; sourceTree = ""; }; - 6D19A946EFEB0E767DEAC81E1B4E79D7 /* OCMStubRecorder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = OCMStubRecorder.m; path = Source/OCMock/OCMStubRecorder.m; sourceTree = ""; }; - 6D72CFFCA56C168C0A7FE7F810A4B3C4 /* libPods-Tests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-Tests.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - 6E0C66159C5486540FCCAE67BEA34892 /* NYTPhotoTransitionController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = NYTPhotoTransitionController.m; sourceTree = ""; }; - 6E9688896207877A736E092961E8E5CA /* OCMConstraint.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = OCMConstraint.m; path = Source/OCMock/OCMConstraint.m; sourceTree = ""; }; - 716AB915F484AA18D1981D68DCB80C20 /* libFLAnimatedImage.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libFLAnimatedImage.a; sourceTree = BUILT_PRODUCTS_DIR; }; - 72C05092D1DCF7F77B1007CC48394741 /* OCMLocation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = OCMLocation.m; path = Source/OCMock/OCMLocation.m; sourceTree = ""; }; - 78D74C4D5A45C6EA54A64F0865D7A416 /* OCMInvocationMatcher.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = OCMInvocationMatcher.m; path = Source/OCMock/OCMInvocationMatcher.m; sourceTree = ""; }; - 7B8337F919BD3F92A18BC349D5F01A8D /* OCMock.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = OCMock.xcconfig; sourceTree = ""; }; - 7BFA570C0B1F268736D9A57B61FC5AC0 /* NYTPhotosViewController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = NYTPhotosViewController.m; sourceTree = ""; }; - 7C968E4417F50EBE13D935B280709ED2 /* OCMObserverRecorder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = OCMObserverRecorder.h; path = Source/OCMock/OCMObserverRecorder.h; sourceTree = ""; }; - 7F47FC42F86323FC5127F7B9CA01D51A /* Pods-NYTPhotoViewer-SwiftTests-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-NYTPhotoViewer-SwiftTests-acknowledgements.markdown"; sourceTree = ""; }; - 814AEB5E1354012135422C0913AE8797 /* NSInvocation+OCMAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSInvocation+OCMAdditions.h"; path = "Source/OCMock/NSInvocation+OCMAdditions.h"; sourceTree = ""; }; - 836BE698CCA819505512E939D585B9DC /* Pods-Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-Tests.release.xcconfig"; sourceTree = ""; }; - 840B1E0F0754CB1D57203540C05B3057 /* Pods-NYTPhotoViewer-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-NYTPhotoViewer-frameworks.sh"; sourceTree = ""; }; - 841176779F5748D4E85904F14BBAAF32 /* NYTPhotosViewControllerDataSource.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = NYTPhotosViewControllerDataSource.h; sourceTree = ""; }; - 8417B4A576326FD5B69E414C3E0BCAC8 /* OCMRecorder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = OCMRecorder.h; path = Source/OCMock/OCMRecorder.h; sourceTree = ""; }; - 84BCB2FD814B25FC5DF03FD650EAD2A2 /* NYTPhotoViewerCloseButtonX@2x.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; path = "NYTPhotoViewerCloseButtonX@2x.png"; sourceTree = ""; }; - 89FBE0107A6C5519C16F855DD8133A06 /* ImageIO.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ImageIO.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.0.sdk/System/Library/Frameworks/ImageIO.framework; sourceTree = DEVELOPER_DIR; }; - 8B368F633457B0DB0830B17B921F8C1C /* OCMock.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = OCMock.h; path = Source/OCMock/OCMock.h; sourceTree = ""; }; - 8BC17DD2A105099A033DC2939727EEA1 /* Pods-NYTPhotoViewer-SwiftTests-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-NYTPhotoViewer-SwiftTests-resources.sh"; sourceTree = ""; }; - 8D998033226514D2EC165F848A5C8C25 /* NYTPhotoTransitionController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = NYTPhotoTransitionController.h; sourceTree = ""; }; - 8E251763ABC4628F9FD370376C62339C /* NYTPhotoDismissalInteractionController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = NYTPhotoDismissalInteractionController.h; sourceTree = ""; }; - 8E8CBA03245CE3B5C11D88D402467BE7 /* NSBundle+NYTPhotoViewer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "NSBundle+NYTPhotoViewer.m"; sourceTree = ""; }; - 9017344DB0E0D91029C98D909F46601D /* OCMExpectationRecorder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = OCMExpectationRecorder.m; path = Source/OCMock/OCMExpectationRecorder.m; sourceTree = ""; }; - 92C4B5E15B42999732406D11FF27399E /* OCMBlockArgCaller.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = OCMBlockArgCaller.m; path = Source/OCMock/OCMBlockArgCaller.m; sourceTree = ""; }; - 93D8259D40CEC85A11AF991C76F56038 /* NSInvocation+OCMAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSInvocation+OCMAdditions.m"; path = "Source/OCMock/NSInvocation+OCMAdditions.m"; sourceTree = ""; }; - 948A3B62EDB951814603C583A1DE14A9 /* Pods-NYTPhotoViewer-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-NYTPhotoViewer-acknowledgements.markdown"; sourceTree = ""; }; - 9632A102BEFC5A696820ABD422C0FEB4 /* OCMFunctionsPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = OCMFunctionsPrivate.h; path = Source/OCMock/OCMFunctionsPrivate.h; sourceTree = ""; }; - 96B119F83993011B3B3A99E169B1D92C /* NSObject+OCMAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSObject+OCMAdditions.m"; path = "Source/OCMock/NSObject+OCMAdditions.m"; sourceTree = ""; }; - 973189E773DE18BAB80FDB24AF02C58A /* OCMArgAction.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = OCMArgAction.m; path = Source/OCMock/OCMArgAction.m; sourceTree = ""; }; - 973AD4BA32CF2D3DBC660277702230C0 /* Pods-Tests-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-Tests-acknowledgements.markdown"; sourceTree = ""; }; - 98899FA2A9FDC7C35C5BDB88F86A11CB /* NYTPhotoViewerCloseButtonX@3x.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; path = "NYTPhotoViewerCloseButtonX@3x.png"; sourceTree = ""; }; - 98F3701FC2ADBCB700525DEC45BF8F18 /* Pods-NYTPhotoViewer-SwiftTests-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-NYTPhotoViewer-SwiftTests-dummy.m"; sourceTree = ""; }; - 9C0D80914E2D996F2D7260CA8AFD0002 /* OCMInvocationExpectation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = OCMInvocationExpectation.m; path = Source/OCMock/OCMInvocationExpectation.m; sourceTree = ""; }; - 9D1F8DFB3B198B389EEB6275D77F16BE /* OCMVerifier.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = OCMVerifier.m; path = Source/OCMock/OCMVerifier.m; sourceTree = ""; }; - 9DAC8D51213FAA234214456EDBC9156A /* Pods-Tests-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-Tests-resources.sh"; sourceTree = ""; }; - A118FA0DF9EDA4523D44E32EBD8B46DE /* OCObserverMockObject.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = OCObserverMockObject.h; path = Source/OCMock/OCObserverMockObject.h; sourceTree = ""; }; - A4AEE7E7536BA5005C87B09A47B8D2BA /* OCMLocation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = OCMLocation.h; path = Source/OCMock/OCMLocation.h; sourceTree = ""; }; - A4BEB6AAF8E89B3D88516B5143A282CF /* NSValue+OCMAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSValue+OCMAdditions.m"; path = "Source/OCMock/NSValue+OCMAdditions.m"; sourceTree = ""; }; - A4BECE0B52B507FC5D0F43DF23BA8237 /* libPods-NYTPhotoViewer-SwiftTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-NYTPhotoViewer-SwiftTests.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - A57B0D2B7A37D7FF6C68F57A2100B921 /* NYTPhotoContainer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = NYTPhotoContainer.h; sourceTree = ""; }; - A96A27F7E8595C88C9531E7CF754A42C /* NYTPhotoViewController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = NYTPhotoViewController.m; sourceTree = ""; }; - A9A8A71E9B0A1271A4EDDE402221428C /* OCMBoxedReturnValueProvider.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = OCMBoxedReturnValueProvider.h; path = Source/OCMock/OCMBoxedReturnValueProvider.h; sourceTree = ""; }; - A9D76DC181FFA24CA772C83CC5998F99 /* NSMethodSignature+OCMAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSMethodSignature+OCMAdditions.h"; path = "Source/OCMock/NSMethodSignature+OCMAdditions.h"; sourceTree = ""; }; - ABA9A2401DD6B78C19450E4B5317EAFC /* OCProtocolMockObject.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = OCProtocolMockObject.h; path = Source/OCMock/OCProtocolMockObject.h; sourceTree = ""; }; - ADAE12538446AEDF3DE9593F2108322B /* OCMFunctions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = OCMFunctions.m; path = Source/OCMock/OCMFunctions.m; sourceTree = ""; }; - AE233E1358E9DF0B8481BF8111C483A6 /* Pods-NYTPhotoViewer-SwiftTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-NYTPhotoViewer-SwiftTests.release.xcconfig"; sourceTree = ""; }; - B271D7914F3BBE18B22AB38342AF3803 /* NYTPhotoViewerCloseButtonXLandscape@3x.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; path = "NYTPhotoViewerCloseButtonXLandscape@3x.png"; sourceTree = ""; }; - B304EE4E3C9C59C6AC5562290B8E54A0 /* MobileCoreServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MobileCoreServices.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.0.sdk/System/Library/Frameworks/MobileCoreServices.framework; sourceTree = DEVELOPER_DIR; }; - B3A7959AAF13C4513F0A26907B05BE38 /* OCMConstraint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = OCMConstraint.h; path = Source/OCMock/OCMConstraint.h; sourceTree = ""; }; - B3B003557BF43DD28224CCE9641279E9 /* Pods-NYTPhotoViewer.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-NYTPhotoViewer.release.xcconfig"; sourceTree = ""; }; - B524782070F7E5AAE04AD5FB9C2F7FF1 /* FLAnimatedImage-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "FLAnimatedImage-prefix.pch"; sourceTree = ""; }; - B5BA50A06BFCCE49101A4EA9DB780838 /* OCMMacroState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = OCMMacroState.m; path = Source/OCMock/OCMMacroState.m; sourceTree = ""; }; - B6520FC9FA7ACAF05FFA2A104D7BC74A /* OCMRecorder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = OCMRecorder.m; path = Source/OCMock/OCMRecorder.m; sourceTree = ""; }; - B752F47FD8479CA6FDE16B864DFE3BD6 /* FLAnimatedImageView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FLAnimatedImageView.m; path = FLAnimatedImage/FLAnimatedImageView.m; sourceTree = ""; }; - B79803237D0CE63E235B8BB3964A0726 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.0.sdk/System/Library/Frameworks/UIKit.framework; sourceTree = DEVELOPER_DIR; }; - B93F8B7A137359AEDBB2E532A9149D45 /* Pods-NYTPhotoViewer-SwiftTests-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-NYTPhotoViewer-SwiftTests-acknowledgements.plist"; sourceTree = ""; }; - BA524E8CF14D5471E24EFF88FAE2E7A4 /* Pods-Tests-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-Tests-frameworks.sh"; sourceTree = ""; }; - BA5D458ED36671F4746AEABDAED29C17 /* FLAnimatedImageView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FLAnimatedImageView.h; path = FLAnimatedImage/FLAnimatedImageView.h; sourceTree = ""; }; - BA6428E9F66FD5A23C0A2E06ED26CD2F /* Podfile */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; - BC0C50397B5BE45862226C08BEE972A9 /* OCMStubRecorder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = OCMStubRecorder.h; path = Source/OCMock/OCMStubRecorder.h; sourceTree = ""; }; - BFEFEBEFC9AC34B6DBF92B2945966247 /* OCMRealObjectForwarder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = OCMRealObjectForwarder.m; path = Source/OCMock/OCMRealObjectForwarder.m; sourceTree = ""; }; - C21AE0BF51688EC33F3530295270954C /* NYTPhotosDataSource.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = NYTPhotosDataSource.m; sourceTree = ""; }; - C2E66F0C5763D1D42B63369B433D1180 /* OCPartialMockObject.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = OCPartialMockObject.h; path = Source/OCMock/OCPartialMockObject.h; sourceTree = ""; }; - C3E9A885D5E9DA77276661C525199CD9 /* NYTPhotoViewerCloseButtonX.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; path = NYTPhotoViewerCloseButtonX.png; sourceTree = ""; }; - CEBC85ECBD828DF92AC9EEB8B18DA6F1 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; - CFB26DA0397EDEC97F9223686DCAA7D3 /* OCMNotificationPoster.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = OCMNotificationPoster.h; path = Source/OCMock/OCMNotificationPoster.h; sourceTree = ""; }; - D0A9BF394870352693A8F730E148574B /* NYTPhotoDismissalInteractionController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = NYTPhotoDismissalInteractionController.m; sourceTree = ""; }; - D2F9528FC984AA1AC37E0C37A193A06E /* OCProtocolMockObject.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = OCProtocolMockObject.m; path = Source/OCMock/OCProtocolMockObject.m; sourceTree = ""; }; - D30281F94F4C6A8CADB1829C32CBE143 /* OCMPassByRefSetter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = OCMPassByRefSetter.m; path = Source/OCMock/OCMPassByRefSetter.m; sourceTree = ""; }; - D6506560499D9CF41A49EE06AD59D906 /* OCMIndirectReturnValueProvider.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = OCMIndirectReturnValueProvider.m; path = Source/OCMock/OCMIndirectReturnValueProvider.m; sourceTree = ""; }; - DC347E4D58FA4006D0DB039E114C4197 /* OCMExpectationRecorder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = OCMExpectationRecorder.h; path = Source/OCMock/OCMExpectationRecorder.h; sourceTree = ""; }; - DC68FF1EB094A7C50E5148DD123CC50C /* Pods-NYTPhotoViewer-Swift-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-NYTPhotoViewer-Swift-acknowledgements.markdown"; sourceTree = ""; }; - DCC3DA2F14023E384CDB88FA771B7376 /* Pods-NYTPhotoViewer-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-NYTPhotoViewer-dummy.m"; sourceTree = ""; }; - DD187050710D5E8A4CDB3707A2489C37 /* OCMock-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "OCMock-prefix.pch"; sourceTree = ""; }; - DDA5DD2854CFED7FF011EE6A9A4DCB4D /* OCMObserverRecorder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = OCMObserverRecorder.m; path = Source/OCMock/OCMObserverRecorder.m; sourceTree = ""; }; - DFD7649EA2AC00E2DA8E2B447ABE63A7 /* FLAnimatedImage-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "FLAnimatedImage-dummy.m"; sourceTree = ""; }; - DFEE15C59F74D39729145BD29145FE5E /* OCMIndirectReturnValueProvider.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = OCMIndirectReturnValueProvider.h; path = Source/OCMock/OCMIndirectReturnValueProvider.h; sourceTree = ""; }; - E6E09C6F8F457DEBE5871EECECA22A0A /* OCMArg.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = OCMArg.h; path = Source/OCMock/OCMArg.h; sourceTree = ""; }; - E918988881A1DC5DD9C73611C699B5EF /* NSObject+OCMAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSObject+OCMAdditions.h"; path = "Source/OCMock/NSObject+OCMAdditions.h"; sourceTree = ""; }; - E9218905F90589519D5C9E501403FD5F /* NSMethodSignature+OCMAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSMethodSignature+OCMAdditions.m"; path = "Source/OCMock/NSMethodSignature+OCMAdditions.m"; sourceTree = ""; }; - E93CEF5802DA5A4170AC4E23CDEBE484 /* Pods-NYTPhotoViewer-SwiftTests-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-NYTPhotoViewer-SwiftTests-frameworks.sh"; sourceTree = ""; }; - EA8E1E7CEE735DA4896915A276D1BC40 /* OCMMacroState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = OCMMacroState.h; path = Source/OCMock/OCMMacroState.h; sourceTree = ""; }; - EE9C5F374B788B38F7577CBACD6374D1 /* NSBundle+NYTPhotoViewer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "NSBundle+NYTPhotoViewer.h"; sourceTree = ""; }; - F170EA151A6B5BB3B1185891240455B8 /* OCMVerifier.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = OCMVerifier.h; path = Source/OCMock/OCMVerifier.h; sourceTree = ""; }; - F272208CEBC0979AF3E0744A2F82FDC8 /* NYTPhoto.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = NYTPhoto.h; sourceTree = ""; }; - F6A90C123A977A38E68A560A4D79D195 /* Pods-Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-Tests.debug.xcconfig"; sourceTree = ""; }; - F6FA1A0F53B04EA6E8303A635D478550 /* NYTPhotoViewer.bundle */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = NYTPhotoViewer.bundle; sourceTree = BUILT_PRODUCTS_DIR; }; - F702EA88D0926BE8D736994211CD85F8 /* Pods-NYTPhotoViewer-Swift-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-NYTPhotoViewer-Swift-dummy.m"; sourceTree = ""; }; - F95176C5920DC50D4337C850A2F982E4 /* OCMInvocationExpectation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = OCMInvocationExpectation.h; path = Source/OCMock/OCMInvocationExpectation.h; sourceTree = ""; }; - FD13B7465741BF44542D9908F4282CF2 /* libOCMock.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libOCMock.a; sourceTree = BUILT_PRODUCTS_DIR; }; - FDC2EB857342A0F7825BAA82E87A03E3 /* OCClassMockObject.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = OCClassMockObject.h; path = Source/OCMock/OCClassMockObject.h; sourceTree = ""; }; - FDC947C2C4A736687249A5D97209C29B /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.0.sdk/System/Library/Frameworks/CoreGraphics.framework; sourceTree = DEVELOPER_DIR; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 0C611D7687D01E1FA4FDA3E0C852D0DC /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 3D1407E70C4B261294BB427D9600F75C /* Foundation.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 456E3D8CBA16CC53451C696545611E92 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - C2596CDB92D59D7FC5505505B68FD55C /* CoreGraphics.framework in Frameworks */, - 6DF6EB8F7E7738D44FD3BEC9321646C3 /* Foundation.framework in Frameworks */, - F5C01AC5B350E12C063267A3FE002E5C /* ImageIO.framework in Frameworks */, - 34AE6EE9360CA0D32BAAC84B94E0D29A /* MobileCoreServices.framework in Frameworks */, - 062258F0A1BD8AB11E3E3B1815357988 /* QuartzCore.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 4C2602132A1D207DB135342BF83AB581 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 5E279FED57021E3C50468564F86AA8A0 /* Foundation.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 5C5C2A20898A1E60D66D79AA4C8EA931 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 784F1A8416EA6268640F5E75E1E638E5 /* Foundation.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - A46A250F4E59B08EB59C1BE4213E177D /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 422CC40CE7C1DAE6334D28111C10491C /* Foundation.framework in Frameworks */, - 60225E43F29FDCDDA5C106FEFADEF076 /* UIKit.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - AECF13C7DBD49E813612E6011040B9B7 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ED61A6F91BC025BD57D6BD2A504E1DA4 /* Foundation.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - C9D9FED55A2E360CF5A08FDB99324D38 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 0EFCE23D81397A312044D44B2DEF5E98 /* Foundation.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - E6E6CC792423E601DC7309CE925CCDB4 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 01A3ADA8F016D32E66E67FA792A40BCB /* FLAnimatedImage */ = { - isa = PBXGroup; - children = ( - 1777FBF7AB53EABE912D85E7E0556670 /* FLAnimatedImage.h */, - 0302D606627AFF213D39DE2877B4638D /* FLAnimatedImage.m */, - BA5D458ED36671F4746AEABDAED29C17 /* FLAnimatedImageView.h */, - B752F47FD8479CA6FDE16B864DFE3BD6 /* FLAnimatedImageView.m */, - F8E29B0BB06C0374E576523ACBFBF9DF /* Support Files */, - ); - path = FLAnimatedImage; - sourceTree = ""; - }; - 0494C12ED3792622EF6FABAEAD544E29 /* Assets */ = { - isa = PBXGroup; - children = ( - 547CBCB286DC105489FA87FF3B3E6E6A /* ios */, - ); - path = Assets; - sourceTree = ""; - }; - 04EC7001C37029E20F7FB052016BBAC9 /* Pod */ = { - isa = PBXGroup; - children = ( - 0494C12ED3792622EF6FABAEAD544E29 /* Assets */, - ); - path = Pod; - sourceTree = ""; - }; - 0F75DF6C7C5F002280EC53F48E80B587 /* Frameworks */ = { - isa = PBXGroup; - children = ( - 29BE1818C624D9007E5AFFC9F6FE671A /* iOS */, - ); - name = Frameworks; - sourceTree = ""; - }; - 0FCAFE0FDC5B4823AAF5C70FC8BA1EE6 /* ios */ = { - isa = PBXGroup; - children = ( - 1781D669D30BF31E3D30458C11401EC4 /* NYTPhotoCaptionView.h */, - 52A46719EDEA6919CB7CE89CEA7D170B /* NYTPhotoCaptionView.m */, - 8E251763ABC4628F9FD370376C62339C /* NYTPhotoDismissalInteractionController.h */, - D0A9BF394870352693A8F730E148574B /* NYTPhotoDismissalInteractionController.m */, - 0E09EDD8693DA4EAB1AA460341C04088 /* NYTPhotosDataSource.h */, - C21AE0BF51688EC33F3530295270954C /* NYTPhotosDataSource.m */, - 68CB521D81490E919F4C67BF5766A8A0 /* NYTPhotosOverlayView.h */, - 35B1FDF843FF7681C271B1B8B6B2C88D /* NYTPhotosOverlayView.m */, - 2D275C43CB9D76E11C8D859651EE5D49 /* NYTPhotosViewController.h */, - 7BFA570C0B1F268736D9A57B61FC5AC0 /* NYTPhotosViewController.m */, - 2491FAB95107BC50DD0CF5CC6146FD13 /* NYTPhotoTransitionAnimator.h */, - 2E3CA746E4CF52E8A7372029183A6E69 /* NYTPhotoTransitionAnimator.m */, - 8D998033226514D2EC165F848A5C8C25 /* NYTPhotoTransitionController.h */, - 6E0C66159C5486540FCCAE67BEA34892 /* NYTPhotoTransitionController.m */, - 04B574365EAB5934994AE69CFBDAD936 /* NYTPhotoViewController.h */, - A96A27F7E8595C88C9531E7CF754A42C /* NYTPhotoViewController.m */, - 2DC9C91E71106B35175DE328DCDCA7AA /* NYTScalingImageView.h */, - 0EB8C9AB20B04C92ADD97EF8A5693AC4 /* NYTScalingImageView.m */, - 4903835AD22870ADA1EAF7623C603D7A /* Protocols */, - 98ABCDB7C2B90BD0A83B715DFC4F47CD /* Resource Loading */, - ); - path = ios; - sourceTree = ""; - }; - 29BE1818C624D9007E5AFFC9F6FE671A /* iOS */ = { - isa = PBXGroup; - children = ( - FDC947C2C4A736687249A5D97209C29B /* CoreGraphics.framework */, - CEBC85ECBD828DF92AC9EEB8B18DA6F1 /* Foundation.framework */, - 89FBE0107A6C5519C16F855DD8133A06 /* ImageIO.framework */, - B304EE4E3C9C59C6AC5562290B8E54A0 /* MobileCoreServices.framework */, - 22CC099EDADB76C55367796DBD37AE8D /* QuartzCore.framework */, - B79803237D0CE63E235B8BB3964A0726 /* UIKit.framework */, - ); - name = iOS; - sourceTree = ""; - }; - 35AB59F91552C0C718B083B7648F7186 /* OCMock */ = { - isa = PBXGroup; - children = ( - 814AEB5E1354012135422C0913AE8797 /* NSInvocation+OCMAdditions.h */, - 93D8259D40CEC85A11AF991C76F56038 /* NSInvocation+OCMAdditions.m */, - A9D76DC181FFA24CA772C83CC5998F99 /* NSMethodSignature+OCMAdditions.h */, - E9218905F90589519D5C9E501403FD5F /* NSMethodSignature+OCMAdditions.m */, - 5691FC56E16BB852D31B5C2AF7367AE3 /* NSNotificationCenter+OCMAdditions.h */, - 4C0D5801E0E8C2C07D2E34E8AED0B8D3 /* NSNotificationCenter+OCMAdditions.m */, - E918988881A1DC5DD9C73611C699B5EF /* NSObject+OCMAdditions.h */, - 96B119F83993011B3B3A99E169B1D92C /* NSObject+OCMAdditions.m */, - 0C5CDA59660820CDB2B09268A49054F1 /* NSValue+OCMAdditions.h */, - A4BEB6AAF8E89B3D88516B5143A282CF /* NSValue+OCMAdditions.m */, - FDC2EB857342A0F7825BAA82E87A03E3 /* OCClassMockObject.h */, - 3595EAD9437F9960F3C3E6C490EB3ABA /* OCClassMockObject.m */, - E6E09C6F8F457DEBE5871EECECA22A0A /* OCMArg.h */, - 15C391E1A916398055220E74FB12455B /* OCMArg.m */, - 31077C653BEFF474A8C48CB9E2C4F3CE /* OCMArgAction.h */, - 973189E773DE18BAB80FDB24AF02C58A /* OCMArgAction.m */, - 39298D10B1AF6F64D12AEF39105C78C5 /* OCMBlockArgCaller.h */, - 92C4B5E15B42999732406D11FF27399E /* OCMBlockArgCaller.m */, - 1D21982DA2CC6317653C58D0C155AD1F /* OCMBlockCaller.h */, - 5C9A797A2497538C323AFD99D88A2729 /* OCMBlockCaller.m */, - A9A8A71E9B0A1271A4EDDE402221428C /* OCMBoxedReturnValueProvider.h */, - 53D2EBBA2495B7A137B80E8BB7C00AA2 /* OCMBoxedReturnValueProvider.m */, - B3A7959AAF13C4513F0A26907B05BE38 /* OCMConstraint.h */, - 6E9688896207877A736E092961E8E5CA /* OCMConstraint.m */, - 279BBD3C9C572DC7ED8957AA397482B3 /* OCMExceptionReturnValueProvider.h */, - 08B71F32EE94E5A8391738FB0EB578EC /* OCMExceptionReturnValueProvider.m */, - DC347E4D58FA4006D0DB039E114C4197 /* OCMExpectationRecorder.h */, - 9017344DB0E0D91029C98D909F46601D /* OCMExpectationRecorder.m */, - 0B9C2EF14DDBCDD41F6D3A9D98ABAE82 /* OCMFunctions.h */, - ADAE12538446AEDF3DE9593F2108322B /* OCMFunctions.m */, - 9632A102BEFC5A696820ABD422C0FEB4 /* OCMFunctionsPrivate.h */, - DFEE15C59F74D39729145BD29145FE5E /* OCMIndirectReturnValueProvider.h */, - D6506560499D9CF41A49EE06AD59D906 /* OCMIndirectReturnValueProvider.m */, - F95176C5920DC50D4337C850A2F982E4 /* OCMInvocationExpectation.h */, - 9C0D80914E2D996F2D7260CA8AFD0002 /* OCMInvocationExpectation.m */, - 5D6C86847B42822970F8110945431AB6 /* OCMInvocationMatcher.h */, - 78D74C4D5A45C6EA54A64F0865D7A416 /* OCMInvocationMatcher.m */, - 39795D3BE594F7B39D0AED9BDFF57905 /* OCMInvocationStub.h */, - 4507027DC7568BD104F0729CEC2FE4F3 /* OCMInvocationStub.m */, - A4AEE7E7536BA5005C87B09A47B8D2BA /* OCMLocation.h */, - 72C05092D1DCF7F77B1007CC48394741 /* OCMLocation.m */, - EA8E1E7CEE735DA4896915A276D1BC40 /* OCMMacroState.h */, - B5BA50A06BFCCE49101A4EA9DB780838 /* OCMMacroState.m */, - CFB26DA0397EDEC97F9223686DCAA7D3 /* OCMNotificationPoster.h */, - 45335C03F34A383F34E517DADC72434F /* OCMNotificationPoster.m */, - 7C968E4417F50EBE13D935B280709ED2 /* OCMObserverRecorder.h */, - DDA5DD2854CFED7FF011EE6A9A4DCB4D /* OCMObserverRecorder.m */, - 8B368F633457B0DB0830B17B921F8C1C /* OCMock.h */, - 4D1FBC04E5306A91390D2C59B29A0A45 /* OCMockObject.h */, - 1CC85561A09A114A310B0AF1522218FC /* OCMockObject.m */, - 1AC5F56E5B643D51DD4548F881C2934D /* OCMPassByRefSetter.h */, - D30281F94F4C6A8CADB1829C32CBE143 /* OCMPassByRefSetter.m */, - 4E26B1A1CA12E1024027283E572C92A6 /* OCMRealObjectForwarder.h */, - BFEFEBEFC9AC34B6DBF92B2945966247 /* OCMRealObjectForwarder.m */, - 8417B4A576326FD5B69E414C3E0BCAC8 /* OCMRecorder.h */, - B6520FC9FA7ACAF05FFA2A104D7BC74A /* OCMRecorder.m */, - 0036B91691E79FAAD7625F40D5F57D56 /* OCMReturnValueProvider.h */, - 648B832E9713AA7AF2DD04B3A4860884 /* OCMReturnValueProvider.m */, - BC0C50397B5BE45862226C08BEE972A9 /* OCMStubRecorder.h */, - 6D19A946EFEB0E767DEAC81E1B4E79D7 /* OCMStubRecorder.m */, - F170EA151A6B5BB3B1185891240455B8 /* OCMVerifier.h */, - 9D1F8DFB3B198B389EEB6275D77F16BE /* OCMVerifier.m */, - A118FA0DF9EDA4523D44E32EBD8B46DE /* OCObserverMockObject.h */, - 5400FB5B71623EB9F3634D026D88B09B /* OCObserverMockObject.m */, - C2E66F0C5763D1D42B63369B433D1180 /* OCPartialMockObject.h */, - 02F2DC63DEA3B6AAE0C42C4CF53DEAC5 /* OCPartialMockObject.m */, - ABA9A2401DD6B78C19450E4B5317EAFC /* OCProtocolMockObject.h */, - D2F9528FC984AA1AC37E0C37A193A06E /* OCProtocolMockObject.m */, - 6CF9A80144647C2A3A358736C2292F34 /* Support Files */, - ); - path = OCMock; - sourceTree = ""; - }; - 404E6CCAB9926CE0BE3CBA51F8725996 /* Support Files */ = { - isa = PBXGroup; - children = ( - 064E1C219125C6C9038C857CA3BD6583 /* NYTPhotoViewer.xcconfig */, - 57055F34F29B7610639451C480540F6C /* NYTPhotoViewer-dummy.m */, - 42E3ACBE85CB1F629512FB5F81764DA2 /* NYTPhotoViewer-prefix.pch */, - ); - name = "Support Files"; - path = "Example/Pods/Target Support Files/NYTPhotoViewer"; - sourceTree = ""; - }; - 45656472FF127D4B39796E27DEE2F045 /* Products */ = { - isa = PBXGroup; - children = ( - 716AB915F484AA18D1981D68DCB80C20 /* libFLAnimatedImage.a */, - 3312F3BB9EB529E361D7557F11720647 /* libNYTPhotoViewer.a */, - FD13B7465741BF44542D9908F4282CF2 /* libOCMock.a */, - 3529BF22431013E7BB6E418B1F38256E /* libPods-NYTPhotoViewer.a */, - 14C0EE5854C75187952451BDF0000DBD /* libPods-NYTPhotoViewer-Swift.a */, - A4BECE0B52B507FC5D0F43DF23BA8237 /* libPods-NYTPhotoViewer-SwiftTests.a */, - 6D72CFFCA56C168C0A7FE7F810A4B3C4 /* libPods-Tests.a */, - F6FA1A0F53B04EA6E8303A635D478550 /* NYTPhotoViewer.bundle */, - ); - name = Products; - sourceTree = ""; - }; - 4903835AD22870ADA1EAF7623C603D7A /* Protocols */ = { - isa = PBXGroup; - children = ( - F272208CEBC0979AF3E0744A2F82FDC8 /* NYTPhoto.h */, - 2891A0D8A07EB10D5EA116698072DFAA /* NYTPhotoCaptionViewLayoutWidthHinting.h */, - A57B0D2B7A37D7FF6C68F57A2100B921 /* NYTPhotoContainer.h */, - 841176779F5748D4E85904F14BBAAF32 /* NYTPhotosViewControllerDataSource.h */, - ); - path = Protocols; - sourceTree = ""; - }; - 5394121ADFB9CE278EBA719F97A3CCCF /* Resources */ = { - isa = PBXGroup; - children = ( - 04EC7001C37029E20F7FB052016BBAC9 /* Pod */, - ); - name = Resources; - sourceTree = ""; - }; - 547CBCB286DC105489FA87FF3B3E6E6A /* ios */ = { - isa = PBXGroup; - children = ( - C3E9A885D5E9DA77276661C525199CD9 /* NYTPhotoViewerCloseButtonX.png */, - 84BCB2FD814B25FC5DF03FD650EAD2A2 /* NYTPhotoViewerCloseButtonX@2x.png */, - 98899FA2A9FDC7C35C5BDB88F86A11CB /* NYTPhotoViewerCloseButtonX@3x.png */, - 6128F498EC184A5F67CC3EE7FF8BC11B /* NYTPhotoViewerCloseButtonXLandscape.png */, - 3EF36C267040C056833C738BF6A83715 /* NYTPhotoViewerCloseButtonXLandscape@2x.png */, - B271D7914F3BBE18B22AB38342AF3803 /* NYTPhotoViewerCloseButtonXLandscape@3x.png */, - ); - path = ios; - sourceTree = ""; - }; - 6CCCB7EE7DEB24F5527EEAB4189D4A22 /* Pods */ = { - isa = PBXGroup; - children = ( - 01A3ADA8F016D32E66E67FA792A40BCB /* FLAnimatedImage */, - 35AB59F91552C0C718B083B7648F7186 /* OCMock */, - ); - name = Pods; - sourceTree = ""; - }; - 6CF9A80144647C2A3A358736C2292F34 /* Support Files */ = { - isa = PBXGroup; - children = ( - 7B8337F919BD3F92A18BC349D5F01A8D /* OCMock.xcconfig */, - 2ED407E08183A0D1212BCB2EEC11A4E5 /* OCMock-dummy.m */, - DD187050710D5E8A4CDB3707A2489C37 /* OCMock-prefix.pch */, - ); - name = "Support Files"; - path = "../Target Support Files/OCMock"; - sourceTree = ""; - }; - 6D39DFDEF508E148668BF21818AC4741 /* Targets Support Files */ = { - isa = PBXGroup; - children = ( - 934E935014E98DFB84F3756E2C4F5363 /* Pods-NYTPhotoViewer */, - BCA752A02964F01E7C5F6C2CC7E0A213 /* Pods-NYTPhotoViewer-Swift */, - B9E75F7F9BE6950522EF5E5D0A3991CE /* Pods-NYTPhotoViewer-SwiftTests */, - DCEC323D735382E97481F0FC0759443B /* Pods-Tests */, - ); - name = "Targets Support Files"; - sourceTree = ""; - }; - 7579AAE3966C3DC191583C98AA5CBA0B /* Classes */ = { - isa = PBXGroup; - children = ( - 0FCAFE0FDC5B4823AAF5C70FC8BA1EE6 /* ios */, - ); - path = Classes; - sourceTree = ""; - }; - 7DB346D0F39D3F0E887471402A8071AB = { - isa = PBXGroup; - children = ( - BA6428E9F66FD5A23C0A2E06ED26CD2F /* Podfile */, - 966F15C528FBF2A2F8D475CC5BB21F09 /* Development Pods */, - 0F75DF6C7C5F002280EC53F48E80B587 /* Frameworks */, - 6CCCB7EE7DEB24F5527EEAB4189D4A22 /* Pods */, - 45656472FF127D4B39796E27DEE2F045 /* Products */, - 6D39DFDEF508E148668BF21818AC4741 /* Targets Support Files */, - ); - sourceTree = ""; - }; - 909ED2FCF1CE30E52CCE93AB49904BF4 /* Core */ = { - isa = PBXGroup; - children = ( - 96F3FB7D639C2D2050A41E3EEA799175 /* Pod */, - 5394121ADFB9CE278EBA719F97A3CCCF /* Resources */, - ); - name = Core; - sourceTree = ""; - }; - 934E935014E98DFB84F3756E2C4F5363 /* Pods-NYTPhotoViewer */ = { - isa = PBXGroup; - children = ( - 948A3B62EDB951814603C583A1DE14A9 /* Pods-NYTPhotoViewer-acknowledgements.markdown */, - 60DDAC8D2C58974210DA6772C11410BA /* Pods-NYTPhotoViewer-acknowledgements.plist */, - DCC3DA2F14023E384CDB88FA771B7376 /* Pods-NYTPhotoViewer-dummy.m */, - 840B1E0F0754CB1D57203540C05B3057 /* Pods-NYTPhotoViewer-frameworks.sh */, - 2412F8FD2DB0F9BD2B67B6D625B37720 /* Pods-NYTPhotoViewer-resources.sh */, - 015910EC2578EF7210EA0A4954B52AD9 /* Pods-NYTPhotoViewer.debug.xcconfig */, - B3B003557BF43DD28224CCE9641279E9 /* Pods-NYTPhotoViewer.release.xcconfig */, - ); - name = "Pods-NYTPhotoViewer"; - path = "Target Support Files/Pods-NYTPhotoViewer"; - sourceTree = ""; - }; - 966F15C528FBF2A2F8D475CC5BB21F09 /* Development Pods */ = { - isa = PBXGroup; - children = ( - D25566FE898566522AFA119445F00A65 /* NYTPhotoViewer */, - ); - name = "Development Pods"; - sourceTree = ""; - }; - 96F3FB7D639C2D2050A41E3EEA799175 /* Pod */ = { - isa = PBXGroup; - children = ( - 7579AAE3966C3DC191583C98AA5CBA0B /* Classes */, - ); - path = Pod; - sourceTree = ""; - }; - 98ABCDB7C2B90BD0A83B715DFC4F47CD /* Resource Loading */ = { - isa = PBXGroup; - children = ( - EE9C5F374B788B38F7577CBACD6374D1 /* NSBundle+NYTPhotoViewer.h */, - 8E8CBA03245CE3B5C11D88D402467BE7 /* NSBundle+NYTPhotoViewer.m */, - ); - path = "Resource Loading"; - sourceTree = ""; - }; - B9E75F7F9BE6950522EF5E5D0A3991CE /* Pods-NYTPhotoViewer-SwiftTests */ = { - isa = PBXGroup; - children = ( - 7F47FC42F86323FC5127F7B9CA01D51A /* Pods-NYTPhotoViewer-SwiftTests-acknowledgements.markdown */, - B93F8B7A137359AEDBB2E532A9149D45 /* Pods-NYTPhotoViewer-SwiftTests-acknowledgements.plist */, - 98F3701FC2ADBCB700525DEC45BF8F18 /* Pods-NYTPhotoViewer-SwiftTests-dummy.m */, - E93CEF5802DA5A4170AC4E23CDEBE484 /* Pods-NYTPhotoViewer-SwiftTests-frameworks.sh */, - 8BC17DD2A105099A033DC2939727EEA1 /* Pods-NYTPhotoViewer-SwiftTests-resources.sh */, - 422E1E1847C5FC6857026E551B81314E /* Pods-NYTPhotoViewer-SwiftTests.debug.xcconfig */, - AE233E1358E9DF0B8481BF8111C483A6 /* Pods-NYTPhotoViewer-SwiftTests.release.xcconfig */, - ); - name = "Pods-NYTPhotoViewer-SwiftTests"; - path = "Target Support Files/Pods-NYTPhotoViewer-SwiftTests"; - sourceTree = ""; - }; - BCA752A02964F01E7C5F6C2CC7E0A213 /* Pods-NYTPhotoViewer-Swift */ = { - isa = PBXGroup; - children = ( - DC68FF1EB094A7C50E5148DD123CC50C /* Pods-NYTPhotoViewer-Swift-acknowledgements.markdown */, - 4ABCF2A17701A801D94CD9AA17E43D0F /* Pods-NYTPhotoViewer-Swift-acknowledgements.plist */, - F702EA88D0926BE8D736994211CD85F8 /* Pods-NYTPhotoViewer-Swift-dummy.m */, - 64B6E627F3949DD7F4127D2C687AA09D /* Pods-NYTPhotoViewer-Swift-frameworks.sh */, - 1F2D53EE162B13CFB4CDFF6EE503B571 /* Pods-NYTPhotoViewer-Swift-resources.sh */, - 24A1662B019F68EB6B2FF25D82FA7E57 /* Pods-NYTPhotoViewer-Swift.debug.xcconfig */, - 11A9FDBFCDA87A560F7172E37E8B2FA4 /* Pods-NYTPhotoViewer-Swift.release.xcconfig */, - ); - name = "Pods-NYTPhotoViewer-Swift"; - path = "Target Support Files/Pods-NYTPhotoViewer-Swift"; - sourceTree = ""; - }; - D25566FE898566522AFA119445F00A65 /* NYTPhotoViewer */ = { - isa = PBXGroup; - children = ( - 909ED2FCF1CE30E52CCE93AB49904BF4 /* Core */, - 404E6CCAB9926CE0BE3CBA51F8725996 /* Support Files */, - ); - name = NYTPhotoViewer; - path = ../..; - sourceTree = ""; - }; - DCEC323D735382E97481F0FC0759443B /* Pods-Tests */ = { - isa = PBXGroup; - children = ( - 973AD4BA32CF2D3DBC660277702230C0 /* Pods-Tests-acknowledgements.markdown */, - 4064C262053F71DE29600E5D90AF88A4 /* Pods-Tests-acknowledgements.plist */, - 3F3D665965406E236F4F31B2B196DAC5 /* Pods-Tests-dummy.m */, - BA524E8CF14D5471E24EFF88FAE2E7A4 /* Pods-Tests-frameworks.sh */, - 9DAC8D51213FAA234214456EDBC9156A /* Pods-Tests-resources.sh */, - F6A90C123A977A38E68A560A4D79D195 /* Pods-Tests.debug.xcconfig */, - 836BE698CCA819505512E939D585B9DC /* Pods-Tests.release.xcconfig */, - ); - name = "Pods-Tests"; - path = "Target Support Files/Pods-Tests"; - sourceTree = ""; - }; - F8E29B0BB06C0374E576523ACBFBF9DF /* Support Files */ = { - isa = PBXGroup; - children = ( - 06692780E124290FDB6556C283DCEEAD /* FLAnimatedImage.xcconfig */, - DFD7649EA2AC00E2DA8E2B447ABE63A7 /* FLAnimatedImage-dummy.m */, - B524782070F7E5AAE04AD5FB9C2F7FF1 /* FLAnimatedImage-prefix.pch */, - ); - name = "Support Files"; - path = "../Target Support Files/FLAnimatedImage"; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXHeadersBuildPhase section */ - 5AFF86D43561748E7227622A6EDDA92B /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 149DE9C6DB74B12EFF07D185484D946F /* NSInvocation+OCMAdditions.h in Headers */, - 0934D3DAC27331C1569A357A677B2206 /* NSMethodSignature+OCMAdditions.h in Headers */, - 7FFCEEC0036EC9E7A5D3BAD719B28D4A /* NSNotificationCenter+OCMAdditions.h in Headers */, - CE1D11A21BB0D710B640F31B18935BF3 /* NSObject+OCMAdditions.h in Headers */, - A425B4C6EAA79B2C9BB4F374180DC194 /* NSValue+OCMAdditions.h in Headers */, - 94216C983E91F2BA503920465DE1972A /* OCClassMockObject.h in Headers */, - D78D41AA2CEB6ED571503108CEC3DA15 /* OCMArg.h in Headers */, - DE57384C891A85506CB91EA186D2D2B4 /* OCMArgAction.h in Headers */, - 71899DFD8094C412FFC39669279B4533 /* OCMBlockArgCaller.h in Headers */, - FDFD77CF38AE5FDD235A02217B763809 /* OCMBlockCaller.h in Headers */, - EEBEC3C68DD8C679511876B4610D582A /* OCMBoxedReturnValueProvider.h in Headers */, - 3152811CD17686AA726713BFE3612206 /* OCMConstraint.h in Headers */, - 5F04262019BBB326960E643861626099 /* OCMExceptionReturnValueProvider.h in Headers */, - C01520F21314A4A11E0BD5C9BE190A1A /* OCMExpectationRecorder.h in Headers */, - 0EE98780873CB1A29EE8B4A36BA7E14A /* OCMFunctions.h in Headers */, - 3A769EE15211B7EBBAF4B1C8AD542502 /* OCMFunctionsPrivate.h in Headers */, - FB294C8C8DCC4EACB074C58C027C9723 /* OCMIndirectReturnValueProvider.h in Headers */, - BC7143B82E45DDE808B1D8E8F6970E41 /* OCMInvocationExpectation.h in Headers */, - 70AC31D0736F568C0386716176361D09 /* OCMInvocationMatcher.h in Headers */, - AD672A92EF1A71CB35F77D51924A63D7 /* OCMInvocationStub.h in Headers */, - C796F27878B148315E4EB60535EEA4BE /* OCMLocation.h in Headers */, - CC40C17D2E01DDDF48A7A8D50B8E92F8 /* OCMMacroState.h in Headers */, - D470FD7FF206B100A7B79714E7FA0F4A /* OCMNotificationPoster.h in Headers */, - 87AA263FA688A8E92C2B8ADEE72C98C6 /* OCMObserverRecorder.h in Headers */, - 10AEAD2136880EEE7E771F533331F250 /* OCMock.h in Headers */, - 8A1370FF0DD475F945954535A988ED4B /* OCMockObject.h in Headers */, - E45D617A6259C90DC54D6F22571998E8 /* OCMPassByRefSetter.h in Headers */, - 8D40AF80800C0D4A691F4A0656E53D98 /* OCMRealObjectForwarder.h in Headers */, - 9C195CB2280DCD3183057794B4504B22 /* OCMRecorder.h in Headers */, - C4235F3704F471BAF74CB4482A99D340 /* OCMReturnValueProvider.h in Headers */, - 950C209E1D004EBDCD43D6C2136B5AA2 /* OCMStubRecorder.h in Headers */, - 33C4E9CA4B43CD4C468B338E2ED06860 /* OCMVerifier.h in Headers */, - C6DEDAD5B01946A2644F428020F881B6 /* OCObserverMockObject.h in Headers */, - 562C4A7A171B6F0000B132E22372C3DA /* OCPartialMockObject.h in Headers */, - 40B2ABF25812A14D83A05D8937FBDB7B /* OCProtocolMockObject.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - F23549DBE3534324F97B22486C8BCFEE /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 96AA6CBA703C2690A707AF3E9099032C /* NSBundle+NYTPhotoViewer.h in Headers */, - 2B20322155F43A8B6132E72BDB3DB723 /* NYTPhoto.h in Headers */, - C624AEA7F64F268ECC7A636D0B118185 /* NYTPhotoCaptionView.h in Headers */, - FBB048FC0930D06D3946FF941CFDF555 /* NYTPhotoCaptionViewLayoutWidthHinting.h in Headers */, - 25EBFE1A355E5270C8C4E886D6FA1A6D /* NYTPhotoContainer.h in Headers */, - FF89D64A56347C235B8A081539AF9DD2 /* NYTPhotoDismissalInteractionController.h in Headers */, - 55FA6B09D105DEDDB1AAACFD6FF69B4D /* NYTPhotosDataSource.h in Headers */, - 183C8BCE6A8A8CA5FE2853FA7A16752A /* NYTPhotosOverlayView.h in Headers */, - B466ACC84DEB3B813EDBFFEC95760AB3 /* NYTPhotosViewController.h in Headers */, - 8AD3CBF5EFD13418B67B7DBD7673CE9C /* NYTPhotosViewControllerDataSource.h in Headers */, - C21FA017A42E8B1CA9CC3F9C1F88318F /* NYTPhotoTransitionAnimator.h in Headers */, - 71CFED44C6B6DFC86B8DFCC574F6B8E4 /* NYTPhotoTransitionController.h in Headers */, - D0487B97CDAE11C119336FD22A1B09DE /* NYTPhotoViewController.h in Headers */, - B184CBA7492201A7F61468F027FFBE7F /* NYTScalingImageView.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - F6746889C4A73BAD8B783E1DD0879CBF /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - FB423EE72C2A6D0ED5DEFBEE9BE80A98 /* FLAnimatedImage.h in Headers */, - 7AE83DFAD9756ED1FB1CB5E36F9CF6EB /* FLAnimatedImageView.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXHeadersBuildPhase section */ - -/* Begin PBXNativeTarget section */ - 0654143889A23F99F0114BE527E8E3B0 /* NYTPhotoViewer */ = { - isa = PBXNativeTarget; - buildConfigurationList = B0D4D8F6CF2CEDD35DA8E8FC4C015333 /* Build configuration list for PBXNativeTarget "NYTPhotoViewer" */; - buildPhases = ( - E744386E858798AB168DEB7FFE0F402B /* Sources */, - A46A250F4E59B08EB59C1BE4213E177D /* Frameworks */, - F23549DBE3534324F97B22486C8BCFEE /* Headers */, - ); - buildRules = ( - ); - dependencies = ( - D7489D389BC01C9D2AA530DEA50E329A /* PBXTargetDependency */, - 31BC5076397C7BEB13B71089484A96A1 /* PBXTargetDependency */, - ); - name = NYTPhotoViewer; - productName = NYTPhotoViewer; - productReference = 3312F3BB9EB529E361D7557F11720647 /* libNYTPhotoViewer.a */; - productType = "com.apple.product-type.library.static"; - }; - 1A79BA86DB198181905CBBFC1F1E6701 /* FLAnimatedImage */ = { - isa = PBXNativeTarget; - buildConfigurationList = 7CCD7F601F55B0AB6E88DCCFF6374DB5 /* Build configuration list for PBXNativeTarget "FLAnimatedImage" */; - buildPhases = ( - BA051833E256E1799D7759FE76438EDC /* Sources */, - 456E3D8CBA16CC53451C696545611E92 /* Frameworks */, - F6746889C4A73BAD8B783E1DD0879CBF /* Headers */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = FLAnimatedImage; - productName = FLAnimatedImage; - productReference = 716AB915F484AA18D1981D68DCB80C20 /* libFLAnimatedImage.a */; - productType = "com.apple.product-type.library.static"; - }; - 4A2CAA839F2722C796C6F1DFDC806B92 /* OCMock */ = { - isa = PBXNativeTarget; - buildConfigurationList = 10542776D8ACCA3DA970BD708ACC2AF4 /* Build configuration list for PBXNativeTarget "OCMock" */; - buildPhases = ( - 33CF95FAFC48226F1A54C85AA1529B40 /* Sources */, - 4C2602132A1D207DB135342BF83AB581 /* Frameworks */, - 5AFF86D43561748E7227622A6EDDA92B /* Headers */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = OCMock; - productName = OCMock; - productReference = FD13B7465741BF44542D9908F4282CF2 /* libOCMock.a */; - productType = "com.apple.product-type.library.static"; - }; - 57F9DEF1EE0234385622637CF4411DFC /* Pods-NYTPhotoViewer-SwiftTests */ = { - isa = PBXNativeTarget; - buildConfigurationList = D252539879C8E445184188306042B48A /* Build configuration list for PBXNativeTarget "Pods-NYTPhotoViewer-SwiftTests" */; - buildPhases = ( - 7D4CE02A5E923C6FE33E1C8CDC5096E2 /* Sources */, - 5C5C2A20898A1E60D66D79AA4C8EA931 /* Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - 4B1BAB42EE711E9C70D8E0C0F45A8A1D /* PBXTargetDependency */, - BAF41D24331E5C4394240DBE313CF81D /* PBXTargetDependency */, - 4CD401AFB7A5B7CC07F2488E06E292C1 /* PBXTargetDependency */, - ); - name = "Pods-NYTPhotoViewer-SwiftTests"; - productName = "Pods-NYTPhotoViewer-SwiftTests"; - productReference = A4BECE0B52B507FC5D0F43DF23BA8237 /* libPods-NYTPhotoViewer-SwiftTests.a */; - productType = "com.apple.product-type.library.static"; - }; - 693C39C58B0B71A71225DDAE17874B3E /* NYTPhotoViewer-NYTPhotoViewer */ = { - isa = PBXNativeTarget; - buildConfigurationList = 6F99B716F6784ADB4556CCEAA5AB70D0 /* Build configuration list for PBXNativeTarget "NYTPhotoViewer-NYTPhotoViewer" */; - buildPhases = ( - 2ED3683AD0DB5D88561A03E902734398 /* Sources */, - E6E6CC792423E601DC7309CE925CCDB4 /* Frameworks */, - D86907F91BF80A6AB6CF7AC9A33BDFD7 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "NYTPhotoViewer-NYTPhotoViewer"; - productName = "NYTPhotoViewer-NYTPhotoViewer"; - productReference = F6FA1A0F53B04EA6E8303A635D478550 /* NYTPhotoViewer.bundle */; - productType = "com.apple.product-type.bundle"; - }; - 81E5D24E494205A86E10315A97453C99 /* Pods-Tests */ = { - isa = PBXNativeTarget; - buildConfigurationList = 35203008B3F488CFD36CF8BB6AAE7111 /* Build configuration list for PBXNativeTarget "Pods-Tests" */; - buildPhases = ( - 4404061AA5D1697042AE4FF71A63E251 /* Sources */, - AECF13C7DBD49E813612E6011040B9B7 /* Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - C8338E4C4E67A0141F4FEB65206DB1D8 /* PBXTargetDependency */, - 745EE36F0DE70E60CBE2C3A7CFB7DA42 /* PBXTargetDependency */, - 7A39CD9C2F26219A3A8DB7C93DDC0069 /* PBXTargetDependency */, - ); - name = "Pods-Tests"; - productName = "Pods-Tests"; - productReference = 6D72CFFCA56C168C0A7FE7F810A4B3C4 /* libPods-Tests.a */; - productType = "com.apple.product-type.library.static"; - }; - D5EC63626395827D8EF17AB0C18757B9 /* Pods-NYTPhotoViewer-Swift */ = { - isa = PBXNativeTarget; - buildConfigurationList = 9FA78F271AF31B39FEE4CF4A32EC4D2F /* Build configuration list for PBXNativeTarget "Pods-NYTPhotoViewer-Swift" */; - buildPhases = ( - BB4843CE482AA84B0ED3E9EDA89BDF3D /* Sources */, - C9D9FED55A2E360CF5A08FDB99324D38 /* Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - FE52FC1839B2D82CA8B0312218A6DDE4 /* PBXTargetDependency */, - 3219572033880CF72398513AC64A51FF /* PBXTargetDependency */, - ); - name = "Pods-NYTPhotoViewer-Swift"; - productName = "Pods-NYTPhotoViewer-Swift"; - productReference = 14C0EE5854C75187952451BDF0000DBD /* libPods-NYTPhotoViewer-Swift.a */; - productType = "com.apple.product-type.library.static"; - }; - EFE62BE19C543E2DA91B619D846E57E4 /* Pods-NYTPhotoViewer */ = { - isa = PBXNativeTarget; - buildConfigurationList = 95FD8CC4BE07C53331172895AE10F2A7 /* Build configuration list for PBXNativeTarget "Pods-NYTPhotoViewer" */; - buildPhases = ( - 0FF8FFBC2566D559AB3E4C26014DC83D /* Sources */, - 0C611D7687D01E1FA4FDA3E0C852D0DC /* Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - F612CF41881861976855AB16AD6C4118 /* PBXTargetDependency */, - D25F54C0D195B2D5EBF06CCE758091E3 /* PBXTargetDependency */, - ); - name = "Pods-NYTPhotoViewer"; - productName = "Pods-NYTPhotoViewer"; - productReference = 3529BF22431013E7BB6E418B1F38256E /* libPods-NYTPhotoViewer.a */; - productType = "com.apple.product-type.library.static"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - D41D8CD98F00B204E9800998ECF8427E /* Project object */ = { - isa = PBXProject; - attributes = { - LastSwiftUpdateCheck = 0700; - LastUpgradeCheck = 0700; - }; - buildConfigurationList = 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */; - compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; - hasScannedForEncodings = 0; - knownRegions = ( - en, - ); - mainGroup = 7DB346D0F39D3F0E887471402A8071AB; - productRefGroup = 45656472FF127D4B39796E27DEE2F045 /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - 1A79BA86DB198181905CBBFC1F1E6701 /* FLAnimatedImage */, - 0654143889A23F99F0114BE527E8E3B0 /* NYTPhotoViewer */, - 693C39C58B0B71A71225DDAE17874B3E /* NYTPhotoViewer-NYTPhotoViewer */, - 4A2CAA839F2722C796C6F1DFDC806B92 /* OCMock */, - EFE62BE19C543E2DA91B619D846E57E4 /* Pods-NYTPhotoViewer */, - D5EC63626395827D8EF17AB0C18757B9 /* Pods-NYTPhotoViewer-Swift */, - 57F9DEF1EE0234385622637CF4411DFC /* Pods-NYTPhotoViewer-SwiftTests */, - 81E5D24E494205A86E10315A97453C99 /* Pods-Tests */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - D86907F91BF80A6AB6CF7AC9A33BDFD7 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B0E05562A115CEC19523EC0337D4391A /* NYTPhotoViewerCloseButtonX.png in Resources */, - 9A4FD7CA85278E4080D9567479369546 /* NYTPhotoViewerCloseButtonX@2x.png in Resources */, - 0DECD374B59611D4E32BD5EF406679F1 /* NYTPhotoViewerCloseButtonX@3x.png in Resources */, - D21CCD2E0296D920702D681D6B74F877 /* NYTPhotoViewerCloseButtonXLandscape.png in Resources */, - 8AEFADC427762A8A3071EC11B058E560 /* NYTPhotoViewerCloseButtonXLandscape@2x.png in Resources */, - 14EA64C0FC85C40F7CC6B35835F44F60 /* NYTPhotoViewerCloseButtonXLandscape@3x.png in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 0FF8FFBC2566D559AB3E4C26014DC83D /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 210933BCD4FBAFBA646D79E67E4EFF34 /* Pods-NYTPhotoViewer-dummy.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 2ED3683AD0DB5D88561A03E902734398 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 33CF95FAFC48226F1A54C85AA1529B40 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - E00ABE7FC44CB9D1B511D96D47C16AD5 /* NSInvocation+OCMAdditions.m in Sources */, - 5BB246B2587EBC3E5597DBD6CD33777F /* NSMethodSignature+OCMAdditions.m in Sources */, - F0E9BE1709D8B3501A9E791E8D36FBED /* NSNotificationCenter+OCMAdditions.m in Sources */, - DADACF239B30C047FA9304E5FDDA8B2E /* NSObject+OCMAdditions.m in Sources */, - E2D2C2DEBBB651077ABC3710A423594F /* NSValue+OCMAdditions.m in Sources */, - B28B82281F2A75B1A27E9B1B289B179D /* OCClassMockObject.m in Sources */, - 651F3096B56BFF131C5F956001D7BAAB /* OCMArg.m in Sources */, - 55F2C7C98AB5E300663D064AAA64B80B /* OCMArgAction.m in Sources */, - E8CDCEDCDC0ADE51EBAFCC09F44EFF12 /* OCMBlockArgCaller.m in Sources */, - 046937EA1C4859D4D96EFA7B7687E441 /* OCMBlockCaller.m in Sources */, - 672FE514B7C1EB583AF6CEB2538025A7 /* OCMBoxedReturnValueProvider.m in Sources */, - 55EA7FCA2F507BCC25959CE95D295A8C /* OCMConstraint.m in Sources */, - D9EA9C8052853B8962318FFD5A5551B6 /* OCMExceptionReturnValueProvider.m in Sources */, - 6D2AD1DFA8F27BA0EBB3365A5AF7AC1B /* OCMExpectationRecorder.m in Sources */, - 9ED6B48F0C000C83C89249483D3398A6 /* OCMFunctions.m in Sources */, - 830B3A29668D59C62571A4CE4D3BAFCA /* OCMIndirectReturnValueProvider.m in Sources */, - CC4F14C27B167A64F09A356652410909 /* OCMInvocationExpectation.m in Sources */, - C508640C7607A5BE183916AC4202A026 /* OCMInvocationMatcher.m in Sources */, - B4D6973B3F74EB04E719BFCFCBF04C0B /* OCMInvocationStub.m in Sources */, - 1B7E21160BEF08CC76BA8C17E94E455A /* OCMLocation.m in Sources */, - 59BC54DA90AD2433D20358F9853622CA /* OCMMacroState.m in Sources */, - 7EE0FD33AB30006545874DEF02F9243E /* OCMNotificationPoster.m in Sources */, - 1586CD3BDB1E92D87A0E423AAC313FD4 /* OCMObserverRecorder.m in Sources */, - B36995CF7E36CC57C8C118EC5EC049A6 /* OCMock-dummy.m in Sources */, - CC5C84B30927F4CE48D7EC04BF652005 /* OCMockObject.m in Sources */, - 0A7C4089DBD8BD40374AFA8EEAB7CA3C /* OCMPassByRefSetter.m in Sources */, - 20C39DB909C33B491D60F23FA1D415C2 /* OCMRealObjectForwarder.m in Sources */, - 3EEE56426C5838CA2F13E8F95B594401 /* OCMRecorder.m in Sources */, - A516CB608A827C4FEA550CB372854AF7 /* OCMReturnValueProvider.m in Sources */, - 4CF0A4AD04F2F3CF7465991A5E76AD47 /* OCMStubRecorder.m in Sources */, - 03EF931564978791D4ABC400F3FDDBED /* OCMVerifier.m in Sources */, - C55C0B0594D26DE09DEC7F161910A211 /* OCObserverMockObject.m in Sources */, - DF0A3CB81B12C054F9C8258F680F7C9D /* OCPartialMockObject.m in Sources */, - EA2A970253EA9B298F0BB63864AA18D1 /* OCProtocolMockObject.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 4404061AA5D1697042AE4FF71A63E251 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 475BBAB1062B524EBF543ABD0ADA1829 /* Pods-Tests-dummy.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 7D4CE02A5E923C6FE33E1C8CDC5096E2 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 3A969D019F6F52E82EB1CB4DFCCD842C /* Pods-NYTPhotoViewer-SwiftTests-dummy.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - BA051833E256E1799D7759FE76438EDC /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 3D258E9A843C52C991E5E9455CB8DB51 /* FLAnimatedImage-dummy.m in Sources */, - E99CE64289F5FDD09B7E1188379AED41 /* FLAnimatedImage.m in Sources */, - B3AA789E74DBAB167DAD0FDCA19690C7 /* FLAnimatedImageView.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - BB4843CE482AA84B0ED3E9EDA89BDF3D /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - C9D4A031824B3CFEEEBDD7F8B57CC161 /* Pods-NYTPhotoViewer-Swift-dummy.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - E744386E858798AB168DEB7FFE0F402B /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 7C7C91B0D616ADD86E208713A22419B9 /* NSBundle+NYTPhotoViewer.m in Sources */, - 3009A71CCDC3E0A261D1DEFD79F8531D /* NYTPhotoCaptionView.m in Sources */, - 6C10E812F3AFFCBD5062BD599E05499E /* NYTPhotoDismissalInteractionController.m in Sources */, - 1800397EDF43C932093838940EAAA045 /* NYTPhotosDataSource.m in Sources */, - 60244C06E35A0C05A6F3FB1694B95BBF /* NYTPhotosOverlayView.m in Sources */, - 21721F5FAF6C68D4B94C743FCDAEA790 /* NYTPhotosViewController.m in Sources */, - 8AEB5737F1DA5540B3BDB2DDCE2D7401 /* NYTPhotoTransitionAnimator.m in Sources */, - 97E7A55C33E1C7717A8BE961F6547D13 /* NYTPhotoTransitionController.m in Sources */, - 171F70710819BE87270EFA05924971F4 /* NYTPhotoViewController.m in Sources */, - E7B12EB9B2A6443B0FB6541B46DB1DB9 /* NYTPhotoViewer-dummy.m in Sources */, - 5030BA8BB5492165F062BD652988EBB4 /* NYTScalingImageView.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXTargetDependency section */ - 31BC5076397C7BEB13B71089484A96A1 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "NYTPhotoViewer-NYTPhotoViewer"; - target = 693C39C58B0B71A71225DDAE17874B3E /* NYTPhotoViewer-NYTPhotoViewer */; - targetProxy = B6A43A6161806CE532F207A79B63D406 /* PBXContainerItemProxy */; - }; - 3219572033880CF72398513AC64A51FF /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = NYTPhotoViewer; - target = 0654143889A23F99F0114BE527E8E3B0 /* NYTPhotoViewer */; - targetProxy = 6172F0104FB64E5208B145ADFB627E62 /* PBXContainerItemProxy */; - }; - 4B1BAB42EE711E9C70D8E0C0F45A8A1D /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = FLAnimatedImage; - target = 1A79BA86DB198181905CBBFC1F1E6701 /* FLAnimatedImage */; - targetProxy = 2FAE342CFFFA5C8159FEA9D856247783 /* PBXContainerItemProxy */; - }; - 4CD401AFB7A5B7CC07F2488E06E292C1 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = OCMock; - target = 4A2CAA839F2722C796C6F1DFDC806B92 /* OCMock */; - targetProxy = AF47FE2DB728285ED7B873C40660842C /* PBXContainerItemProxy */; - }; - 745EE36F0DE70E60CBE2C3A7CFB7DA42 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = NYTPhotoViewer; - target = 0654143889A23F99F0114BE527E8E3B0 /* NYTPhotoViewer */; - targetProxy = 360931A573BBF9BF7C08B40113A0FBBF /* PBXContainerItemProxy */; - }; - 7A39CD9C2F26219A3A8DB7C93DDC0069 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = OCMock; - target = 4A2CAA839F2722C796C6F1DFDC806B92 /* OCMock */; - targetProxy = 536F3ACDA6C6E493B53CD6E1DD1FFF6B /* PBXContainerItemProxy */; - }; - BAF41D24331E5C4394240DBE313CF81D /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = NYTPhotoViewer; - target = 0654143889A23F99F0114BE527E8E3B0 /* NYTPhotoViewer */; - targetProxy = 7EBE4843A061104AB6084A9768B3499B /* PBXContainerItemProxy */; - }; - C8338E4C4E67A0141F4FEB65206DB1D8 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = FLAnimatedImage; - target = 1A79BA86DB198181905CBBFC1F1E6701 /* FLAnimatedImage */; - targetProxy = CE0EF9B38D1CB9097F8EE2059CD8B3C7 /* PBXContainerItemProxy */; - }; - D25F54C0D195B2D5EBF06CCE758091E3 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = NYTPhotoViewer; - target = 0654143889A23F99F0114BE527E8E3B0 /* NYTPhotoViewer */; - targetProxy = 51BA6C87CEFC9F55F8E5003AF5DBA923 /* PBXContainerItemProxy */; - }; - D7489D389BC01C9D2AA530DEA50E329A /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = FLAnimatedImage; - target = 1A79BA86DB198181905CBBFC1F1E6701 /* FLAnimatedImage */; - targetProxy = AE3809356F577E09124E08D48D549B45 /* PBXContainerItemProxy */; - }; - F612CF41881861976855AB16AD6C4118 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = FLAnimatedImage; - target = 1A79BA86DB198181905CBBFC1F1E6701 /* FLAnimatedImage */; - targetProxy = 9FE7D691C8923353B319580F5981D029 /* PBXContainerItemProxy */; - }; - FE52FC1839B2D82CA8B0312218A6DDE4 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = FLAnimatedImage; - target = 1A79BA86DB198181905CBBFC1F1E6701 /* FLAnimatedImage */; - targetProxy = 31C9079AC5B3D2DFF1844A4A10BD7049 /* PBXContainerItemProxy */; - }; -/* End PBXTargetDependency section */ - -/* Begin XCBuildConfiguration section */ - 01A02FD0543242CA100F5EDBF9419EEB /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 836BE698CCA819505512E939D585B9DC /* Pods-Tests.release.xcconfig */; - buildSettings = { - ENABLE_STRICT_OBJC_MSGSEND = YES; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - MACH_O_TYPE = staticlib; - MTL_ENABLE_DEBUG_INFO = NO; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - }; - name = Release; - }; - 19F353D017640F72B53C16EB909BD2A3 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = F6A90C123A977A38E68A560A4D79D195 /* Pods-Tests.debug.xcconfig */; - buildSettings = { - ENABLE_STRICT_OBJC_MSGSEND = YES; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - MACH_O_TYPE = staticlib; - MTL_ENABLE_DEBUG_INFO = YES; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - }; - name = Debug; - }; - 251121609363F57B20CE1485900386DF /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 7B8337F919BD3F92A18BC349D5F01A8D /* OCMock.xcconfig */; - buildSettings = { - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/OCMock/OCMock-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - MTL_ENABLE_DEBUG_INFO = YES; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_NAME = "$(TARGET_NAME)"; - PUBLIC_HEADERS_FOLDER_PATH = ""; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - }; - name = Debug; - }; - 536A8F629DB6C1C1D9848977DC1AF06B /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = B3B003557BF43DD28224CCE9641279E9 /* Pods-NYTPhotoViewer.release.xcconfig */; - buildSettings = { - ENABLE_STRICT_OBJC_MSGSEND = YES; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - MACH_O_TYPE = staticlib; - MTL_ENABLE_DEBUG_INFO = NO; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - }; - name = Release; - }; - 5DAE9E1F9AE6FCC978975B2ECE991D13 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 064E1C219125C6C9038C857CA3BD6583 /* NYTPhotoViewer.xcconfig */; - buildSettings = { - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/NYTPhotoViewer/NYTPhotoViewer-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - MTL_ENABLE_DEBUG_INFO = NO; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_NAME = "$(TARGET_NAME)"; - PUBLIC_HEADERS_FOLDER_PATH = ""; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - }; - name = Release; - }; - 68672C51C711C5E16AC79EA5141170EA /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 7B8337F919BD3F92A18BC349D5F01A8D /* OCMock.xcconfig */; - buildSettings = { - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/OCMock/OCMock-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - MTL_ENABLE_DEBUG_INFO = NO; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_NAME = "$(TARGET_NAME)"; - PUBLIC_HEADERS_FOLDER_PATH = ""; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - }; - name = Release; - }; - 86077BEE5CDF47EBE44ECC77B4C26DF6 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 11A9FDBFCDA87A560F7172E37E8B2FA4 /* Pods-NYTPhotoViewer-Swift.release.xcconfig */; - buildSettings = { - ENABLE_STRICT_OBJC_MSGSEND = YES; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - MACH_O_TYPE = staticlib; - MTL_ENABLE_DEBUG_INFO = NO; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - }; - name = Release; - }; - A28D6ABD89741B3ED5086F680A66A7AB /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 015910EC2578EF7210EA0A4954B52AD9 /* Pods-NYTPhotoViewer.debug.xcconfig */; - buildSettings = { - ENABLE_STRICT_OBJC_MSGSEND = YES; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - MACH_O_TYPE = staticlib; - MTL_ENABLE_DEBUG_INFO = YES; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - }; - name = Debug; - }; - A70CDAD61F90AC503C7D04CC22DA2923 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - COPY_PHASE_STRIP = NO; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_DYNAMIC_NO_PIC = NO; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_SYMBOLS_PRIVATE_EXTERN = NO; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - ONLY_ACTIVE_ARCH = YES; - STRIP_INSTALLED_PRODUCT = NO; - SYMROOT = "${SRCROOT}/../build"; - }; - name = Debug; - }; - A896D61F6F06DEEA9374360FBDCF03C2 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 24A1662B019F68EB6B2FF25D82FA7E57 /* Pods-NYTPhotoViewer-Swift.debug.xcconfig */; - buildSettings = { - ENABLE_STRICT_OBJC_MSGSEND = YES; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - MACH_O_TYPE = staticlib; - MTL_ENABLE_DEBUG_INFO = YES; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - }; - name = Debug; - }; - A8D9CB03E525E0E3B945931B1732B69A /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 06692780E124290FDB6556C283DCEEAD /* FLAnimatedImage.xcconfig */; - buildSettings = { - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/FLAnimatedImage/FLAnimatedImage-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - MTL_ENABLE_DEBUG_INFO = YES; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_NAME = "$(TARGET_NAME)"; - PUBLIC_HEADERS_FOLDER_PATH = ""; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - }; - name = Debug; - }; - B14AF75C5CEF244B065304A03868A02D /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 06692780E124290FDB6556C283DCEEAD /* FLAnimatedImage.xcconfig */; - buildSettings = { - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/FLAnimatedImage/FLAnimatedImage-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - MTL_ENABLE_DEBUG_INFO = NO; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_NAME = "$(TARGET_NAME)"; - PUBLIC_HEADERS_FOLDER_PATH = ""; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - }; - name = Release; - }; - BB8BF861BFF8927B18F7A1842806F511 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 422E1E1847C5FC6857026E551B81314E /* Pods-NYTPhotoViewer-SwiftTests.debug.xcconfig */; - buildSettings = { - ENABLE_STRICT_OBJC_MSGSEND = YES; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - MACH_O_TYPE = staticlib; - MTL_ENABLE_DEBUG_INFO = YES; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - }; - name = Debug; - }; - CF34DA6D14B42D7490C1758CBBA5355E /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 064E1C219125C6C9038C857CA3BD6583 /* NYTPhotoViewer.xcconfig */; - buildSettings = { - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/NYTPhotoViewer/NYTPhotoViewer-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - MTL_ENABLE_DEBUG_INFO = YES; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_NAME = "$(TARGET_NAME)"; - PUBLIC_HEADERS_FOLDER_PATH = ""; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - }; - name = Debug; - }; - DE4B7DA82DB9AAC0653F9810A7E4C03A /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = AE233E1358E9DF0B8481BF8111C483A6 /* Pods-NYTPhotoViewer-SwiftTests.release.xcconfig */; - buildSettings = { - ENABLE_STRICT_OBJC_MSGSEND = YES; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - MACH_O_TYPE = staticlib; - MTL_ENABLE_DEBUG_INFO = NO; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - }; - name = Release; - }; - FB45FFD90572718D82AB9092B750F0CA /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - COPY_PHASE_STRIP = YES; - ENABLE_NS_ASSERTIONS = NO; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_PREPROCESSOR_DEFINITIONS = "RELEASE=1"; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - STRIP_INSTALLED_PRODUCT = NO; - SYMROOT = "${SRCROOT}/../build"; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - FBA19C1D5000A04B1B3861ACC3058CDC /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 064E1C219125C6C9038C857CA3BD6583 /* NYTPhotoViewer.xcconfig */; - buildSettings = { - ENABLE_STRICT_OBJC_MSGSEND = YES; - PRODUCT_NAME = NYTPhotoViewer; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - WRAPPER_EXTENSION = bundle; - }; - name = Debug; - }; - FE3CA459FCBC18158EEC066F48E344D6 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 064E1C219125C6C9038C857CA3BD6583 /* NYTPhotoViewer.xcconfig */; - buildSettings = { - ENABLE_STRICT_OBJC_MSGSEND = YES; - PRODUCT_NAME = NYTPhotoViewer; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - WRAPPER_EXTENSION = bundle; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 10542776D8ACCA3DA970BD708ACC2AF4 /* Build configuration list for PBXNativeTarget "OCMock" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 251121609363F57B20CE1485900386DF /* Debug */, - 68672C51C711C5E16AC79EA5141170EA /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - A70CDAD61F90AC503C7D04CC22DA2923 /* Debug */, - FB45FFD90572718D82AB9092B750F0CA /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 35203008B3F488CFD36CF8BB6AAE7111 /* Build configuration list for PBXNativeTarget "Pods-Tests" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 19F353D017640F72B53C16EB909BD2A3 /* Debug */, - 01A02FD0543242CA100F5EDBF9419EEB /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 6F99B716F6784ADB4556CCEAA5AB70D0 /* Build configuration list for PBXNativeTarget "NYTPhotoViewer-NYTPhotoViewer" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - FBA19C1D5000A04B1B3861ACC3058CDC /* Debug */, - FE3CA459FCBC18158EEC066F48E344D6 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 7CCD7F601F55B0AB6E88DCCFF6374DB5 /* Build configuration list for PBXNativeTarget "FLAnimatedImage" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - A8D9CB03E525E0E3B945931B1732B69A /* Debug */, - B14AF75C5CEF244B065304A03868A02D /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 95FD8CC4BE07C53331172895AE10F2A7 /* Build configuration list for PBXNativeTarget "Pods-NYTPhotoViewer" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - A28D6ABD89741B3ED5086F680A66A7AB /* Debug */, - 536A8F629DB6C1C1D9848977DC1AF06B /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 9FA78F271AF31B39FEE4CF4A32EC4D2F /* Build configuration list for PBXNativeTarget "Pods-NYTPhotoViewer-Swift" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - A896D61F6F06DEEA9374360FBDCF03C2 /* Debug */, - 86077BEE5CDF47EBE44ECC77B4C26DF6 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - B0D4D8F6CF2CEDD35DA8E8FC4C015333 /* Build configuration list for PBXNativeTarget "NYTPhotoViewer" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - CF34DA6D14B42D7490C1758CBBA5355E /* Debug */, - 5DAE9E1F9AE6FCC978975B2ECE991D13 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - D252539879C8E445184188306042B48A /* Build configuration list for PBXNativeTarget "Pods-NYTPhotoViewer-SwiftTests" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - BB8BF861BFF8927B18F7A1842806F511 /* Debug */, - DE4B7DA82DB9AAC0653F9810A7E4C03A /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = D41D8CD98F00B204E9800998ECF8427E /* Project object */; -} diff --git a/Example/Pods/Target Support Files/FLAnimatedImage/FLAnimatedImage-dummy.m b/Example/Pods/Target Support Files/FLAnimatedImage/FLAnimatedImage-dummy.m deleted file mode 100644 index 343e6b01..00000000 --- a/Example/Pods/Target Support Files/FLAnimatedImage/FLAnimatedImage-dummy.m +++ /dev/null @@ -1,5 +0,0 @@ -#import -@interface PodsDummy_FLAnimatedImage : NSObject -@end -@implementation PodsDummy_FLAnimatedImage -@end diff --git a/Example/Pods/Target Support Files/FLAnimatedImage/FLAnimatedImage-prefix.pch b/Example/Pods/Target Support Files/FLAnimatedImage/FLAnimatedImage-prefix.pch deleted file mode 100644 index aa992a4a..00000000 --- a/Example/Pods/Target Support Files/FLAnimatedImage/FLAnimatedImage-prefix.pch +++ /dev/null @@ -1,4 +0,0 @@ -#ifdef __OBJC__ -#import -#endif - diff --git a/Example/Pods/Target Support Files/FLAnimatedImage/FLAnimatedImage.xcconfig b/Example/Pods/Target Support Files/FLAnimatedImage/FLAnimatedImage.xcconfig deleted file mode 100644 index 5b7187b6..00000000 --- a/Example/Pods/Target Support Files/FLAnimatedImage/FLAnimatedImage.xcconfig +++ /dev/null @@ -1,5 +0,0 @@ -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/FLAnimatedImage" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/FLAnimatedImage" "${PODS_ROOT}/Headers/Public/NYTPhotoViewer" "${PODS_ROOT}/Headers/Public/OCMock" -OTHER_LDFLAGS = -framework "CoreGraphics" -framework "ImageIO" -framework "MobileCoreServices" -framework "QuartzCore" -PODS_ROOT = ${SRCROOT} -SKIP_INSTALL = YES \ No newline at end of file diff --git a/Example/Pods/Target Support Files/NYTPhotoViewer/NYTPhotoViewer-dummy.m b/Example/Pods/Target Support Files/NYTPhotoViewer/NYTPhotoViewer-dummy.m deleted file mode 100644 index 0c8de428..00000000 --- a/Example/Pods/Target Support Files/NYTPhotoViewer/NYTPhotoViewer-dummy.m +++ /dev/null @@ -1,5 +0,0 @@ -#import -@interface PodsDummy_NYTPhotoViewer : NSObject -@end -@implementation PodsDummy_NYTPhotoViewer -@end diff --git a/Example/Pods/Target Support Files/NYTPhotoViewer/NYTPhotoViewer-prefix.pch b/Example/Pods/Target Support Files/NYTPhotoViewer/NYTPhotoViewer-prefix.pch deleted file mode 100644 index aa992a4a..00000000 --- a/Example/Pods/Target Support Files/NYTPhotoViewer/NYTPhotoViewer-prefix.pch +++ /dev/null @@ -1,4 +0,0 @@ -#ifdef __OBJC__ -#import -#endif - diff --git a/Example/Pods/Target Support Files/NYTPhotoViewer/NYTPhotoViewer.xcconfig b/Example/Pods/Target Support Files/NYTPhotoViewer/NYTPhotoViewer.xcconfig deleted file mode 100644 index 1335dd0b..00000000 --- a/Example/Pods/Target Support Files/NYTPhotoViewer/NYTPhotoViewer.xcconfig +++ /dev/null @@ -1,5 +0,0 @@ -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 ANIMATED_GIF_SUPPORT=1 -HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/NYTPhotoViewer" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/FLAnimatedImage" "${PODS_ROOT}/Headers/Public/NYTPhotoViewer" "${PODS_ROOT}/Headers/Public/OCMock" -OTHER_LDFLAGS = -framework "Foundation" -framework "UIKit" -PODS_ROOT = ${SRCROOT} -SKIP_INSTALL = YES \ No newline at end of file diff --git a/Example/Pods/Target Support Files/OCMock/OCMock-dummy.m b/Example/Pods/Target Support Files/OCMock/OCMock-dummy.m deleted file mode 100644 index 7e5d1507..00000000 --- a/Example/Pods/Target Support Files/OCMock/OCMock-dummy.m +++ /dev/null @@ -1,5 +0,0 @@ -#import -@interface PodsDummy_OCMock : NSObject -@end -@implementation PodsDummy_OCMock -@end diff --git a/Example/Pods/Target Support Files/OCMock/OCMock-prefix.pch b/Example/Pods/Target Support Files/OCMock/OCMock-prefix.pch deleted file mode 100644 index aa992a4a..00000000 --- a/Example/Pods/Target Support Files/OCMock/OCMock-prefix.pch +++ /dev/null @@ -1,4 +0,0 @@ -#ifdef __OBJC__ -#import -#endif - diff --git a/Example/Pods/Target Support Files/OCMock/OCMock.xcconfig b/Example/Pods/Target Support Files/OCMock/OCMock.xcconfig deleted file mode 100644 index 3ad20027..00000000 --- a/Example/Pods/Target Support Files/OCMock/OCMock.xcconfig +++ /dev/null @@ -1,4 +0,0 @@ -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/OCMock" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/FLAnimatedImage" "${PODS_ROOT}/Headers/Public/NYTPhotoViewer" "${PODS_ROOT}/Headers/Public/OCMock" -PODS_ROOT = ${SRCROOT} -SKIP_INSTALL = YES \ No newline at end of file diff --git a/Example/Pods/Target Support Files/Pods-NYTPhotoViewer-Swift/Pods-NYTPhotoViewer-Swift-acknowledgements.markdown b/Example/Pods/Target Support Files/Pods-NYTPhotoViewer-Swift/Pods-NYTPhotoViewer-Swift-acknowledgements.markdown deleted file mode 100644 index b41e9dfe..00000000 --- a/Example/Pods/Target Support Files/Pods-NYTPhotoViewer-Swift/Pods-NYTPhotoViewer-Swift-acknowledgements.markdown +++ /dev/null @@ -1,45 +0,0 @@ -# Acknowledgements -This application makes use of the following third party libraries: - -## FLAnimatedImage - -The MIT License (MIT) - -Copyright (c) 2014-2015 Flipboard - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - -## NYTPhotoViewer - -Copyright (c) 2015 The New York Times Company - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this library except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. - -Generated by CocoaPods - http://cocoapods.org diff --git a/Example/Pods/Target Support Files/Pods-NYTPhotoViewer-Swift/Pods-NYTPhotoViewer-Swift-acknowledgements.plist b/Example/Pods/Target Support Files/Pods-NYTPhotoViewer-Swift/Pods-NYTPhotoViewer-Swift-acknowledgements.plist deleted file mode 100644 index 41303ec9..00000000 --- a/Example/Pods/Target Support Files/Pods-NYTPhotoViewer-Swift/Pods-NYTPhotoViewer-Swift-acknowledgements.plist +++ /dev/null @@ -1,79 +0,0 @@ - - - - - PreferenceSpecifiers - - - FooterText - This application makes use of the following third party libraries: - Title - Acknowledgements - Type - PSGroupSpecifier - - - FooterText - The MIT License (MIT) - -Copyright (c) 2014-2015 Flipboard - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - Title - FLAnimatedImage - Type - PSGroupSpecifier - - - FooterText - Copyright (c) 2015 The New York Times Company - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this library except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. - - Title - NYTPhotoViewer - Type - PSGroupSpecifier - - - FooterText - Generated by CocoaPods - http://cocoapods.org - Title - - Type - PSGroupSpecifier - - - StringsTable - Acknowledgements - Title - Acknowledgements - - diff --git a/Example/Pods/Target Support Files/Pods-NYTPhotoViewer-Swift/Pods-NYTPhotoViewer-Swift-dummy.m b/Example/Pods/Target Support Files/Pods-NYTPhotoViewer-Swift/Pods-NYTPhotoViewer-Swift-dummy.m deleted file mode 100644 index 37e5ea55..00000000 --- a/Example/Pods/Target Support Files/Pods-NYTPhotoViewer-Swift/Pods-NYTPhotoViewer-Swift-dummy.m +++ /dev/null @@ -1,5 +0,0 @@ -#import -@interface PodsDummy_Pods_NYTPhotoViewer_Swift : NSObject -@end -@implementation PodsDummy_Pods_NYTPhotoViewer_Swift -@end diff --git a/Example/Pods/Target Support Files/Pods-NYTPhotoViewer-Swift/Pods-NYTPhotoViewer-Swift-frameworks.sh b/Example/Pods/Target Support Files/Pods-NYTPhotoViewer-Swift/Pods-NYTPhotoViewer-Swift-frameworks.sh deleted file mode 100755 index 6f763443..00000000 --- a/Example/Pods/Target Support Files/Pods-NYTPhotoViewer-Swift/Pods-NYTPhotoViewer-Swift-frameworks.sh +++ /dev/null @@ -1,84 +0,0 @@ -#!/bin/sh -set -e - -echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" -mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" - -SWIFT_STDLIB_PATH="${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" - -install_framework() -{ - if [ -r "${BUILT_PRODUCTS_DIR}/$1" ]; then - local source="${BUILT_PRODUCTS_DIR}/$1" - elif [ -r "${BUILT_PRODUCTS_DIR}/$(basename "$1")" ]; then - local source="${BUILT_PRODUCTS_DIR}/$(basename "$1")" - elif [ -r "$1" ]; then - local source="$1" - fi - - local destination="${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" - - if [ -L "${source}" ]; then - echo "Symlinked..." - source="$(readlink "${source}")" - fi - - # use filter instead of exclude so missing patterns dont' throw errors - echo "rsync -av --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${destination}\"" - rsync -av --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${destination}" - - local basename - basename="$(basename -s .framework "$1")" - binary="${destination}/${basename}.framework/${basename}" - if ! [ -r "$binary" ]; then - binary="${destination}/${basename}" - fi - - # Strip invalid architectures so "fat" simulator / device frameworks work on device - if [[ "$(file "$binary")" == *"dynamically linked shared library"* ]]; then - strip_invalid_archs "$binary" - fi - - # Resign the code if required by the build settings to avoid unstable apps - code_sign_if_enabled "${destination}/$(basename "$1")" - - # Embed linked Swift runtime libraries. No longer necessary as of Xcode 7. - if [ "${XCODE_VERSION_MAJOR}" -lt 7 ]; then - local swift_runtime_libs - swift_runtime_libs=$(xcrun otool -LX "$binary" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u && exit ${PIPESTATUS[0]}) - for lib in $swift_runtime_libs; do - echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\"" - rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}" - code_sign_if_enabled "${destination}/${lib}" - done - fi -} - -# Signs a framework with the provided identity -code_sign_if_enabled() { - if [ -n "${EXPANDED_CODE_SIGN_IDENTITY}" -a "${CODE_SIGNING_REQUIRED}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then - # Use the current code_sign_identitiy - echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}" - echo "/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} --preserve-metadata=identifier,entitlements \"$1\"" - /usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} --preserve-metadata=identifier,entitlements "$1" - fi -} - -# Strip invalid architectures -strip_invalid_archs() { - binary="$1" - # Get architectures for current file - archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | rev)" - stripped="" - for arch in $archs; do - if ! [[ "${VALID_ARCHS}" == *"$arch"* ]]; then - # Strip non-valid architectures in-place - lipo -remove "$arch" -output "$binary" "$binary" || exit 1 - stripped="$stripped $arch" - fi - done - if [[ "$stripped" ]]; then - echo "Stripped $binary of architectures:$stripped" - fi -} - diff --git a/Example/Pods/Target Support Files/Pods-NYTPhotoViewer-Swift/Pods-NYTPhotoViewer-Swift-resources.sh b/Example/Pods/Target Support Files/Pods-NYTPhotoViewer-Swift/Pods-NYTPhotoViewer-Swift-resources.sh deleted file mode 100755 index f7ccb0d5..00000000 --- a/Example/Pods/Target Support Files/Pods-NYTPhotoViewer-Swift/Pods-NYTPhotoViewer-Swift-resources.sh +++ /dev/null @@ -1,101 +0,0 @@ -#!/bin/sh -set -e - -mkdir -p "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" - -RESOURCES_TO_COPY=${PODS_ROOT}/resources-to-copy-${TARGETNAME}.txt -> "$RESOURCES_TO_COPY" - -XCASSET_FILES=() - -realpath() { - DIRECTORY="$(cd "${1%/*}" && pwd)" - FILENAME="${1##*/}" - echo "$DIRECTORY/$FILENAME" -} - -install_resource() -{ - case $1 in - *.storyboard) - echo "ibtool --reference-external-strings-file --errors --warnings --notices --output-format human-readable-text --compile ${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$1\" .storyboard`.storyboardc ${PODS_ROOT}/$1 --sdk ${SDKROOT}" - ibtool --reference-external-strings-file --errors --warnings --notices --output-format human-readable-text --compile "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$1\" .storyboard`.storyboardc" "${PODS_ROOT}/$1" --sdk "${SDKROOT}" - ;; - *.xib) - echo "ibtool --reference-external-strings-file --errors --warnings --notices --output-format human-readable-text --compile ${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$1\" .xib`.nib ${PODS_ROOT}/$1 --sdk ${SDKROOT}" - ibtool --reference-external-strings-file --errors --warnings --notices --output-format human-readable-text --compile "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$1\" .xib`.nib" "${PODS_ROOT}/$1" --sdk "${SDKROOT}" - ;; - *.framework) - echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" - mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" - echo "rsync -av ${PODS_ROOT}/$1 ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" - rsync -av "${PODS_ROOT}/$1" "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" - ;; - *.xcdatamodel) - echo "xcrun momc \"${PODS_ROOT}/$1\" \"${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1"`.mom\"" - xcrun momc "${PODS_ROOT}/$1" "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1" .xcdatamodel`.mom" - ;; - *.xcdatamodeld) - echo "xcrun momc \"${PODS_ROOT}/$1\" \"${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1" .xcdatamodeld`.momd\"" - xcrun momc "${PODS_ROOT}/$1" "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1" .xcdatamodeld`.momd" - ;; - *.xcmappingmodel) - echo "xcrun mapc \"${PODS_ROOT}/$1\" \"${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1" .xcmappingmodel`.cdm\"" - xcrun mapc "${PODS_ROOT}/$1" "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1" .xcmappingmodel`.cdm" - ;; - *.xcassets) - ABSOLUTE_XCASSET_FILE=$(realpath "${PODS_ROOT}/$1") - XCASSET_FILES+=("$ABSOLUTE_XCASSET_FILE") - ;; - /*) - echo "$1" - echo "$1" >> "$RESOURCES_TO_COPY" - ;; - *) - echo "${PODS_ROOT}/$1" - echo "${PODS_ROOT}/$1" >> "$RESOURCES_TO_COPY" - ;; - esac -} -if [[ "$CONFIGURATION" == "Debug" ]]; then - install_resource "${BUILT_PRODUCTS_DIR}/NYTPhotoViewer.bundle" -fi -if [[ "$CONFIGURATION" == "Release" ]]; then - install_resource "${BUILT_PRODUCTS_DIR}/NYTPhotoViewer.bundle" -fi - -mkdir -p "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" -rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" -if [[ "${ACTION}" == "install" ]] && [[ "${SKIP_INSTALL}" == "NO" ]]; then - mkdir -p "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" - rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" -fi -rm -f "$RESOURCES_TO_COPY" - -if [[ -n "${WRAPPER_EXTENSION}" ]] && [ "`xcrun --find actool`" ] && [ -n "$XCASSET_FILES" ] -then - case "${TARGETED_DEVICE_FAMILY}" in - 1,2) - TARGET_DEVICE_ARGS="--target-device ipad --target-device iphone" - ;; - 1) - TARGET_DEVICE_ARGS="--target-device iphone" - ;; - 2) - TARGET_DEVICE_ARGS="--target-device ipad" - ;; - *) - TARGET_DEVICE_ARGS="--target-device mac" - ;; - esac - - # Find all other xcassets (this unfortunately includes those of path pods and other targets). - OTHER_XCASSETS=$(find "$PWD" -iname "*.xcassets" -type d) - while read line; do - if [[ $line != "`realpath $PODS_ROOT`*" ]]; then - XCASSET_FILES+=("$line") - fi - done <<<"$OTHER_XCASSETS" - - printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${IPHONEOS_DEPLOYMENT_TARGET}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" -fi diff --git a/Example/Pods/Target Support Files/Pods-NYTPhotoViewer-Swift/Pods-NYTPhotoViewer-Swift.debug.xcconfig b/Example/Pods/Target Support Files/Pods-NYTPhotoViewer-Swift/Pods-NYTPhotoViewer-Swift.debug.xcconfig deleted file mode 100644 index ce288fbb..00000000 --- a/Example/Pods/Target Support Files/Pods-NYTPhotoViewer-Swift/Pods-NYTPhotoViewer-Swift.debug.xcconfig +++ /dev/null @@ -1,5 +0,0 @@ -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 ANIMATED_GIF_SUPPORT=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/FLAnimatedImage" "${PODS_ROOT}/Headers/Public/NYTPhotoViewer" "${PODS_ROOT}/Headers/Public/OCMock" -OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/FLAnimatedImage" -isystem "${PODS_ROOT}/Headers/Public/NYTPhotoViewer" -isystem "${PODS_ROOT}/Headers/Public/OCMock" -OTHER_LDFLAGS = $(inherited) -ObjC -l"FLAnimatedImage" -l"NYTPhotoViewer" -framework "CoreGraphics" -framework "Foundation" -framework "ImageIO" -framework "MobileCoreServices" -framework "QuartzCore" -framework "UIKit" -PODS_ROOT = ${SRCROOT}/Pods \ No newline at end of file diff --git a/Example/Pods/Target Support Files/Pods-NYTPhotoViewer-Swift/Pods-NYTPhotoViewer-Swift.release.xcconfig b/Example/Pods/Target Support Files/Pods-NYTPhotoViewer-Swift/Pods-NYTPhotoViewer-Swift.release.xcconfig deleted file mode 100644 index ce288fbb..00000000 --- a/Example/Pods/Target Support Files/Pods-NYTPhotoViewer-Swift/Pods-NYTPhotoViewer-Swift.release.xcconfig +++ /dev/null @@ -1,5 +0,0 @@ -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 ANIMATED_GIF_SUPPORT=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/FLAnimatedImage" "${PODS_ROOT}/Headers/Public/NYTPhotoViewer" "${PODS_ROOT}/Headers/Public/OCMock" -OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/FLAnimatedImage" -isystem "${PODS_ROOT}/Headers/Public/NYTPhotoViewer" -isystem "${PODS_ROOT}/Headers/Public/OCMock" -OTHER_LDFLAGS = $(inherited) -ObjC -l"FLAnimatedImage" -l"NYTPhotoViewer" -framework "CoreGraphics" -framework "Foundation" -framework "ImageIO" -framework "MobileCoreServices" -framework "QuartzCore" -framework "UIKit" -PODS_ROOT = ${SRCROOT}/Pods \ No newline at end of file diff --git a/Example/Pods/Target Support Files/Pods-NYTPhotoViewer-SwiftTests/Pods-NYTPhotoViewer-SwiftTests-acknowledgements.markdown b/Example/Pods/Target Support Files/Pods-NYTPhotoViewer-SwiftTests/Pods-NYTPhotoViewer-SwiftTests-acknowledgements.markdown deleted file mode 100644 index ba0c2e41..00000000 --- a/Example/Pods/Target Support Files/Pods-NYTPhotoViewer-SwiftTests/Pods-NYTPhotoViewer-SwiftTests-acknowledgements.markdown +++ /dev/null @@ -1,226 +0,0 @@ -# Acknowledgements -This application makes use of the following third party libraries: - -## FLAnimatedImage - -The MIT License (MIT) - -Copyright (c) 2014-2015 Flipboard - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - -## NYTPhotoViewer - -Copyright (c) 2015 The New York Times Company - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this library except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. - - -## OCMock - - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - -Generated by CocoaPods - http://cocoapods.org diff --git a/Example/Pods/Target Support Files/Pods-NYTPhotoViewer-SwiftTests/Pods-NYTPhotoViewer-SwiftTests-acknowledgements.plist b/Example/Pods/Target Support Files/Pods-NYTPhotoViewer-SwiftTests/Pods-NYTPhotoViewer-SwiftTests-acknowledgements.plist deleted file mode 100644 index 48af7b00..00000000 --- a/Example/Pods/Target Support Files/Pods-NYTPhotoViewer-SwiftTests/Pods-NYTPhotoViewer-SwiftTests-acknowledgements.plist +++ /dev/null @@ -1,264 +0,0 @@ - - - - - PreferenceSpecifiers - - - FooterText - This application makes use of the following third party libraries: - Title - Acknowledgements - Type - PSGroupSpecifier - - - FooterText - The MIT License (MIT) - -Copyright (c) 2014-2015 Flipboard - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - Title - FLAnimatedImage - Type - PSGroupSpecifier - - - FooterText - Copyright (c) 2015 The New York Times Company - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this library except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. - - Title - NYTPhotoViewer - Type - PSGroupSpecifier - - - FooterText - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - Title - OCMock - Type - PSGroupSpecifier - - - FooterText - Generated by CocoaPods - http://cocoapods.org - Title - - Type - PSGroupSpecifier - - - StringsTable - Acknowledgements - Title - Acknowledgements - - diff --git a/Example/Pods/Target Support Files/Pods-NYTPhotoViewer-SwiftTests/Pods-NYTPhotoViewer-SwiftTests-dummy.m b/Example/Pods/Target Support Files/Pods-NYTPhotoViewer-SwiftTests/Pods-NYTPhotoViewer-SwiftTests-dummy.m deleted file mode 100644 index f22667ce..00000000 --- a/Example/Pods/Target Support Files/Pods-NYTPhotoViewer-SwiftTests/Pods-NYTPhotoViewer-SwiftTests-dummy.m +++ /dev/null @@ -1,5 +0,0 @@ -#import -@interface PodsDummy_Pods_NYTPhotoViewer_SwiftTests : NSObject -@end -@implementation PodsDummy_Pods_NYTPhotoViewer_SwiftTests -@end diff --git a/Example/Pods/Target Support Files/Pods-NYTPhotoViewer-SwiftTests/Pods-NYTPhotoViewer-SwiftTests-frameworks.sh b/Example/Pods/Target Support Files/Pods-NYTPhotoViewer-SwiftTests/Pods-NYTPhotoViewer-SwiftTests-frameworks.sh deleted file mode 100755 index 6f763443..00000000 --- a/Example/Pods/Target Support Files/Pods-NYTPhotoViewer-SwiftTests/Pods-NYTPhotoViewer-SwiftTests-frameworks.sh +++ /dev/null @@ -1,84 +0,0 @@ -#!/bin/sh -set -e - -echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" -mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" - -SWIFT_STDLIB_PATH="${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" - -install_framework() -{ - if [ -r "${BUILT_PRODUCTS_DIR}/$1" ]; then - local source="${BUILT_PRODUCTS_DIR}/$1" - elif [ -r "${BUILT_PRODUCTS_DIR}/$(basename "$1")" ]; then - local source="${BUILT_PRODUCTS_DIR}/$(basename "$1")" - elif [ -r "$1" ]; then - local source="$1" - fi - - local destination="${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" - - if [ -L "${source}" ]; then - echo "Symlinked..." - source="$(readlink "${source}")" - fi - - # use filter instead of exclude so missing patterns dont' throw errors - echo "rsync -av --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${destination}\"" - rsync -av --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${destination}" - - local basename - basename="$(basename -s .framework "$1")" - binary="${destination}/${basename}.framework/${basename}" - if ! [ -r "$binary" ]; then - binary="${destination}/${basename}" - fi - - # Strip invalid architectures so "fat" simulator / device frameworks work on device - if [[ "$(file "$binary")" == *"dynamically linked shared library"* ]]; then - strip_invalid_archs "$binary" - fi - - # Resign the code if required by the build settings to avoid unstable apps - code_sign_if_enabled "${destination}/$(basename "$1")" - - # Embed linked Swift runtime libraries. No longer necessary as of Xcode 7. - if [ "${XCODE_VERSION_MAJOR}" -lt 7 ]; then - local swift_runtime_libs - swift_runtime_libs=$(xcrun otool -LX "$binary" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u && exit ${PIPESTATUS[0]}) - for lib in $swift_runtime_libs; do - echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\"" - rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}" - code_sign_if_enabled "${destination}/${lib}" - done - fi -} - -# Signs a framework with the provided identity -code_sign_if_enabled() { - if [ -n "${EXPANDED_CODE_SIGN_IDENTITY}" -a "${CODE_SIGNING_REQUIRED}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then - # Use the current code_sign_identitiy - echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}" - echo "/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} --preserve-metadata=identifier,entitlements \"$1\"" - /usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} --preserve-metadata=identifier,entitlements "$1" - fi -} - -# Strip invalid architectures -strip_invalid_archs() { - binary="$1" - # Get architectures for current file - archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | rev)" - stripped="" - for arch in $archs; do - if ! [[ "${VALID_ARCHS}" == *"$arch"* ]]; then - # Strip non-valid architectures in-place - lipo -remove "$arch" -output "$binary" "$binary" || exit 1 - stripped="$stripped $arch" - fi - done - if [[ "$stripped" ]]; then - echo "Stripped $binary of architectures:$stripped" - fi -} - diff --git a/Example/Pods/Target Support Files/Pods-NYTPhotoViewer-SwiftTests/Pods-NYTPhotoViewer-SwiftTests-resources.sh b/Example/Pods/Target Support Files/Pods-NYTPhotoViewer-SwiftTests/Pods-NYTPhotoViewer-SwiftTests-resources.sh deleted file mode 100755 index f7ccb0d5..00000000 --- a/Example/Pods/Target Support Files/Pods-NYTPhotoViewer-SwiftTests/Pods-NYTPhotoViewer-SwiftTests-resources.sh +++ /dev/null @@ -1,101 +0,0 @@ -#!/bin/sh -set -e - -mkdir -p "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" - -RESOURCES_TO_COPY=${PODS_ROOT}/resources-to-copy-${TARGETNAME}.txt -> "$RESOURCES_TO_COPY" - -XCASSET_FILES=() - -realpath() { - DIRECTORY="$(cd "${1%/*}" && pwd)" - FILENAME="${1##*/}" - echo "$DIRECTORY/$FILENAME" -} - -install_resource() -{ - case $1 in - *.storyboard) - echo "ibtool --reference-external-strings-file --errors --warnings --notices --output-format human-readable-text --compile ${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$1\" .storyboard`.storyboardc ${PODS_ROOT}/$1 --sdk ${SDKROOT}" - ibtool --reference-external-strings-file --errors --warnings --notices --output-format human-readable-text --compile "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$1\" .storyboard`.storyboardc" "${PODS_ROOT}/$1" --sdk "${SDKROOT}" - ;; - *.xib) - echo "ibtool --reference-external-strings-file --errors --warnings --notices --output-format human-readable-text --compile ${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$1\" .xib`.nib ${PODS_ROOT}/$1 --sdk ${SDKROOT}" - ibtool --reference-external-strings-file --errors --warnings --notices --output-format human-readable-text --compile "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$1\" .xib`.nib" "${PODS_ROOT}/$1" --sdk "${SDKROOT}" - ;; - *.framework) - echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" - mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" - echo "rsync -av ${PODS_ROOT}/$1 ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" - rsync -av "${PODS_ROOT}/$1" "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" - ;; - *.xcdatamodel) - echo "xcrun momc \"${PODS_ROOT}/$1\" \"${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1"`.mom\"" - xcrun momc "${PODS_ROOT}/$1" "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1" .xcdatamodel`.mom" - ;; - *.xcdatamodeld) - echo "xcrun momc \"${PODS_ROOT}/$1\" \"${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1" .xcdatamodeld`.momd\"" - xcrun momc "${PODS_ROOT}/$1" "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1" .xcdatamodeld`.momd" - ;; - *.xcmappingmodel) - echo "xcrun mapc \"${PODS_ROOT}/$1\" \"${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1" .xcmappingmodel`.cdm\"" - xcrun mapc "${PODS_ROOT}/$1" "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1" .xcmappingmodel`.cdm" - ;; - *.xcassets) - ABSOLUTE_XCASSET_FILE=$(realpath "${PODS_ROOT}/$1") - XCASSET_FILES+=("$ABSOLUTE_XCASSET_FILE") - ;; - /*) - echo "$1" - echo "$1" >> "$RESOURCES_TO_COPY" - ;; - *) - echo "${PODS_ROOT}/$1" - echo "${PODS_ROOT}/$1" >> "$RESOURCES_TO_COPY" - ;; - esac -} -if [[ "$CONFIGURATION" == "Debug" ]]; then - install_resource "${BUILT_PRODUCTS_DIR}/NYTPhotoViewer.bundle" -fi -if [[ "$CONFIGURATION" == "Release" ]]; then - install_resource "${BUILT_PRODUCTS_DIR}/NYTPhotoViewer.bundle" -fi - -mkdir -p "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" -rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" -if [[ "${ACTION}" == "install" ]] && [[ "${SKIP_INSTALL}" == "NO" ]]; then - mkdir -p "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" - rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" -fi -rm -f "$RESOURCES_TO_COPY" - -if [[ -n "${WRAPPER_EXTENSION}" ]] && [ "`xcrun --find actool`" ] && [ -n "$XCASSET_FILES" ] -then - case "${TARGETED_DEVICE_FAMILY}" in - 1,2) - TARGET_DEVICE_ARGS="--target-device ipad --target-device iphone" - ;; - 1) - TARGET_DEVICE_ARGS="--target-device iphone" - ;; - 2) - TARGET_DEVICE_ARGS="--target-device ipad" - ;; - *) - TARGET_DEVICE_ARGS="--target-device mac" - ;; - esac - - # Find all other xcassets (this unfortunately includes those of path pods and other targets). - OTHER_XCASSETS=$(find "$PWD" -iname "*.xcassets" -type d) - while read line; do - if [[ $line != "`realpath $PODS_ROOT`*" ]]; then - XCASSET_FILES+=("$line") - fi - done <<<"$OTHER_XCASSETS" - - printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${IPHONEOS_DEPLOYMENT_TARGET}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" -fi diff --git a/Example/Pods/Target Support Files/Pods-NYTPhotoViewer-SwiftTests/Pods-NYTPhotoViewer-SwiftTests.debug.xcconfig b/Example/Pods/Target Support Files/Pods-NYTPhotoViewer-SwiftTests/Pods-NYTPhotoViewer-SwiftTests.debug.xcconfig deleted file mode 100644 index aefcf39e..00000000 --- a/Example/Pods/Target Support Files/Pods-NYTPhotoViewer-SwiftTests/Pods-NYTPhotoViewer-SwiftTests.debug.xcconfig +++ /dev/null @@ -1,5 +0,0 @@ -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 ANIMATED_GIF_SUPPORT=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/FLAnimatedImage" "${PODS_ROOT}/Headers/Public/NYTPhotoViewer" "${PODS_ROOT}/Headers/Public/OCMock" -OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/FLAnimatedImage" -isystem "${PODS_ROOT}/Headers/Public/NYTPhotoViewer" -isystem "${PODS_ROOT}/Headers/Public/OCMock" -OTHER_LDFLAGS = $(inherited) -ObjC -l"FLAnimatedImage" -l"NYTPhotoViewer" -l"OCMock" -framework "CoreGraphics" -framework "Foundation" -framework "ImageIO" -framework "MobileCoreServices" -framework "QuartzCore" -framework "UIKit" -PODS_ROOT = ${SRCROOT}/Pods \ No newline at end of file diff --git a/Example/Pods/Target Support Files/Pods-NYTPhotoViewer-SwiftTests/Pods-NYTPhotoViewer-SwiftTests.release.xcconfig b/Example/Pods/Target Support Files/Pods-NYTPhotoViewer-SwiftTests/Pods-NYTPhotoViewer-SwiftTests.release.xcconfig deleted file mode 100644 index aefcf39e..00000000 --- a/Example/Pods/Target Support Files/Pods-NYTPhotoViewer-SwiftTests/Pods-NYTPhotoViewer-SwiftTests.release.xcconfig +++ /dev/null @@ -1,5 +0,0 @@ -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 ANIMATED_GIF_SUPPORT=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/FLAnimatedImage" "${PODS_ROOT}/Headers/Public/NYTPhotoViewer" "${PODS_ROOT}/Headers/Public/OCMock" -OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/FLAnimatedImage" -isystem "${PODS_ROOT}/Headers/Public/NYTPhotoViewer" -isystem "${PODS_ROOT}/Headers/Public/OCMock" -OTHER_LDFLAGS = $(inherited) -ObjC -l"FLAnimatedImage" -l"NYTPhotoViewer" -l"OCMock" -framework "CoreGraphics" -framework "Foundation" -framework "ImageIO" -framework "MobileCoreServices" -framework "QuartzCore" -framework "UIKit" -PODS_ROOT = ${SRCROOT}/Pods \ No newline at end of file diff --git a/Example/Pods/Target Support Files/Pods-NYTPhotoViewer/Pods-NYTPhotoViewer-acknowledgements.markdown b/Example/Pods/Target Support Files/Pods-NYTPhotoViewer/Pods-NYTPhotoViewer-acknowledgements.markdown deleted file mode 100644 index b41e9dfe..00000000 --- a/Example/Pods/Target Support Files/Pods-NYTPhotoViewer/Pods-NYTPhotoViewer-acknowledgements.markdown +++ /dev/null @@ -1,45 +0,0 @@ -# Acknowledgements -This application makes use of the following third party libraries: - -## FLAnimatedImage - -The MIT License (MIT) - -Copyright (c) 2014-2015 Flipboard - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - -## NYTPhotoViewer - -Copyright (c) 2015 The New York Times Company - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this library except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. - -Generated by CocoaPods - http://cocoapods.org diff --git a/Example/Pods/Target Support Files/Pods-NYTPhotoViewer/Pods-NYTPhotoViewer-acknowledgements.plist b/Example/Pods/Target Support Files/Pods-NYTPhotoViewer/Pods-NYTPhotoViewer-acknowledgements.plist deleted file mode 100644 index 41303ec9..00000000 --- a/Example/Pods/Target Support Files/Pods-NYTPhotoViewer/Pods-NYTPhotoViewer-acknowledgements.plist +++ /dev/null @@ -1,79 +0,0 @@ - - - - - PreferenceSpecifiers - - - FooterText - This application makes use of the following third party libraries: - Title - Acknowledgements - Type - PSGroupSpecifier - - - FooterText - The MIT License (MIT) - -Copyright (c) 2014-2015 Flipboard - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - Title - FLAnimatedImage - Type - PSGroupSpecifier - - - FooterText - Copyright (c) 2015 The New York Times Company - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this library except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. - - Title - NYTPhotoViewer - Type - PSGroupSpecifier - - - FooterText - Generated by CocoaPods - http://cocoapods.org - Title - - Type - PSGroupSpecifier - - - StringsTable - Acknowledgements - Title - Acknowledgements - - diff --git a/Example/Pods/Target Support Files/Pods-NYTPhotoViewer/Pods-NYTPhotoViewer-dummy.m b/Example/Pods/Target Support Files/Pods-NYTPhotoViewer/Pods-NYTPhotoViewer-dummy.m deleted file mode 100644 index 5eb89563..00000000 --- a/Example/Pods/Target Support Files/Pods-NYTPhotoViewer/Pods-NYTPhotoViewer-dummy.m +++ /dev/null @@ -1,5 +0,0 @@ -#import -@interface PodsDummy_Pods_NYTPhotoViewer : NSObject -@end -@implementation PodsDummy_Pods_NYTPhotoViewer -@end diff --git a/Example/Pods/Target Support Files/Pods-NYTPhotoViewer/Pods-NYTPhotoViewer-frameworks.sh b/Example/Pods/Target Support Files/Pods-NYTPhotoViewer/Pods-NYTPhotoViewer-frameworks.sh deleted file mode 100755 index 6f763443..00000000 --- a/Example/Pods/Target Support Files/Pods-NYTPhotoViewer/Pods-NYTPhotoViewer-frameworks.sh +++ /dev/null @@ -1,84 +0,0 @@ -#!/bin/sh -set -e - -echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" -mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" - -SWIFT_STDLIB_PATH="${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" - -install_framework() -{ - if [ -r "${BUILT_PRODUCTS_DIR}/$1" ]; then - local source="${BUILT_PRODUCTS_DIR}/$1" - elif [ -r "${BUILT_PRODUCTS_DIR}/$(basename "$1")" ]; then - local source="${BUILT_PRODUCTS_DIR}/$(basename "$1")" - elif [ -r "$1" ]; then - local source="$1" - fi - - local destination="${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" - - if [ -L "${source}" ]; then - echo "Symlinked..." - source="$(readlink "${source}")" - fi - - # use filter instead of exclude so missing patterns dont' throw errors - echo "rsync -av --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${destination}\"" - rsync -av --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${destination}" - - local basename - basename="$(basename -s .framework "$1")" - binary="${destination}/${basename}.framework/${basename}" - if ! [ -r "$binary" ]; then - binary="${destination}/${basename}" - fi - - # Strip invalid architectures so "fat" simulator / device frameworks work on device - if [[ "$(file "$binary")" == *"dynamically linked shared library"* ]]; then - strip_invalid_archs "$binary" - fi - - # Resign the code if required by the build settings to avoid unstable apps - code_sign_if_enabled "${destination}/$(basename "$1")" - - # Embed linked Swift runtime libraries. No longer necessary as of Xcode 7. - if [ "${XCODE_VERSION_MAJOR}" -lt 7 ]; then - local swift_runtime_libs - swift_runtime_libs=$(xcrun otool -LX "$binary" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u && exit ${PIPESTATUS[0]}) - for lib in $swift_runtime_libs; do - echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\"" - rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}" - code_sign_if_enabled "${destination}/${lib}" - done - fi -} - -# Signs a framework with the provided identity -code_sign_if_enabled() { - if [ -n "${EXPANDED_CODE_SIGN_IDENTITY}" -a "${CODE_SIGNING_REQUIRED}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then - # Use the current code_sign_identitiy - echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}" - echo "/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} --preserve-metadata=identifier,entitlements \"$1\"" - /usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} --preserve-metadata=identifier,entitlements "$1" - fi -} - -# Strip invalid architectures -strip_invalid_archs() { - binary="$1" - # Get architectures for current file - archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | rev)" - stripped="" - for arch in $archs; do - if ! [[ "${VALID_ARCHS}" == *"$arch"* ]]; then - # Strip non-valid architectures in-place - lipo -remove "$arch" -output "$binary" "$binary" || exit 1 - stripped="$stripped $arch" - fi - done - if [[ "$stripped" ]]; then - echo "Stripped $binary of architectures:$stripped" - fi -} - diff --git a/Example/Pods/Target Support Files/Pods-NYTPhotoViewer/Pods-NYTPhotoViewer-resources.sh b/Example/Pods/Target Support Files/Pods-NYTPhotoViewer/Pods-NYTPhotoViewer-resources.sh deleted file mode 100755 index f7ccb0d5..00000000 --- a/Example/Pods/Target Support Files/Pods-NYTPhotoViewer/Pods-NYTPhotoViewer-resources.sh +++ /dev/null @@ -1,101 +0,0 @@ -#!/bin/sh -set -e - -mkdir -p "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" - -RESOURCES_TO_COPY=${PODS_ROOT}/resources-to-copy-${TARGETNAME}.txt -> "$RESOURCES_TO_COPY" - -XCASSET_FILES=() - -realpath() { - DIRECTORY="$(cd "${1%/*}" && pwd)" - FILENAME="${1##*/}" - echo "$DIRECTORY/$FILENAME" -} - -install_resource() -{ - case $1 in - *.storyboard) - echo "ibtool --reference-external-strings-file --errors --warnings --notices --output-format human-readable-text --compile ${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$1\" .storyboard`.storyboardc ${PODS_ROOT}/$1 --sdk ${SDKROOT}" - ibtool --reference-external-strings-file --errors --warnings --notices --output-format human-readable-text --compile "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$1\" .storyboard`.storyboardc" "${PODS_ROOT}/$1" --sdk "${SDKROOT}" - ;; - *.xib) - echo "ibtool --reference-external-strings-file --errors --warnings --notices --output-format human-readable-text --compile ${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$1\" .xib`.nib ${PODS_ROOT}/$1 --sdk ${SDKROOT}" - ibtool --reference-external-strings-file --errors --warnings --notices --output-format human-readable-text --compile "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$1\" .xib`.nib" "${PODS_ROOT}/$1" --sdk "${SDKROOT}" - ;; - *.framework) - echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" - mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" - echo "rsync -av ${PODS_ROOT}/$1 ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" - rsync -av "${PODS_ROOT}/$1" "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" - ;; - *.xcdatamodel) - echo "xcrun momc \"${PODS_ROOT}/$1\" \"${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1"`.mom\"" - xcrun momc "${PODS_ROOT}/$1" "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1" .xcdatamodel`.mom" - ;; - *.xcdatamodeld) - echo "xcrun momc \"${PODS_ROOT}/$1\" \"${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1" .xcdatamodeld`.momd\"" - xcrun momc "${PODS_ROOT}/$1" "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1" .xcdatamodeld`.momd" - ;; - *.xcmappingmodel) - echo "xcrun mapc \"${PODS_ROOT}/$1\" \"${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1" .xcmappingmodel`.cdm\"" - xcrun mapc "${PODS_ROOT}/$1" "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1" .xcmappingmodel`.cdm" - ;; - *.xcassets) - ABSOLUTE_XCASSET_FILE=$(realpath "${PODS_ROOT}/$1") - XCASSET_FILES+=("$ABSOLUTE_XCASSET_FILE") - ;; - /*) - echo "$1" - echo "$1" >> "$RESOURCES_TO_COPY" - ;; - *) - echo "${PODS_ROOT}/$1" - echo "${PODS_ROOT}/$1" >> "$RESOURCES_TO_COPY" - ;; - esac -} -if [[ "$CONFIGURATION" == "Debug" ]]; then - install_resource "${BUILT_PRODUCTS_DIR}/NYTPhotoViewer.bundle" -fi -if [[ "$CONFIGURATION" == "Release" ]]; then - install_resource "${BUILT_PRODUCTS_DIR}/NYTPhotoViewer.bundle" -fi - -mkdir -p "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" -rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" -if [[ "${ACTION}" == "install" ]] && [[ "${SKIP_INSTALL}" == "NO" ]]; then - mkdir -p "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" - rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" -fi -rm -f "$RESOURCES_TO_COPY" - -if [[ -n "${WRAPPER_EXTENSION}" ]] && [ "`xcrun --find actool`" ] && [ -n "$XCASSET_FILES" ] -then - case "${TARGETED_DEVICE_FAMILY}" in - 1,2) - TARGET_DEVICE_ARGS="--target-device ipad --target-device iphone" - ;; - 1) - TARGET_DEVICE_ARGS="--target-device iphone" - ;; - 2) - TARGET_DEVICE_ARGS="--target-device ipad" - ;; - *) - TARGET_DEVICE_ARGS="--target-device mac" - ;; - esac - - # Find all other xcassets (this unfortunately includes those of path pods and other targets). - OTHER_XCASSETS=$(find "$PWD" -iname "*.xcassets" -type d) - while read line; do - if [[ $line != "`realpath $PODS_ROOT`*" ]]; then - XCASSET_FILES+=("$line") - fi - done <<<"$OTHER_XCASSETS" - - printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${IPHONEOS_DEPLOYMENT_TARGET}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" -fi diff --git a/Example/Pods/Target Support Files/Pods-NYTPhotoViewer/Pods-NYTPhotoViewer.debug.xcconfig b/Example/Pods/Target Support Files/Pods-NYTPhotoViewer/Pods-NYTPhotoViewer.debug.xcconfig deleted file mode 100644 index ce288fbb..00000000 --- a/Example/Pods/Target Support Files/Pods-NYTPhotoViewer/Pods-NYTPhotoViewer.debug.xcconfig +++ /dev/null @@ -1,5 +0,0 @@ -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 ANIMATED_GIF_SUPPORT=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/FLAnimatedImage" "${PODS_ROOT}/Headers/Public/NYTPhotoViewer" "${PODS_ROOT}/Headers/Public/OCMock" -OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/FLAnimatedImage" -isystem "${PODS_ROOT}/Headers/Public/NYTPhotoViewer" -isystem "${PODS_ROOT}/Headers/Public/OCMock" -OTHER_LDFLAGS = $(inherited) -ObjC -l"FLAnimatedImage" -l"NYTPhotoViewer" -framework "CoreGraphics" -framework "Foundation" -framework "ImageIO" -framework "MobileCoreServices" -framework "QuartzCore" -framework "UIKit" -PODS_ROOT = ${SRCROOT}/Pods \ No newline at end of file diff --git a/Example/Pods/Target Support Files/Pods-NYTPhotoViewer/Pods-NYTPhotoViewer.release.xcconfig b/Example/Pods/Target Support Files/Pods-NYTPhotoViewer/Pods-NYTPhotoViewer.release.xcconfig deleted file mode 100644 index ce288fbb..00000000 --- a/Example/Pods/Target Support Files/Pods-NYTPhotoViewer/Pods-NYTPhotoViewer.release.xcconfig +++ /dev/null @@ -1,5 +0,0 @@ -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 ANIMATED_GIF_SUPPORT=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/FLAnimatedImage" "${PODS_ROOT}/Headers/Public/NYTPhotoViewer" "${PODS_ROOT}/Headers/Public/OCMock" -OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/FLAnimatedImage" -isystem "${PODS_ROOT}/Headers/Public/NYTPhotoViewer" -isystem "${PODS_ROOT}/Headers/Public/OCMock" -OTHER_LDFLAGS = $(inherited) -ObjC -l"FLAnimatedImage" -l"NYTPhotoViewer" -framework "CoreGraphics" -framework "Foundation" -framework "ImageIO" -framework "MobileCoreServices" -framework "QuartzCore" -framework "UIKit" -PODS_ROOT = ${SRCROOT}/Pods \ No newline at end of file diff --git a/Example/Pods/Target Support Files/Pods-Tests/Pods-Tests-acknowledgements.markdown b/Example/Pods/Target Support Files/Pods-Tests/Pods-Tests-acknowledgements.markdown deleted file mode 100644 index ba0c2e41..00000000 --- a/Example/Pods/Target Support Files/Pods-Tests/Pods-Tests-acknowledgements.markdown +++ /dev/null @@ -1,226 +0,0 @@ -# Acknowledgements -This application makes use of the following third party libraries: - -## FLAnimatedImage - -The MIT License (MIT) - -Copyright (c) 2014-2015 Flipboard - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - -## NYTPhotoViewer - -Copyright (c) 2015 The New York Times Company - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this library except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. - - -## OCMock - - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - -Generated by CocoaPods - http://cocoapods.org diff --git a/Example/Pods/Target Support Files/Pods-Tests/Pods-Tests-acknowledgements.plist b/Example/Pods/Target Support Files/Pods-Tests/Pods-Tests-acknowledgements.plist deleted file mode 100644 index 48af7b00..00000000 --- a/Example/Pods/Target Support Files/Pods-Tests/Pods-Tests-acknowledgements.plist +++ /dev/null @@ -1,264 +0,0 @@ - - - - - PreferenceSpecifiers - - - FooterText - This application makes use of the following third party libraries: - Title - Acknowledgements - Type - PSGroupSpecifier - - - FooterText - The MIT License (MIT) - -Copyright (c) 2014-2015 Flipboard - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - Title - FLAnimatedImage - Type - PSGroupSpecifier - - - FooterText - Copyright (c) 2015 The New York Times Company - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this library except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. - - Title - NYTPhotoViewer - Type - PSGroupSpecifier - - - FooterText - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - Title - OCMock - Type - PSGroupSpecifier - - - FooterText - Generated by CocoaPods - http://cocoapods.org - Title - - Type - PSGroupSpecifier - - - StringsTable - Acknowledgements - Title - Acknowledgements - - diff --git a/Example/Pods/Target Support Files/Pods-Tests/Pods-Tests-dummy.m b/Example/Pods/Target Support Files/Pods-Tests/Pods-Tests-dummy.m deleted file mode 100644 index 4093c7ba..00000000 --- a/Example/Pods/Target Support Files/Pods-Tests/Pods-Tests-dummy.m +++ /dev/null @@ -1,5 +0,0 @@ -#import -@interface PodsDummy_Pods_Tests : NSObject -@end -@implementation PodsDummy_Pods_Tests -@end diff --git a/Example/Pods/Target Support Files/Pods-Tests/Pods-Tests-frameworks.sh b/Example/Pods/Target Support Files/Pods-Tests/Pods-Tests-frameworks.sh deleted file mode 100755 index 6f763443..00000000 --- a/Example/Pods/Target Support Files/Pods-Tests/Pods-Tests-frameworks.sh +++ /dev/null @@ -1,84 +0,0 @@ -#!/bin/sh -set -e - -echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" -mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" - -SWIFT_STDLIB_PATH="${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" - -install_framework() -{ - if [ -r "${BUILT_PRODUCTS_DIR}/$1" ]; then - local source="${BUILT_PRODUCTS_DIR}/$1" - elif [ -r "${BUILT_PRODUCTS_DIR}/$(basename "$1")" ]; then - local source="${BUILT_PRODUCTS_DIR}/$(basename "$1")" - elif [ -r "$1" ]; then - local source="$1" - fi - - local destination="${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" - - if [ -L "${source}" ]; then - echo "Symlinked..." - source="$(readlink "${source}")" - fi - - # use filter instead of exclude so missing patterns dont' throw errors - echo "rsync -av --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${destination}\"" - rsync -av --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${destination}" - - local basename - basename="$(basename -s .framework "$1")" - binary="${destination}/${basename}.framework/${basename}" - if ! [ -r "$binary" ]; then - binary="${destination}/${basename}" - fi - - # Strip invalid architectures so "fat" simulator / device frameworks work on device - if [[ "$(file "$binary")" == *"dynamically linked shared library"* ]]; then - strip_invalid_archs "$binary" - fi - - # Resign the code if required by the build settings to avoid unstable apps - code_sign_if_enabled "${destination}/$(basename "$1")" - - # Embed linked Swift runtime libraries. No longer necessary as of Xcode 7. - if [ "${XCODE_VERSION_MAJOR}" -lt 7 ]; then - local swift_runtime_libs - swift_runtime_libs=$(xcrun otool -LX "$binary" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u && exit ${PIPESTATUS[0]}) - for lib in $swift_runtime_libs; do - echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\"" - rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}" - code_sign_if_enabled "${destination}/${lib}" - done - fi -} - -# Signs a framework with the provided identity -code_sign_if_enabled() { - if [ -n "${EXPANDED_CODE_SIGN_IDENTITY}" -a "${CODE_SIGNING_REQUIRED}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then - # Use the current code_sign_identitiy - echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}" - echo "/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} --preserve-metadata=identifier,entitlements \"$1\"" - /usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} --preserve-metadata=identifier,entitlements "$1" - fi -} - -# Strip invalid architectures -strip_invalid_archs() { - binary="$1" - # Get architectures for current file - archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | rev)" - stripped="" - for arch in $archs; do - if ! [[ "${VALID_ARCHS}" == *"$arch"* ]]; then - # Strip non-valid architectures in-place - lipo -remove "$arch" -output "$binary" "$binary" || exit 1 - stripped="$stripped $arch" - fi - done - if [[ "$stripped" ]]; then - echo "Stripped $binary of architectures:$stripped" - fi -} - diff --git a/Example/Pods/Target Support Files/Pods-Tests/Pods-Tests-resources.sh b/Example/Pods/Target Support Files/Pods-Tests/Pods-Tests-resources.sh deleted file mode 100755 index f7ccb0d5..00000000 --- a/Example/Pods/Target Support Files/Pods-Tests/Pods-Tests-resources.sh +++ /dev/null @@ -1,101 +0,0 @@ -#!/bin/sh -set -e - -mkdir -p "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" - -RESOURCES_TO_COPY=${PODS_ROOT}/resources-to-copy-${TARGETNAME}.txt -> "$RESOURCES_TO_COPY" - -XCASSET_FILES=() - -realpath() { - DIRECTORY="$(cd "${1%/*}" && pwd)" - FILENAME="${1##*/}" - echo "$DIRECTORY/$FILENAME" -} - -install_resource() -{ - case $1 in - *.storyboard) - echo "ibtool --reference-external-strings-file --errors --warnings --notices --output-format human-readable-text --compile ${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$1\" .storyboard`.storyboardc ${PODS_ROOT}/$1 --sdk ${SDKROOT}" - ibtool --reference-external-strings-file --errors --warnings --notices --output-format human-readable-text --compile "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$1\" .storyboard`.storyboardc" "${PODS_ROOT}/$1" --sdk "${SDKROOT}" - ;; - *.xib) - echo "ibtool --reference-external-strings-file --errors --warnings --notices --output-format human-readable-text --compile ${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$1\" .xib`.nib ${PODS_ROOT}/$1 --sdk ${SDKROOT}" - ibtool --reference-external-strings-file --errors --warnings --notices --output-format human-readable-text --compile "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$1\" .xib`.nib" "${PODS_ROOT}/$1" --sdk "${SDKROOT}" - ;; - *.framework) - echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" - mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" - echo "rsync -av ${PODS_ROOT}/$1 ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" - rsync -av "${PODS_ROOT}/$1" "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" - ;; - *.xcdatamodel) - echo "xcrun momc \"${PODS_ROOT}/$1\" \"${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1"`.mom\"" - xcrun momc "${PODS_ROOT}/$1" "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1" .xcdatamodel`.mom" - ;; - *.xcdatamodeld) - echo "xcrun momc \"${PODS_ROOT}/$1\" \"${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1" .xcdatamodeld`.momd\"" - xcrun momc "${PODS_ROOT}/$1" "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1" .xcdatamodeld`.momd" - ;; - *.xcmappingmodel) - echo "xcrun mapc \"${PODS_ROOT}/$1\" \"${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1" .xcmappingmodel`.cdm\"" - xcrun mapc "${PODS_ROOT}/$1" "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1" .xcmappingmodel`.cdm" - ;; - *.xcassets) - ABSOLUTE_XCASSET_FILE=$(realpath "${PODS_ROOT}/$1") - XCASSET_FILES+=("$ABSOLUTE_XCASSET_FILE") - ;; - /*) - echo "$1" - echo "$1" >> "$RESOURCES_TO_COPY" - ;; - *) - echo "${PODS_ROOT}/$1" - echo "${PODS_ROOT}/$1" >> "$RESOURCES_TO_COPY" - ;; - esac -} -if [[ "$CONFIGURATION" == "Debug" ]]; then - install_resource "${BUILT_PRODUCTS_DIR}/NYTPhotoViewer.bundle" -fi -if [[ "$CONFIGURATION" == "Release" ]]; then - install_resource "${BUILT_PRODUCTS_DIR}/NYTPhotoViewer.bundle" -fi - -mkdir -p "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" -rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" -if [[ "${ACTION}" == "install" ]] && [[ "${SKIP_INSTALL}" == "NO" ]]; then - mkdir -p "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" - rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" -fi -rm -f "$RESOURCES_TO_COPY" - -if [[ -n "${WRAPPER_EXTENSION}" ]] && [ "`xcrun --find actool`" ] && [ -n "$XCASSET_FILES" ] -then - case "${TARGETED_DEVICE_FAMILY}" in - 1,2) - TARGET_DEVICE_ARGS="--target-device ipad --target-device iphone" - ;; - 1) - TARGET_DEVICE_ARGS="--target-device iphone" - ;; - 2) - TARGET_DEVICE_ARGS="--target-device ipad" - ;; - *) - TARGET_DEVICE_ARGS="--target-device mac" - ;; - esac - - # Find all other xcassets (this unfortunately includes those of path pods and other targets). - OTHER_XCASSETS=$(find "$PWD" -iname "*.xcassets" -type d) - while read line; do - if [[ $line != "`realpath $PODS_ROOT`*" ]]; then - XCASSET_FILES+=("$line") - fi - done <<<"$OTHER_XCASSETS" - - printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${IPHONEOS_DEPLOYMENT_TARGET}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" -fi diff --git a/Example/Pods/Target Support Files/Pods-Tests/Pods-Tests.debug.xcconfig b/Example/Pods/Target Support Files/Pods-Tests/Pods-Tests.debug.xcconfig deleted file mode 100644 index aefcf39e..00000000 --- a/Example/Pods/Target Support Files/Pods-Tests/Pods-Tests.debug.xcconfig +++ /dev/null @@ -1,5 +0,0 @@ -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 ANIMATED_GIF_SUPPORT=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/FLAnimatedImage" "${PODS_ROOT}/Headers/Public/NYTPhotoViewer" "${PODS_ROOT}/Headers/Public/OCMock" -OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/FLAnimatedImage" -isystem "${PODS_ROOT}/Headers/Public/NYTPhotoViewer" -isystem "${PODS_ROOT}/Headers/Public/OCMock" -OTHER_LDFLAGS = $(inherited) -ObjC -l"FLAnimatedImage" -l"NYTPhotoViewer" -l"OCMock" -framework "CoreGraphics" -framework "Foundation" -framework "ImageIO" -framework "MobileCoreServices" -framework "QuartzCore" -framework "UIKit" -PODS_ROOT = ${SRCROOT}/Pods \ No newline at end of file diff --git a/Example/Pods/Target Support Files/Pods-Tests/Pods-Tests.release.xcconfig b/Example/Pods/Target Support Files/Pods-Tests/Pods-Tests.release.xcconfig deleted file mode 100644 index aefcf39e..00000000 --- a/Example/Pods/Target Support Files/Pods-Tests/Pods-Tests.release.xcconfig +++ /dev/null @@ -1,5 +0,0 @@ -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 ANIMATED_GIF_SUPPORT=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/FLAnimatedImage" "${PODS_ROOT}/Headers/Public/NYTPhotoViewer" "${PODS_ROOT}/Headers/Public/OCMock" -OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/FLAnimatedImage" -isystem "${PODS_ROOT}/Headers/Public/NYTPhotoViewer" -isystem "${PODS_ROOT}/Headers/Public/OCMock" -OTHER_LDFLAGS = $(inherited) -ObjC -l"FLAnimatedImage" -l"NYTPhotoViewer" -l"OCMock" -framework "CoreGraphics" -framework "Foundation" -framework "ImageIO" -framework "MobileCoreServices" -framework "QuartzCore" -framework "UIKit" -PODS_ROOT = ${SRCROOT}/Pods \ No newline at end of file diff --git a/Example/Tests/Tests-Prefix.pch b/Example/Tests/Tests-Prefix.pch deleted file mode 100644 index 55d2257d..00000000 --- a/Example/Tests/Tests-Prefix.pch +++ /dev/null @@ -1,11 +0,0 @@ -// -// Prefix header -// -// The contents of this file are implicitly included at the beginning of every test case source file. -// - -#ifdef __OBJC__ - - - -#endif diff --git a/Example/Tests/en.lproj/InfoPlist.strings b/Example/Tests/en.lproj/InfoPlist.strings deleted file mode 100644 index 477b28ff..00000000 --- a/Example/Tests/en.lproj/InfoPlist.strings +++ /dev/null @@ -1,2 +0,0 @@ -/* Localized versions of Info.plist keys */ - diff --git a/Example/NYTPhotoViewer/giphy.gif b/Example/giphy.gif similarity index 100% rename from Example/NYTPhotoViewer/giphy.gif rename to Example/giphy.gif diff --git a/Example/main.m b/Example/main.m new file mode 100644 index 00000000..95d99ed7 --- /dev/null +++ b/Example/main.m @@ -0,0 +1,16 @@ +// +// main.m +// Example +// +// Created by David Beck on 3/2/16. +// Copyright © 2016 NYTimes. All rights reserved. +// + +#import +#import "NYTAppDelegate.h" + +int main(int argc, char * argv[]) { + @autoreleasepool { + return UIApplicationMain(argc, argv, nil, NSStringFromClass([NYTAppDelegate class])); + } +} diff --git a/NYTPhotoViewer.podspec b/NYTPhotoViewer.podspec index b2c71a83..25eb1533 100644 --- a/NYTPhotoViewer.podspec +++ b/NYTPhotoViewer.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = "NYTPhotoViewer" - s.version = "1.1.0" + s.version = "1.2.0" s.description = <<-DESC NYTPhotoViewer is a slideshow and image viewer that includes double tap to zoom, captions, support for multiple images, interactive flick to dismiss, animated zooming presentation, and more. @@ -16,8 +16,8 @@ Pod::Spec.new do |s| s.requires_arc = true s.subspec 'Core' do |ss| - ss.ios.resource_bundle = { s.name => ['Pod/Assets/ios/*.png'] } - ss.source_files = 'Pod/Classes/**/*' + ss.ios.resource_bundle = { s.name => ['NYTPhotoViewer/NYTPhotoViewer.bundle/*'] } + ss.source_files = 'NYTPhotoViewer/**/*.{h,m,swift}' ss.frameworks = 'UIKit', 'Foundation' end @@ -25,7 +25,7 @@ Pod::Spec.new do |s| ss.xcconfig = { 'GCC_PREPROCESSOR_DEFINITIONS' => 'ANIMATED_GIF_SUPPORT=1'} ss.dependency 'NYTPhotoViewer/Core' - ss.dependency 'FLAnimatedImage', '~> 1.0.8' + ss.dependency 'FLAnimatedImage', '~> 1.0.12' end end diff --git a/NYTPhotoViewer.xcodeproj/NYTPhotoViewer.xcworkspace/contents.xcworkspacedata b/NYTPhotoViewer.xcodeproj/NYTPhotoViewer.xcworkspace/contents.xcworkspacedata new file mode 100644 index 00000000..24ab27b4 --- /dev/null +++ b/NYTPhotoViewer.xcodeproj/NYTPhotoViewer.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/NYTPhotoViewer.xcodeproj/project.pbxproj b/NYTPhotoViewer.xcodeproj/project.pbxproj new file mode 100644 index 00000000..95143a45 --- /dev/null +++ b/NYTPhotoViewer.xcodeproj/project.pbxproj @@ -0,0 +1,1249 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 1110840A1C875B5000699670 /* NYTPhotoViewer.h in Headers */ = {isa = PBXBuildFile; fileRef = 111084091C875B5000699670 /* NYTPhotoViewer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 111084111C875B5000699670 /* NYTPhotoViewer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 111084061C875B5000699670 /* NYTPhotoViewer.framework */; }; + 1110842D1C8767BA00699670 /* NYTPhotoCaptionViewTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 111084261C8767BA00699670 /* NYTPhotoCaptionViewTests.m */; }; + 1110842E1C8767BA00699670 /* NYTPhotosDataSourceTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 111084271C8767BA00699670 /* NYTPhotosDataSourceTests.m */; }; + 1110842F1C8767BA00699670 /* NYTPhotosOverlayViewTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 111084281C8767BA00699670 /* NYTPhotosOverlayViewTests.m */; }; + 111084301C8767BA00699670 /* NYTPhotosViewControllerTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 111084291C8767BA00699670 /* NYTPhotosViewControllerTests.m */; }; + 111084311C8767BA00699670 /* NYTPhotoTransitionAnimatorTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 1110842A1C8767BA00699670 /* NYTPhotoTransitionAnimatorTests.m */; }; + 111084321C8767BA00699670 /* NYTPhotoViewControllerTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 1110842B1C8767BA00699670 /* NYTPhotoViewControllerTests.m */; }; + 111084331C8767BA00699670 /* NYTScalingImageViewTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 1110842C1C8767BA00699670 /* NYTScalingImageViewTests.m */; }; + 1110844D1C87682300699670 /* NYTPhotoCaptionView.m in Sources */ = {isa = PBXBuildFile; fileRef = 111084341C87682300699670 /* NYTPhotoCaptionView.m */; }; + 1110844E1C87682300699670 /* NYTPhotoDismissalInteractionController.h in Headers */ = {isa = PBXBuildFile; fileRef = 111084351C87682300699670 /* NYTPhotoDismissalInteractionController.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1110844F1C87682300699670 /* NYTPhotoDismissalInteractionController.m in Sources */ = {isa = PBXBuildFile; fileRef = 111084361C87682300699670 /* NYTPhotoDismissalInteractionController.m */; }; + 111084501C87682300699670 /* NYTPhotosDataSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 111084371C87682300699670 /* NYTPhotosDataSource.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 111084511C87682300699670 /* NYTPhotosDataSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 111084381C87682300699670 /* NYTPhotosDataSource.m */; }; + 111084521C87682300699670 /* NYTPhotosOverlayView.h in Headers */ = {isa = PBXBuildFile; fileRef = 111084391C87682300699670 /* NYTPhotosOverlayView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 111084531C87682300699670 /* NYTPhotosOverlayView.m in Sources */ = {isa = PBXBuildFile; fileRef = 1110843A1C87682300699670 /* NYTPhotosOverlayView.m */; }; + 111084541C87682300699670 /* NYTPhotosViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 1110843B1C87682300699670 /* NYTPhotosViewController.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 111084551C87682300699670 /* NYTPhotosViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 1110843C1C87682300699670 /* NYTPhotosViewController.m */; }; + 111084561C87682300699670 /* NYTPhotoTransitionAnimator.h in Headers */ = {isa = PBXBuildFile; fileRef = 1110843D1C87682300699670 /* NYTPhotoTransitionAnimator.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 111084571C87682300699670 /* NYTPhotoTransitionAnimator.m in Sources */ = {isa = PBXBuildFile; fileRef = 1110843E1C87682300699670 /* NYTPhotoTransitionAnimator.m */; }; + 111084581C87682300699670 /* NYTPhotoTransitionController.h in Headers */ = {isa = PBXBuildFile; fileRef = 1110843F1C87682300699670 /* NYTPhotoTransitionController.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 111084591C87682300699670 /* NYTPhotoTransitionController.m in Sources */ = {isa = PBXBuildFile; fileRef = 111084401C87682300699670 /* NYTPhotoTransitionController.m */; }; + 1110845A1C87682300699670 /* NYTPhotoViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 111084411C87682300699670 /* NYTPhotoViewController.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1110845B1C87682300699670 /* NYTPhotoViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 111084421C87682300699670 /* NYTPhotoViewController.m */; }; + 1110845C1C87682300699670 /* NYTScalingImageView.h in Headers */ = {isa = PBXBuildFile; fileRef = 111084431C87682300699670 /* NYTScalingImageView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1110845D1C87682300699670 /* NYTScalingImageView.m in Sources */ = {isa = PBXBuildFile; fileRef = 111084441C87682300699670 /* NYTScalingImageView.m */; }; + 1110845E1C87682300699670 /* NYTPhoto.h in Headers */ = {isa = PBXBuildFile; fileRef = 111084461C87682300699670 /* NYTPhoto.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1110845F1C87682300699670 /* NYTPhotoCaptionViewLayoutWidthHinting.h in Headers */ = {isa = PBXBuildFile; fileRef = 111084471C87682300699670 /* NYTPhotoCaptionViewLayoutWidthHinting.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 111084601C87682300699670 /* NYTPhotoContainer.h in Headers */ = {isa = PBXBuildFile; fileRef = 111084481C87682300699670 /* NYTPhotoContainer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 111084611C87682300699670 /* NYTPhotosViewControllerDataSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 111084491C87682300699670 /* NYTPhotosViewControllerDataSource.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 111084621C87682300699670 /* NSBundle+NYTPhotoViewer.h in Headers */ = {isa = PBXBuildFile; fileRef = 1110844B1C87682300699670 /* NSBundle+NYTPhotoViewer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 111084631C87682300699670 /* NSBundle+NYTPhotoViewer.m in Sources */ = {isa = PBXBuildFile; fileRef = 1110844C1C87682300699670 /* NSBundle+NYTPhotoViewer.m */; }; + 111084651C87684D00699670 /* NYTPhotoCaptionView.h in Headers */ = {isa = PBXBuildFile; fileRef = 111084641C87684D00699670 /* NYTPhotoCaptionView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1110846E1C876A2B00699670 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 1110846D1C876A2B00699670 /* main.m */; }; + 111084791C876A2B00699670 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 111084781C876A2B00699670 /* Assets.xcassets */; }; + 1110847C1C876A2B00699670 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 1110847A1C876A2B00699670 /* LaunchScreen.storyboard */; }; + 111084831C876AA500699670 /* NYTExamplePhoto.m in Sources */ = {isa = PBXBuildFile; fileRef = 111084821C876AA500699670 /* NYTExamplePhoto.m */; }; + 111084841C876AAD00699670 /* NYTExamplePhoto.m in Sources */ = {isa = PBXBuildFile; fileRef = 111084821C876AA500699670 /* NYTExamplePhoto.m */; }; + 111084861C876B0400699670 /* giphy.gif in Resources */ = {isa = PBXBuildFile; fileRef = 111084851C876B0400699670 /* giphy.gif */; }; + 111084871C876B0400699670 /* giphy.gif in Resources */ = {isa = PBXBuildFile; fileRef = 111084851C876B0400699670 /* giphy.gif */; }; + 1110848C1C876CC900699670 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 1110848E1C876CC900699670 /* Main.storyboard */; }; + 111084911C876CE000699670 /* NYTAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 111084901C876CE000699670 /* NYTAppDelegate.m */; }; + 111084941C876D1900699670 /* NYTViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 111084931C876D1900699670 /* NYTViewController.m */; }; + 111084971C876DD300699670 /* NYTPhotoViewer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 111084061C875B5000699670 /* NYTPhotoViewer.framework */; }; + 111084991C876DDE00699670 /* NYTPhotoViewer.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 111084061C875B5000699670 /* NYTPhotoViewer.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 11BA4AF01C89128C0007EC46 /* FLAnimatedImage.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 11BA4AEB1C8911A00007EC46 /* FLAnimatedImage.framework */; }; + 11BA4AF11C8912980007EC46 /* FLAnimatedImage.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 11BA4AEB1C8911A00007EC46 /* FLAnimatedImage.framework */; }; + 11BA4AF21C8912980007EC46 /* FLAnimatedImage.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 11BA4AEB1C8911A00007EC46 /* FLAnimatedImage.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 11BA4B0A1C8913220007EC46 /* OCMock.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 11BA4B071C8912F20007EC46 /* OCMock.framework */; }; + 11BA4B0C1C8913590007EC46 /* FLAnimatedImage.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 11BA4AEB1C8911A00007EC46 /* FLAnimatedImage.framework */; }; + 11BA4B0D1C8913590007EC46 /* FLAnimatedImage.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 11BA4AEB1C8911A00007EC46 /* FLAnimatedImage.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 11FBDA7A1C87714600018169 /* NYTPhotoViewer.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 11FBDA791C87714600018169 /* NYTPhotoViewer.bundle */; }; + 11FBDA8C1C87753200018169 /* NYTPhotoCaptionView.h in Headers */ = {isa = PBXBuildFile; fileRef = 111084641C87684D00699670 /* NYTPhotoCaptionView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 11FBDA8D1C87753200018169 /* NYTPhotoCaptionView.m in Sources */ = {isa = PBXBuildFile; fileRef = 111084341C87682300699670 /* NYTPhotoCaptionView.m */; }; + 11FBDA8E1C87753200018169 /* NYTPhotoDismissalInteractionController.h in Headers */ = {isa = PBXBuildFile; fileRef = 111084351C87682300699670 /* NYTPhotoDismissalInteractionController.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 11FBDA8F1C87753200018169 /* NYTPhotoDismissalInteractionController.m in Sources */ = {isa = PBXBuildFile; fileRef = 111084361C87682300699670 /* NYTPhotoDismissalInteractionController.m */; }; + 11FBDA901C87753200018169 /* NYTPhotosDataSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 111084371C87682300699670 /* NYTPhotosDataSource.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 11FBDA911C87753200018169 /* NYTPhotosDataSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 111084381C87682300699670 /* NYTPhotosDataSource.m */; }; + 11FBDA921C87753200018169 /* NYTPhotosOverlayView.h in Headers */ = {isa = PBXBuildFile; fileRef = 111084391C87682300699670 /* NYTPhotosOverlayView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 11FBDA931C87753200018169 /* NYTPhotosOverlayView.m in Sources */ = {isa = PBXBuildFile; fileRef = 1110843A1C87682300699670 /* NYTPhotosOverlayView.m */; }; + 11FBDA941C87753200018169 /* NYTPhotosViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 1110843B1C87682300699670 /* NYTPhotosViewController.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 11FBDA951C87753200018169 /* NYTPhotosViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 1110843C1C87682300699670 /* NYTPhotosViewController.m */; }; + 11FBDA961C87753200018169 /* NYTPhotoTransitionAnimator.h in Headers */ = {isa = PBXBuildFile; fileRef = 1110843D1C87682300699670 /* NYTPhotoTransitionAnimator.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 11FBDA971C87753200018169 /* NYTPhotoTransitionAnimator.m in Sources */ = {isa = PBXBuildFile; fileRef = 1110843E1C87682300699670 /* NYTPhotoTransitionAnimator.m */; }; + 11FBDA981C87753200018169 /* NYTPhotoTransitionController.h in Headers */ = {isa = PBXBuildFile; fileRef = 1110843F1C87682300699670 /* NYTPhotoTransitionController.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 11FBDA991C87753200018169 /* NYTPhotoTransitionController.m in Sources */ = {isa = PBXBuildFile; fileRef = 111084401C87682300699670 /* NYTPhotoTransitionController.m */; }; + 11FBDA9A1C87753200018169 /* NYTPhotoViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 111084411C87682300699670 /* NYTPhotoViewController.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 11FBDA9B1C87753200018169 /* NYTPhotoViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 111084421C87682300699670 /* NYTPhotoViewController.m */; }; + 11FBDA9C1C87753200018169 /* NYTScalingImageView.h in Headers */ = {isa = PBXBuildFile; fileRef = 111084431C87682300699670 /* NYTScalingImageView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 11FBDA9D1C87753200018169 /* NYTScalingImageView.m in Sources */ = {isa = PBXBuildFile; fileRef = 111084441C87682300699670 /* NYTScalingImageView.m */; }; + 11FBDA9E1C87753200018169 /* NYTPhoto.h in Headers */ = {isa = PBXBuildFile; fileRef = 111084461C87682300699670 /* NYTPhoto.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 11FBDA9F1C87753200018169 /* NYTPhotoCaptionViewLayoutWidthHinting.h in Headers */ = {isa = PBXBuildFile; fileRef = 111084471C87682300699670 /* NYTPhotoCaptionViewLayoutWidthHinting.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 11FBDAA01C87753200018169 /* NYTPhotoContainer.h in Headers */ = {isa = PBXBuildFile; fileRef = 111084481C87682300699670 /* NYTPhotoContainer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 11FBDAA11C87753200018169 /* NYTPhotosViewControllerDataSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 111084491C87682300699670 /* NYTPhotosViewControllerDataSource.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 11FBDAA21C87753200018169 /* NSBundle+NYTPhotoViewer.h in Headers */ = {isa = PBXBuildFile; fileRef = 1110844B1C87682300699670 /* NSBundle+NYTPhotoViewer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 11FBDAA31C87753200018169 /* NSBundle+NYTPhotoViewer.m in Sources */ = {isa = PBXBuildFile; fileRef = 1110844C1C87682300699670 /* NSBundle+NYTPhotoViewer.m */; }; + 11FBDAA41C87754A00018169 /* NYTPhotoViewer.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 11FBDA791C87714600018169 /* NYTPhotoViewer.bundle */; }; + 11FBDAA61C87768B00018169 /* NYTPhotoViewerCore.h in Headers */ = {isa = PBXBuildFile; fileRef = 11FBDAA51C87768700018169 /* NYTPhotoViewerCore.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 11FBDADF1C877BD600018169 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 11FBDADE1C877BD600018169 /* AppDelegate.swift */; }; + 11FBDAE11C877BD600018169 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 11FBDAE01C877BD600018169 /* ViewController.swift */; }; + 11FBDAE41C877BD600018169 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 11FBDAE21C877BD600018169 /* Main.storyboard */; }; + 11FBDAEF1C877C5D00018169 /* ExamplePhoto.swift in Sources */ = {isa = PBXBuildFile; fileRef = 11FBDAEE1C877C5D00018169 /* ExamplePhoto.swift */; }; + 11FBDAF11C877C8B00018169 /* PhotosProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 11FBDAF01C877C8B00018169 /* PhotosProvider.swift */; }; + 11FBDAF71C877CEF00018169 /* NYTPhotoViewer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 111084061C875B5000699670 /* NYTPhotoViewer.framework */; }; + 11FBDAF81C877CEF00018169 /* NYTPhotoViewer.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 111084061C875B5000699670 /* NYTPhotoViewer.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 11FBDAFD1C877D9A00018169 /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = 11FBDAFB1C877D9A00018169 /* LaunchScreen.xib */; }; + 11FBDAFE1C877F5500018169 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 111084781C876A2B00699670 /* Assets.xcassets */; }; + 11FBDAFF1C877F8000018169 /* giphy.gif in Resources */ = {isa = PBXBuildFile; fileRef = 111084851C876B0400699670 /* giphy.gif */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 111084121C875B5000699670 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 111083FD1C875B4F00699670 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 111084051C875B5000699670; + remoteInfo = NYTPhotoViewer; + }; + 1110849A1C876DDE00699670 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 111083FD1C875B4F00699670 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 111084051C875B5000699670; + remoteInfo = NYTPhotoViewer; + }; + 11BA4AEA1C8911A00007EC46 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 11BA4AE61C8911A00007EC46 /* FLAnimatedImage.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 92C9BC0C1B199DC500D79B06; + remoteInfo = FLAnimatedImage; + }; + 11BA4AEC1C8912530007EC46 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 11BA4AE61C8911A00007EC46 /* FLAnimatedImage.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 92C9BC0B1B199DC500D79B06; + remoteInfo = FLAnimatedImage; + }; + 11BA4AEE1C8912600007EC46 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 11BA4AE61C8911A00007EC46 /* FLAnimatedImage.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 92C9BC0B1B199DC500D79B06; + remoteInfo = FLAnimatedImage; + }; + 11BA4AF31C8912980007EC46 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 11BA4AE61C8911A00007EC46 /* FLAnimatedImage.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 92C9BC0B1B199DC500D79B06; + remoteInfo = FLAnimatedImage; + }; + 11BA4AFE1C8912F20007EC46 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 11BA4AF51C8912F20007EC46 /* OCMock.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 030EF0A814632FD000B04273; + remoteInfo = OCMock; + }; + 11BA4B001C8912F20007EC46 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 11BA4AF51C8912F20007EC46 /* OCMock.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 03565A3118F0566E003AE91E; + remoteInfo = OCMockTests; + }; + 11BA4B021C8912F20007EC46 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 11BA4AF51C8912F20007EC46 /* OCMock.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 030EF0DC14632FF700B04273; + remoteInfo = OCMockLib; + }; + 11BA4B041C8912F20007EC46 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 11BA4AF51C8912F20007EC46 /* OCMock.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = D31108AD1828DB8700737925; + remoteInfo = OCMockLibTests; + }; + 11BA4B061C8912F20007EC46 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 11BA4AF51C8912F20007EC46 /* OCMock.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = F0B950F11B0080BE00942C38; + remoteInfo = "OCMock iOS"; + }; + 11BA4B081C8912F20007EC46 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 11BA4AF51C8912F20007EC46 /* OCMock.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 817EB1621BD765130047E85A; + remoteInfo = "OCMock tvOS"; + }; + 11BA4B0E1C8913590007EC46 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 11BA4AE61C8911A00007EC46 /* FLAnimatedImage.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 92C9BC0B1B199DC500D79B06; + remoteInfo = FLAnimatedImage; + }; + 11FBDAF91C877CEF00018169 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 111083FD1C875B4F00699670 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 111084051C875B5000699670; + remoteInfo = NYTPhotoViewer; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 1110849C1C876DDE00699670 /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + 111084991C876DDE00699670 /* NYTPhotoViewer.framework in Embed Frameworks */, + 11BA4AF21C8912980007EC46 /* FLAnimatedImage.framework in Embed Frameworks */, + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; + 11FBDAF51C877CCE00018169 /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + 11FBDAF81C877CEF00018169 /* NYTPhotoViewer.framework in Embed Frameworks */, + 11BA4B0D1C8913590007EC46 /* FLAnimatedImage.framework in Embed Frameworks */, + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 111084061C875B5000699670 /* NYTPhotoViewer.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = NYTPhotoViewer.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 111084091C875B5000699670 /* NYTPhotoViewer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NYTPhotoViewer.h; sourceTree = ""; }; + 1110840B1C875B5000699670 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 111084101C875B5000699670 /* NYTPhotoViewerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = NYTPhotoViewerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 111084171C875B5000699670 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 111084261C8767BA00699670 /* NYTPhotoCaptionViewTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NYTPhotoCaptionViewTests.m; sourceTree = ""; }; + 111084271C8767BA00699670 /* NYTPhotosDataSourceTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NYTPhotosDataSourceTests.m; sourceTree = ""; }; + 111084281C8767BA00699670 /* NYTPhotosOverlayViewTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NYTPhotosOverlayViewTests.m; sourceTree = ""; }; + 111084291C8767BA00699670 /* NYTPhotosViewControllerTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NYTPhotosViewControllerTests.m; sourceTree = ""; }; + 1110842A1C8767BA00699670 /* NYTPhotoTransitionAnimatorTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NYTPhotoTransitionAnimatorTests.m; sourceTree = ""; }; + 1110842B1C8767BA00699670 /* NYTPhotoViewControllerTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NYTPhotoViewControllerTests.m; sourceTree = ""; }; + 1110842C1C8767BA00699670 /* NYTScalingImageViewTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NYTScalingImageViewTests.m; sourceTree = ""; }; + 111084341C87682300699670 /* NYTPhotoCaptionView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NYTPhotoCaptionView.m; sourceTree = ""; }; + 111084351C87682300699670 /* NYTPhotoDismissalInteractionController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NYTPhotoDismissalInteractionController.h; sourceTree = ""; }; + 111084361C87682300699670 /* NYTPhotoDismissalInteractionController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NYTPhotoDismissalInteractionController.m; sourceTree = ""; }; + 111084371C87682300699670 /* NYTPhotosDataSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NYTPhotosDataSource.h; sourceTree = ""; }; + 111084381C87682300699670 /* NYTPhotosDataSource.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NYTPhotosDataSource.m; sourceTree = ""; }; + 111084391C87682300699670 /* NYTPhotosOverlayView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NYTPhotosOverlayView.h; sourceTree = ""; }; + 1110843A1C87682300699670 /* NYTPhotosOverlayView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NYTPhotosOverlayView.m; sourceTree = ""; }; + 1110843B1C87682300699670 /* NYTPhotosViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NYTPhotosViewController.h; sourceTree = ""; }; + 1110843C1C87682300699670 /* NYTPhotosViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NYTPhotosViewController.m; sourceTree = ""; }; + 1110843D1C87682300699670 /* NYTPhotoTransitionAnimator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NYTPhotoTransitionAnimator.h; sourceTree = ""; }; + 1110843E1C87682300699670 /* NYTPhotoTransitionAnimator.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NYTPhotoTransitionAnimator.m; sourceTree = ""; }; + 1110843F1C87682300699670 /* NYTPhotoTransitionController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NYTPhotoTransitionController.h; sourceTree = ""; }; + 111084401C87682300699670 /* NYTPhotoTransitionController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NYTPhotoTransitionController.m; sourceTree = ""; }; + 111084411C87682300699670 /* NYTPhotoViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NYTPhotoViewController.h; sourceTree = ""; }; + 111084421C87682300699670 /* NYTPhotoViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NYTPhotoViewController.m; sourceTree = ""; }; + 111084431C87682300699670 /* NYTScalingImageView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NYTScalingImageView.h; sourceTree = ""; }; + 111084441C87682300699670 /* NYTScalingImageView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NYTScalingImageView.m; sourceTree = ""; }; + 111084461C87682300699670 /* NYTPhoto.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NYTPhoto.h; sourceTree = ""; }; + 111084471C87682300699670 /* NYTPhotoCaptionViewLayoutWidthHinting.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NYTPhotoCaptionViewLayoutWidthHinting.h; sourceTree = ""; }; + 111084481C87682300699670 /* NYTPhotoContainer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NYTPhotoContainer.h; sourceTree = ""; }; + 111084491C87682300699670 /* NYTPhotosViewControllerDataSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NYTPhotosViewControllerDataSource.h; sourceTree = ""; }; + 1110844B1C87682300699670 /* NSBundle+NYTPhotoViewer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSBundle+NYTPhotoViewer.h"; sourceTree = ""; }; + 1110844C1C87682300699670 /* NSBundle+NYTPhotoViewer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSBundle+NYTPhotoViewer.m"; sourceTree = ""; }; + 111084641C87684D00699670 /* NYTPhotoCaptionView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NYTPhotoCaptionView.h; sourceTree = ""; }; + 1110846A1C876A2B00699670 /* Example.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Example.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 1110846D1C876A2B00699670 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; + 111084781C876A2B00699670 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 1110847B1C876A2B00699670 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + 111084811C876AA500699670 /* NYTExamplePhoto.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NYTExamplePhoto.h; sourceTree = ""; }; + 111084821C876AA500699670 /* NYTExamplePhoto.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NYTExamplePhoto.m; sourceTree = ""; }; + 111084851C876B0400699670 /* giphy.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = giphy.gif; sourceTree = ""; }; + 1110848D1C876CC900699670 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + 1110848F1C876CE000699670 /* NYTAppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NYTAppDelegate.h; sourceTree = ""; }; + 111084901C876CE000699670 /* NYTAppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NYTAppDelegate.m; sourceTree = ""; }; + 111084921C876D1900699670 /* NYTViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NYTViewController.h; sourceTree = ""; }; + 111084931C876D1900699670 /* NYTViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NYTViewController.m; sourceTree = ""; }; + 111084951C876D8800699670 /* NYTPhotoViewer-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "NYTPhotoViewer-Info.plist"; sourceTree = ""; }; + 11BA4AE61C8911A00007EC46 /* FLAnimatedImage.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = FLAnimatedImage.xcodeproj; path = Carthage/Checkouts/FLAnimatedImage/FLAnimatedImage.xcodeproj; sourceTree = ""; }; + 11BA4AF51C8912F20007EC46 /* OCMock.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = OCMock.xcodeproj; path = Carthage/Checkouts/ocmock/Source/OCMock.xcodeproj; sourceTree = ""; }; + 11FBDA791C87714600018169 /* NYTPhotoViewer.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; name = NYTPhotoViewer.bundle; path = ../NYTPhotoViewer.bundle; sourceTree = ""; }; + 11FBDA831C8774AC00018169 /* NYTPhotoViewerCore.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = NYTPhotoViewerCore.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 11FBDAA51C87768700018169 /* NYTPhotoViewerCore.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NYTPhotoViewerCore.h; sourceTree = ""; }; + 11FBDADC1C877BD600018169 /* Example-Swift.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Example-Swift.app"; sourceTree = BUILT_PRODUCTS_DIR; }; + 11FBDADE1C877BD600018169 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 11FBDAE01C877BD600018169 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; }; + 11FBDAE31C877BD600018169 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + 11FBDAEA1C877BD600018169 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 11FBDAEE1C877C5D00018169 /* ExamplePhoto.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ExamplePhoto.swift; sourceTree = ""; }; + 11FBDAF01C877C8B00018169 /* PhotosProvider.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PhotosProvider.swift; sourceTree = ""; }; + 11FBDAFC1C877D9A00018169 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/LaunchScreen.xib; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 111084021C875B5000699670 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 11BA4AF01C89128C0007EC46 /* FLAnimatedImage.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 1110840D1C875B5000699670 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 11BA4B0A1C8913220007EC46 /* OCMock.framework in Frameworks */, + 111084111C875B5000699670 /* NYTPhotoViewer.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 111084671C876A2B00699670 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 111084971C876DD300699670 /* NYTPhotoViewer.framework in Frameworks */, + 11BA4AF11C8912980007EC46 /* FLAnimatedImage.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 11FBDA7F1C8774AC00018169 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 11FBDAD91C877BD600018169 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 11FBDAF71C877CEF00018169 /* NYTPhotoViewer.framework in Frameworks */, + 11BA4B0C1C8913590007EC46 /* FLAnimatedImage.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 111083FC1C875B4F00699670 = { + isa = PBXGroup; + children = ( + 1110846B1C876A2B00699670 /* Example */, + 11FBDADD1C877BD600018169 /* Example-Swift */, + 111084081C875B5000699670 /* NYTPhotoViewer */, + 111084141C875B5000699670 /* NYTPhotoViewerTests */, + 111084071C875B5000699670 /* Products */, + 11BA4B0B1C8913330007EC46 /* Frameworks */, + ); + sourceTree = ""; + }; + 111084071C875B5000699670 /* Products */ = { + isa = PBXGroup; + children = ( + 111084061C875B5000699670 /* NYTPhotoViewer.framework */, + 111084101C875B5000699670 /* NYTPhotoViewerTests.xctest */, + 1110846A1C876A2B00699670 /* Example.app */, + 11FBDA831C8774AC00018169 /* NYTPhotoViewerCore.framework */, + 11FBDADC1C877BD600018169 /* Example-Swift.app */, + ); + name = Products; + sourceTree = ""; + }; + 111084081C875B5000699670 /* NYTPhotoViewer */ = { + isa = PBXGroup; + children = ( + 111084091C875B5000699670 /* NYTPhotoViewer.h */, + 11FBDAA51C87768700018169 /* NYTPhotoViewerCore.h */, + 111084641C87684D00699670 /* NYTPhotoCaptionView.h */, + 111084341C87682300699670 /* NYTPhotoCaptionView.m */, + 111084351C87682300699670 /* NYTPhotoDismissalInteractionController.h */, + 111084361C87682300699670 /* NYTPhotoDismissalInteractionController.m */, + 111084371C87682300699670 /* NYTPhotosDataSource.h */, + 111084381C87682300699670 /* NYTPhotosDataSource.m */, + 111084391C87682300699670 /* NYTPhotosOverlayView.h */, + 1110843A1C87682300699670 /* NYTPhotosOverlayView.m */, + 1110843B1C87682300699670 /* NYTPhotosViewController.h */, + 1110843C1C87682300699670 /* NYTPhotosViewController.m */, + 1110843D1C87682300699670 /* NYTPhotoTransitionAnimator.h */, + 1110843E1C87682300699670 /* NYTPhotoTransitionAnimator.m */, + 1110843F1C87682300699670 /* NYTPhotoTransitionController.h */, + 111084401C87682300699670 /* NYTPhotoTransitionController.m */, + 111084411C87682300699670 /* NYTPhotoViewController.h */, + 111084421C87682300699670 /* NYTPhotoViewController.m */, + 111084431C87682300699670 /* NYTScalingImageView.h */, + 111084441C87682300699670 /* NYTScalingImageView.m */, + 111084451C87682300699670 /* Protocols */, + 1110844A1C87682300699670 /* Resource Loading */, + 1110840B1C875B5000699670 /* Info.plist */, + ); + path = NYTPhotoViewer; + sourceTree = ""; + }; + 111084141C875B5000699670 /* NYTPhotoViewerTests */ = { + isa = PBXGroup; + children = ( + 111084261C8767BA00699670 /* NYTPhotoCaptionViewTests.m */, + 111084271C8767BA00699670 /* NYTPhotosDataSourceTests.m */, + 111084281C8767BA00699670 /* NYTPhotosOverlayViewTests.m */, + 111084291C8767BA00699670 /* NYTPhotosViewControllerTests.m */, + 1110842A1C8767BA00699670 /* NYTPhotoTransitionAnimatorTests.m */, + 1110842B1C8767BA00699670 /* NYTPhotoViewControllerTests.m */, + 1110842C1C8767BA00699670 /* NYTScalingImageViewTests.m */, + 111084171C875B5000699670 /* Info.plist */, + ); + path = NYTPhotoViewerTests; + sourceTree = ""; + }; + 111084451C87682300699670 /* Protocols */ = { + isa = PBXGroup; + children = ( + 111084461C87682300699670 /* NYTPhoto.h */, + 111084471C87682300699670 /* NYTPhotoCaptionViewLayoutWidthHinting.h */, + 111084481C87682300699670 /* NYTPhotoContainer.h */, + 111084491C87682300699670 /* NYTPhotosViewControllerDataSource.h */, + ); + path = Protocols; + sourceTree = ""; + }; + 1110844A1C87682300699670 /* Resource Loading */ = { + isa = PBXGroup; + children = ( + 11FBDA791C87714600018169 /* NYTPhotoViewer.bundle */, + 1110844B1C87682300699670 /* NSBundle+NYTPhotoViewer.h */, + 1110844C1C87682300699670 /* NSBundle+NYTPhotoViewer.m */, + ); + path = "Resource Loading"; + sourceTree = ""; + }; + 1110846B1C876A2B00699670 /* Example */ = { + isa = PBXGroup; + children = ( + 1110848F1C876CE000699670 /* NYTAppDelegate.h */, + 111084901C876CE000699670 /* NYTAppDelegate.m */, + 111084921C876D1900699670 /* NYTViewController.h */, + 111084931C876D1900699670 /* NYTViewController.m */, + 111084811C876AA500699670 /* NYTExamplePhoto.h */, + 111084821C876AA500699670 /* NYTExamplePhoto.m */, + 1110848E1C876CC900699670 /* Main.storyboard */, + 1110847A1C876A2B00699670 /* LaunchScreen.storyboard */, + 111084781C876A2B00699670 /* Assets.xcassets */, + 111084851C876B0400699670 /* giphy.gif */, + 1110846C1C876A2B00699670 /* Supporting Files */, + ); + path = Example; + sourceTree = ""; + }; + 1110846C1C876A2B00699670 /* Supporting Files */ = { + isa = PBXGroup; + children = ( + 111084951C876D8800699670 /* NYTPhotoViewer-Info.plist */, + 1110846D1C876A2B00699670 /* main.m */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; + 11BA4AE71C8911A00007EC46 /* Products */ = { + isa = PBXGroup; + children = ( + 11BA4AEB1C8911A00007EC46 /* FLAnimatedImage.framework */, + ); + name = Products; + sourceTree = ""; + }; + 11BA4AF61C8912F20007EC46 /* Products */ = { + isa = PBXGroup; + children = ( + 11BA4AFF1C8912F20007EC46 /* OCMock.framework */, + 11BA4B011C8912F20007EC46 /* OCMockTests.xctest */, + 11BA4B031C8912F20007EC46 /* libOCMock.a */, + 11BA4B051C8912F20007EC46 /* OCMockLibTests.xctest */, + 11BA4B071C8912F20007EC46 /* OCMock.framework */, + 11BA4B091C8912F20007EC46 /* OCMock.framework */, + ); + name = Products; + sourceTree = ""; + }; + 11BA4B0B1C8913330007EC46 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 11BA4AF51C8912F20007EC46 /* OCMock.xcodeproj */, + 11BA4AE61C8911A00007EC46 /* FLAnimatedImage.xcodeproj */, + ); + name = Frameworks; + sourceTree = ""; + }; + 11FBDADD1C877BD600018169 /* Example-Swift */ = { + isa = PBXGroup; + children = ( + 11FBDADE1C877BD600018169 /* AppDelegate.swift */, + 11FBDAE01C877BD600018169 /* ViewController.swift */, + 11FBDAEE1C877C5D00018169 /* ExamplePhoto.swift */, + 11FBDAF01C877C8B00018169 /* PhotosProvider.swift */, + 11FBDAE21C877BD600018169 /* Main.storyboard */, + 11FBDAFB1C877D9A00018169 /* LaunchScreen.xib */, + 11FBDAEA1C877BD600018169 /* Info.plist */, + ); + path = "Example-Swift"; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + 111084031C875B5000699670 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 111084621C87682300699670 /* NSBundle+NYTPhotoViewer.h in Headers */, + 111084541C87682300699670 /* NYTPhotosViewController.h in Headers */, + 111084601C87682300699670 /* NYTPhotoContainer.h in Headers */, + 1110844E1C87682300699670 /* NYTPhotoDismissalInteractionController.h in Headers */, + 111084611C87682300699670 /* NYTPhotosViewControllerDataSource.h in Headers */, + 1110845A1C87682300699670 /* NYTPhotoViewController.h in Headers */, + 1110845C1C87682300699670 /* NYTScalingImageView.h in Headers */, + 111084521C87682300699670 /* NYTPhotosOverlayView.h in Headers */, + 111084561C87682300699670 /* NYTPhotoTransitionAnimator.h in Headers */, + 111084581C87682300699670 /* NYTPhotoTransitionController.h in Headers */, + 1110845F1C87682300699670 /* NYTPhotoCaptionViewLayoutWidthHinting.h in Headers */, + 1110845E1C87682300699670 /* NYTPhoto.h in Headers */, + 111084501C87682300699670 /* NYTPhotosDataSource.h in Headers */, + 1110840A1C875B5000699670 /* NYTPhotoViewer.h in Headers */, + 111084651C87684D00699670 /* NYTPhotoCaptionView.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 11FBDA801C8774AC00018169 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 11FBDA981C87753200018169 /* NYTPhotoTransitionController.h in Headers */, + 11FBDAA01C87753200018169 /* NYTPhotoContainer.h in Headers */, + 11FBDA9C1C87753200018169 /* NYTScalingImageView.h in Headers */, + 11FBDA921C87753200018169 /* NYTPhotosOverlayView.h in Headers */, + 11FBDA8E1C87753200018169 /* NYTPhotoDismissalInteractionController.h in Headers */, + 11FBDAA11C87753200018169 /* NYTPhotosViewControllerDataSource.h in Headers */, + 11FBDA901C87753200018169 /* NYTPhotosDataSource.h in Headers */, + 11FBDA9F1C87753200018169 /* NYTPhotoCaptionViewLayoutWidthHinting.h in Headers */, + 11FBDA941C87753200018169 /* NYTPhotosViewController.h in Headers */, + 11FBDAA61C87768B00018169 /* NYTPhotoViewerCore.h in Headers */, + 11FBDA9E1C87753200018169 /* NYTPhoto.h in Headers */, + 11FBDAA21C87753200018169 /* NSBundle+NYTPhotoViewer.h in Headers */, + 11FBDA961C87753200018169 /* NYTPhotoTransitionAnimator.h in Headers */, + 11FBDA9A1C87753200018169 /* NYTPhotoViewController.h in Headers */, + 11FBDA8C1C87753200018169 /* NYTPhotoCaptionView.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + 111084051C875B5000699670 /* NYTPhotoViewer */ = { + isa = PBXNativeTarget; + buildConfigurationList = 1110841A1C875B5000699670 /* Build configuration list for PBXNativeTarget "NYTPhotoViewer" */; + buildPhases = ( + 111084011C875B5000699670 /* Sources */, + 111084021C875B5000699670 /* Frameworks */, + 111084031C875B5000699670 /* Headers */, + 111084041C875B5000699670 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 11BA4AED1C8912530007EC46 /* PBXTargetDependency */, + ); + name = NYTPhotoViewer; + productName = NYTPhotoViewer; + productReference = 111084061C875B5000699670 /* NYTPhotoViewer.framework */; + productType = "com.apple.product-type.framework"; + }; + 1110840F1C875B5000699670 /* NYTPhotoViewerTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 1110841D1C875B5000699670 /* Build configuration list for PBXNativeTarget "NYTPhotoViewerTests" */; + buildPhases = ( + 1110840C1C875B5000699670 /* Sources */, + 1110840D1C875B5000699670 /* Frameworks */, + 1110840E1C875B5000699670 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 111084131C875B5000699670 /* PBXTargetDependency */, + ); + name = NYTPhotoViewerTests; + productName = NYTPhotoViewerTests; + productReference = 111084101C875B5000699670 /* NYTPhotoViewerTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; + 111084691C876A2B00699670 /* Example */ = { + isa = PBXNativeTarget; + buildConfigurationList = 1110847E1C876A2B00699670 /* Build configuration list for PBXNativeTarget "Example" */; + buildPhases = ( + 111084661C876A2B00699670 /* Sources */, + 111084671C876A2B00699670 /* Frameworks */, + 111084681C876A2B00699670 /* Resources */, + 1110849C1C876DDE00699670 /* Embed Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 11BA4AEF1C8912600007EC46 /* PBXTargetDependency */, + 1110849B1C876DDE00699670 /* PBXTargetDependency */, + 11BA4AF41C8912980007EC46 /* PBXTargetDependency */, + ); + name = Example; + productName = Example; + productReference = 1110846A1C876A2B00699670 /* Example.app */; + productType = "com.apple.product-type.application"; + }; + 11FBDA821C8774AC00018169 /* NYTPhotoViewerCore */ = { + isa = PBXNativeTarget; + buildConfigurationList = 11FBDA881C8774AD00018169 /* Build configuration list for PBXNativeTarget "NYTPhotoViewerCore" */; + buildPhases = ( + 11FBDA7E1C8774AC00018169 /* Sources */, + 11FBDA7F1C8774AC00018169 /* Frameworks */, + 11FBDA801C8774AC00018169 /* Headers */, + 11FBDA811C8774AC00018169 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = NYTPhotoViewerCore; + productName = NYTPhotoViewerCore; + productReference = 11FBDA831C8774AC00018169 /* NYTPhotoViewerCore.framework */; + productType = "com.apple.product-type.framework"; + }; + 11FBDADB1C877BD600018169 /* Example-Swift */ = { + isa = PBXNativeTarget; + buildConfigurationList = 11FBDAED1C877BD600018169 /* Build configuration list for PBXNativeTarget "Example-Swift" */; + buildPhases = ( + 11FBDAD81C877BD600018169 /* Sources */, + 11FBDAD91C877BD600018169 /* Frameworks */, + 11FBDADA1C877BD600018169 /* Resources */, + 11FBDAF51C877CCE00018169 /* Embed Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 11FBDAFA1C877CEF00018169 /* PBXTargetDependency */, + 11BA4B0F1C8913590007EC46 /* PBXTargetDependency */, + ); + name = "Example-Swift"; + productName = "Example-Swift"; + productReference = 11FBDADC1C877BD600018169 /* Example-Swift.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 111083FD1C875B4F00699670 /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 0720; + LastUpgradeCheck = 0720; + ORGANIZATIONNAME = NYTimes; + TargetAttributes = { + 111084051C875B5000699670 = { + CreatedOnToolsVersion = 7.2.1; + }; + 1110840F1C875B5000699670 = { + CreatedOnToolsVersion = 7.2.1; + }; + 111084691C876A2B00699670 = { + CreatedOnToolsVersion = 7.2.1; + }; + 11FBDA821C8774AC00018169 = { + CreatedOnToolsVersion = 7.2.1; + }; + 11FBDADB1C877BD600018169 = { + CreatedOnToolsVersion = 7.2.1; + }; + }; + }; + buildConfigurationList = 111084001C875B4F00699670 /* Build configuration list for PBXProject "NYTPhotoViewer" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 111083FC1C875B4F00699670; + productRefGroup = 111084071C875B5000699670 /* Products */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 11BA4AE71C8911A00007EC46 /* Products */; + ProjectRef = 11BA4AE61C8911A00007EC46 /* FLAnimatedImage.xcodeproj */; + }, + { + ProductGroup = 11BA4AF61C8912F20007EC46 /* Products */; + ProjectRef = 11BA4AF51C8912F20007EC46 /* OCMock.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + 111084051C875B5000699670 /* NYTPhotoViewer */, + 11FBDA821C8774AC00018169 /* NYTPhotoViewerCore */, + 1110840F1C875B5000699670 /* NYTPhotoViewerTests */, + 111084691C876A2B00699670 /* Example */, + 11FBDADB1C877BD600018169 /* Example-Swift */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + 11BA4AEB1C8911A00007EC46 /* FLAnimatedImage.framework */ = { + isa = PBXReferenceProxy; + fileType = wrapper.framework; + path = FLAnimatedImage.framework; + remoteRef = 11BA4AEA1C8911A00007EC46 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 11BA4AFF1C8912F20007EC46 /* OCMock.framework */ = { + isa = PBXReferenceProxy; + fileType = wrapper.framework; + path = OCMock.framework; + remoteRef = 11BA4AFE1C8912F20007EC46 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 11BA4B011C8912F20007EC46 /* OCMockTests.xctest */ = { + isa = PBXReferenceProxy; + fileType = wrapper.cfbundle; + path = OCMockTests.xctest; + remoteRef = 11BA4B001C8912F20007EC46 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 11BA4B031C8912F20007EC46 /* libOCMock.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libOCMock.a; + remoteRef = 11BA4B021C8912F20007EC46 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 11BA4B051C8912F20007EC46 /* OCMockLibTests.xctest */ = { + isa = PBXReferenceProxy; + fileType = wrapper.cfbundle; + path = OCMockLibTests.xctest; + remoteRef = 11BA4B041C8912F20007EC46 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 11BA4B071C8912F20007EC46 /* OCMock.framework */ = { + isa = PBXReferenceProxy; + fileType = wrapper.framework; + path = OCMock.framework; + remoteRef = 11BA4B061C8912F20007EC46 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 11BA4B091C8912F20007EC46 /* OCMock.framework */ = { + isa = PBXReferenceProxy; + fileType = wrapper.framework; + path = OCMock.framework; + remoteRef = 11BA4B081C8912F20007EC46 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + 111084041C875B5000699670 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 11FBDA7A1C87714600018169 /* NYTPhotoViewer.bundle in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 1110840E1C875B5000699670 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 111084861C876B0400699670 /* giphy.gif in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 111084681C876A2B00699670 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 1110847C1C876A2B00699670 /* LaunchScreen.storyboard in Resources */, + 1110848C1C876CC900699670 /* Main.storyboard in Resources */, + 111084791C876A2B00699670 /* Assets.xcassets in Resources */, + 111084871C876B0400699670 /* giphy.gif in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 11FBDA811C8774AC00018169 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 11FBDAA41C87754A00018169 /* NYTPhotoViewer.bundle in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 11FBDADA1C877BD600018169 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 11FBDAFD1C877D9A00018169 /* LaunchScreen.xib in Resources */, + 11FBDAFE1C877F5500018169 /* Assets.xcassets in Resources */, + 11FBDAFF1C877F8000018169 /* giphy.gif in Resources */, + 11FBDAE41C877BD600018169 /* Main.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 111084011C875B5000699670 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 111084591C87682300699670 /* NYTPhotoTransitionController.m in Sources */, + 111084631C87682300699670 /* NSBundle+NYTPhotoViewer.m in Sources */, + 111084551C87682300699670 /* NYTPhotosViewController.m in Sources */, + 1110844D1C87682300699670 /* NYTPhotoCaptionView.m in Sources */, + 1110845D1C87682300699670 /* NYTScalingImageView.m in Sources */, + 111084511C87682300699670 /* NYTPhotosDataSource.m in Sources */, + 111084531C87682300699670 /* NYTPhotosOverlayView.m in Sources */, + 111084571C87682300699670 /* NYTPhotoTransitionAnimator.m in Sources */, + 1110844F1C87682300699670 /* NYTPhotoDismissalInteractionController.m in Sources */, + 1110845B1C87682300699670 /* NYTPhotoViewController.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 1110840C1C875B5000699670 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 1110842D1C8767BA00699670 /* NYTPhotoCaptionViewTests.m in Sources */, + 1110842F1C8767BA00699670 /* NYTPhotosOverlayViewTests.m in Sources */, + 1110842E1C8767BA00699670 /* NYTPhotosDataSourceTests.m in Sources */, + 111084311C8767BA00699670 /* NYTPhotoTransitionAnimatorTests.m in Sources */, + 111084301C8767BA00699670 /* NYTPhotosViewControllerTests.m in Sources */, + 111084841C876AAD00699670 /* NYTExamplePhoto.m in Sources */, + 111084331C8767BA00699670 /* NYTScalingImageViewTests.m in Sources */, + 111084321C8767BA00699670 /* NYTPhotoViewControllerTests.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 111084661C876A2B00699670 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 111084941C876D1900699670 /* NYTViewController.m in Sources */, + 111084911C876CE000699670 /* NYTAppDelegate.m in Sources */, + 111084831C876AA500699670 /* NYTExamplePhoto.m in Sources */, + 1110846E1C876A2B00699670 /* main.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 11FBDA7E1C8774AC00018169 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 11FBDA991C87753200018169 /* NYTPhotoTransitionController.m in Sources */, + 11FBDAA31C87753200018169 /* NSBundle+NYTPhotoViewer.m in Sources */, + 11FBDA951C87753200018169 /* NYTPhotosViewController.m in Sources */, + 11FBDA8D1C87753200018169 /* NYTPhotoCaptionView.m in Sources */, + 11FBDA9D1C87753200018169 /* NYTScalingImageView.m in Sources */, + 11FBDA911C87753200018169 /* NYTPhotosDataSource.m in Sources */, + 11FBDA931C87753200018169 /* NYTPhotosOverlayView.m in Sources */, + 11FBDA971C87753200018169 /* NYTPhotoTransitionAnimator.m in Sources */, + 11FBDA8F1C87753200018169 /* NYTPhotoDismissalInteractionController.m in Sources */, + 11FBDA9B1C87753200018169 /* NYTPhotoViewController.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 11FBDAD81C877BD600018169 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 11FBDAE11C877BD600018169 /* ViewController.swift in Sources */, + 11FBDAEF1C877C5D00018169 /* ExamplePhoto.swift in Sources */, + 11FBDADF1C877BD600018169 /* AppDelegate.swift in Sources */, + 11FBDAF11C877C8B00018169 /* PhotosProvider.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 111084131C875B5000699670 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 111084051C875B5000699670 /* NYTPhotoViewer */; + targetProxy = 111084121C875B5000699670 /* PBXContainerItemProxy */; + }; + 1110849B1C876DDE00699670 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 111084051C875B5000699670 /* NYTPhotoViewer */; + targetProxy = 1110849A1C876DDE00699670 /* PBXContainerItemProxy */; + }; + 11BA4AED1C8912530007EC46 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = FLAnimatedImage; + targetProxy = 11BA4AEC1C8912530007EC46 /* PBXContainerItemProxy */; + }; + 11BA4AEF1C8912600007EC46 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = FLAnimatedImage; + targetProxy = 11BA4AEE1C8912600007EC46 /* PBXContainerItemProxy */; + }; + 11BA4AF41C8912980007EC46 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = FLAnimatedImage; + targetProxy = 11BA4AF31C8912980007EC46 /* PBXContainerItemProxy */; + }; + 11BA4B0F1C8913590007EC46 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = FLAnimatedImage; + targetProxy = 11BA4B0E1C8913590007EC46 /* PBXContainerItemProxy */; + }; + 11FBDAFA1C877CEF00018169 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 111084051C875B5000699670 /* NYTPhotoViewer */; + targetProxy = 11FBDAF91C877CEF00018169 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin PBXVariantGroup section */ + 1110847A1C876A2B00699670 /* LaunchScreen.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 1110847B1C876A2B00699670 /* Base */, + ); + name = LaunchScreen.storyboard; + sourceTree = ""; + }; + 1110848E1C876CC900699670 /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 1110848D1C876CC900699670 /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; + 11FBDAE21C877BD600018169 /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 11FBDAE31C877BD600018169 /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; + 11FBDAFB1C877D9A00018169 /* LaunchScreen.xib */ = { + isa = PBXVariantGroup; + children = ( + 11FBDAFC1C877D9A00018169 /* Base */, + ); + name = LaunchScreen.xib; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 111084181C875B5000699670 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 9.2; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + 111084191C875B5000699670 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 9.2; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + 1110841B1C875B5000699670 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + "ANIMATED_GIF_SUPPORT=1", + ); + INFOPLIST_FILE = NYTPhotoViewer/Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.NYTimes.NYTPhotoViewer; + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; + }; + name = Debug; + }; + 1110841C1C875B5000699670 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_PREPROCESSOR_DEFINITIONS = "ANIMATED_GIF_SUPPORT=1"; + INFOPLIST_FILE = NYTPhotoViewer/Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.NYTimes.NYTPhotoViewer; + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; + }; + name = Release; + }; + 1110841E1C875B5000699670 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + INFOPLIST_FILE = NYTPhotoViewerTests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.NYTimes.NYTPhotoViewerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Debug; + }; + 1110841F1C875B5000699670 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + INFOPLIST_FILE = NYTPhotoViewerTests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.NYTimes.NYTPhotoViewerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Release; + }; + 1110847F1C876A2B00699670 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + INFOPLIST_FILE = "Example/NYTPhotoViewer-Info.plist"; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.NYTimes.Example; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Debug; + }; + 111084801C876A2B00699670 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + INFOPLIST_FILE = "Example/NYTPhotoViewer-Info.plist"; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.NYTimes.Example; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Release; + }; + 11FBDA891C8774AD00018169 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = NYTPhotoViewer/Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.NYTimes.NYTPhotoViewerCore; + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; + }; + name = Debug; + }; + 11FBDA8A1C8774AD00018169 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = NYTPhotoViewer/Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.NYTimes.NYTPhotoViewerCore; + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; + }; + name = Release; + }; + 11FBDAEB1C877BD600018169 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/Carthage/Checkouts/FLAnimatedImage/build/Debug-iphoneos", + ); + INFOPLIST_FILE = "Example-Swift/Info.plist"; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = "com.NYTimes.Example-Swift"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + 11FBDAEC1C877BD600018169 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/Carthage/Checkouts/FLAnimatedImage/build/Debug-iphoneos", + ); + INFOPLIST_FILE = "Example-Swift/Info.plist"; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = "com.NYTimes.Example-Swift"; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 111084001C875B4F00699670 /* Build configuration list for PBXProject "NYTPhotoViewer" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 111084181C875B5000699670 /* Debug */, + 111084191C875B5000699670 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 1110841A1C875B5000699670 /* Build configuration list for PBXNativeTarget "NYTPhotoViewer" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 1110841B1C875B5000699670 /* Debug */, + 1110841C1C875B5000699670 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 1110841D1C875B5000699670 /* Build configuration list for PBXNativeTarget "NYTPhotoViewerTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 1110841E1C875B5000699670 /* Debug */, + 1110841F1C875B5000699670 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 1110847E1C876A2B00699670 /* Build configuration list for PBXNativeTarget "Example" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 1110847F1C876A2B00699670 /* Debug */, + 111084801C876A2B00699670 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 11FBDA881C8774AD00018169 /* Build configuration list for PBXNativeTarget "NYTPhotoViewerCore" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 11FBDA891C8774AD00018169 /* Debug */, + 11FBDA8A1C8774AD00018169 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 11FBDAED1C877BD600018169 /* Build configuration list for PBXNativeTarget "Example-Swift" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 11FBDAEB1C877BD600018169 /* Debug */, + 11FBDAEC1C877BD600018169 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 111083FD1C875B4F00699670 /* Project object */; +} diff --git a/Example/NYTPhotoViewer.xcodeproj/xcshareddata/xcschemes/NYTPhotoViewer.xcscheme b/NYTPhotoViewer.xcodeproj/xcshareddata/xcschemes/NYTPhotoViewer.xcscheme similarity index 76% rename from Example/NYTPhotoViewer.xcodeproj/xcshareddata/xcschemes/NYTPhotoViewer.xcscheme rename to NYTPhotoViewer.xcodeproj/xcshareddata/xcschemes/NYTPhotoViewer.xcscheme index 5c7ede35..7a1ba328 100644 --- a/Example/NYTPhotoViewer.xcodeproj/xcshareddata/xcschemes/NYTPhotoViewer.xcscheme +++ b/NYTPhotoViewer.xcodeproj/xcshareddata/xcschemes/NYTPhotoViewer.xcscheme @@ -1,6 +1,6 @@ @@ -26,16 +26,15 @@ buildConfiguration = "Debug" selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" - shouldUseLaunchSchemeArgsEnv = "YES" - codeCoverageEnabled = "YES"> + shouldUseLaunchSchemeArgsEnv = "YES"> @@ -43,8 +42,8 @@ @@ -62,16 +61,15 @@ debugDocumentVersioning = "YES" debugServiceExtension = "internal" allowLocationSimulation = "YES"> - + - + @@ -81,16 +79,15 @@ savedToolIdentifier = "" useCustomWorkingDirectory = "NO" debugDocumentVersioning = "YES"> - + - + diff --git a/Example/Pods/Pods.xcodeproj/xcshareddata/xcschemes/NYTPhotoViewer.xcscheme b/NYTPhotoViewer.xcodeproj/xcshareddata/xcschemes/NYTPhotoViewerCore.xcscheme similarity index 55% rename from Example/Pods/Pods.xcodeproj/xcshareddata/xcschemes/NYTPhotoViewer.xcscheme rename to NYTPhotoViewer.xcodeproj/xcshareddata/xcschemes/NYTPhotoViewerCore.xcscheme index 8984f21c..e78db687 100644 --- a/Example/Pods/Pods.xcodeproj/xcshareddata/xcschemes/NYTPhotoViewer.xcscheme +++ b/NYTPhotoViewer.xcodeproj/xcshareddata/xcschemes/NYTPhotoViewerCore.xcscheme @@ -1,36 +1,39 @@ + buildForArchiving = "YES" + buildForAnalyzing = "YES"> + BuildableIdentifier = "primary" + BlueprintIdentifier = "11FBDA821C8774AC00018169" + BuildableName = "NYTPhotoViewerCore.framework" + BlueprintName = "NYTPhotoViewerCore" + ReferencedContainer = "container:NYTPhotoViewer.xcodeproj"> + shouldUseLaunchSchemeArgsEnv = "YES"> + + + + + + + debugDocumentVersioning = "YES"> + + + + diff --git a/NYTPhotoViewer/Info.plist b/NYTPhotoViewer/Info.plist new file mode 100644 index 00000000..331a2dac --- /dev/null +++ b/NYTPhotoViewer/Info.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.2.0 + CFBundleSignature + ???? + CFBundleVersion + $(CURRENT_PROJECT_VERSION) + NSPrincipalClass + + + diff --git a/Pod/Classes/ios/NYTPhotoCaptionView.h b/NYTPhotoViewer/NYTPhotoCaptionView.h similarity index 100% rename from Pod/Classes/ios/NYTPhotoCaptionView.h rename to NYTPhotoViewer/NYTPhotoCaptionView.h diff --git a/Pod/Classes/ios/NYTPhotoCaptionView.m b/NYTPhotoViewer/NYTPhotoCaptionView.m similarity index 97% rename from Pod/Classes/ios/NYTPhotoCaptionView.m rename to NYTPhotoViewer/NYTPhotoCaptionView.m index 7e545638..7f6c83b4 100644 --- a/Pod/Classes/ios/NYTPhotoCaptionView.m +++ b/NYTPhotoViewer/NYTPhotoCaptionView.m @@ -58,11 +58,15 @@ - (void)didMoveToSuperview { - (void)layoutSubviews { [super layoutSubviews]; + void (^updateGradientFrame)() = ^{ + self.gradientLayer.frame = self.layer.bounds; + }; + + updateGradientFrame(); + // On iOS 8.x, when this view is height-constrained, neither `self.bounds` nor `self.layer.bounds` reflects the new layout height immediately after `[super layoutSubviews]`. Both of those properties appear correct in the next runloop. // This problem doesn't affect iOS 9 and there may be a better solution; PRs welcome. - dispatch_async(dispatch_get_main_queue(), ^{ - self.gradientLayer.frame = self.layer.bounds; - }); + dispatch_async(dispatch_get_main_queue(), updateGradientFrame); } - (CGSize)intrinsicContentSize { diff --git a/Pod/Classes/ios/NYTPhotoDismissalInteractionController.h b/NYTPhotoViewer/NYTPhotoDismissalInteractionController.h similarity index 100% rename from Pod/Classes/ios/NYTPhotoDismissalInteractionController.h rename to NYTPhotoViewer/NYTPhotoDismissalInteractionController.h diff --git a/Pod/Classes/ios/NYTPhotoDismissalInteractionController.m b/NYTPhotoViewer/NYTPhotoDismissalInteractionController.m similarity index 100% rename from Pod/Classes/ios/NYTPhotoDismissalInteractionController.m rename to NYTPhotoViewer/NYTPhotoDismissalInteractionController.m diff --git a/Pod/Classes/ios/NYTPhotoTransitionAnimator.h b/NYTPhotoViewer/NYTPhotoTransitionAnimator.h similarity index 100% rename from Pod/Classes/ios/NYTPhotoTransitionAnimator.h rename to NYTPhotoViewer/NYTPhotoTransitionAnimator.h diff --git a/Pod/Classes/ios/NYTPhotoTransitionAnimator.m b/NYTPhotoViewer/NYTPhotoTransitionAnimator.m similarity index 100% rename from Pod/Classes/ios/NYTPhotoTransitionAnimator.m rename to NYTPhotoViewer/NYTPhotoTransitionAnimator.m diff --git a/Pod/Classes/ios/NYTPhotoTransitionController.h b/NYTPhotoViewer/NYTPhotoTransitionController.h similarity index 100% rename from Pod/Classes/ios/NYTPhotoTransitionController.h rename to NYTPhotoViewer/NYTPhotoTransitionController.h diff --git a/Pod/Classes/ios/NYTPhotoTransitionController.m b/NYTPhotoViewer/NYTPhotoTransitionController.m similarity index 100% rename from Pod/Classes/ios/NYTPhotoTransitionController.m rename to NYTPhotoViewer/NYTPhotoTransitionController.m diff --git a/Pod/Classes/ios/NYTPhotoViewController.h b/NYTPhotoViewer/NYTPhotoViewController.h similarity index 100% rename from Pod/Classes/ios/NYTPhotoViewController.h rename to NYTPhotoViewer/NYTPhotoViewController.h diff --git a/Pod/Classes/ios/NYTPhotoViewController.m b/NYTPhotoViewer/NYTPhotoViewController.m similarity index 99% rename from Pod/Classes/ios/NYTPhotoViewController.m rename to NYTPhotoViewer/NYTPhotoViewController.m index 5b9e0d7c..d37b25f6 100644 --- a/Pod/Classes/ios/NYTPhotoViewController.m +++ b/NYTPhotoViewer/NYTPhotoViewController.m @@ -140,7 +140,8 @@ - (void)updateImage:(UIImage *)image imageData:(NSData *)imageData { if (imageData || image) { [self.loadingView removeFromSuperview]; - self.loadingView = nil; + } else { + [self.view addSubview:self.loadingView]; } } diff --git a/Pod/Assets/ios/NYTPhotoViewerCloseButtonX.png b/NYTPhotoViewer/NYTPhotoViewer.bundle/NYTPhotoViewerCloseButtonX.png similarity index 100% rename from Pod/Assets/ios/NYTPhotoViewerCloseButtonX.png rename to NYTPhotoViewer/NYTPhotoViewer.bundle/NYTPhotoViewerCloseButtonX.png diff --git a/Pod/Assets/ios/NYTPhotoViewerCloseButtonX@2x.png b/NYTPhotoViewer/NYTPhotoViewer.bundle/NYTPhotoViewerCloseButtonX@2x.png similarity index 100% rename from Pod/Assets/ios/NYTPhotoViewerCloseButtonX@2x.png rename to NYTPhotoViewer/NYTPhotoViewer.bundle/NYTPhotoViewerCloseButtonX@2x.png diff --git a/Pod/Assets/ios/NYTPhotoViewerCloseButtonX@3x.png b/NYTPhotoViewer/NYTPhotoViewer.bundle/NYTPhotoViewerCloseButtonX@3x.png similarity index 100% rename from Pod/Assets/ios/NYTPhotoViewerCloseButtonX@3x.png rename to NYTPhotoViewer/NYTPhotoViewer.bundle/NYTPhotoViewerCloseButtonX@3x.png diff --git a/Pod/Assets/ios/NYTPhotoViewerCloseButtonXLandscape.png b/NYTPhotoViewer/NYTPhotoViewer.bundle/NYTPhotoViewerCloseButtonXLandscape.png similarity index 100% rename from Pod/Assets/ios/NYTPhotoViewerCloseButtonXLandscape.png rename to NYTPhotoViewer/NYTPhotoViewer.bundle/NYTPhotoViewerCloseButtonXLandscape.png diff --git a/Pod/Assets/ios/NYTPhotoViewerCloseButtonXLandscape@2x.png b/NYTPhotoViewer/NYTPhotoViewer.bundle/NYTPhotoViewerCloseButtonXLandscape@2x.png similarity index 100% rename from Pod/Assets/ios/NYTPhotoViewerCloseButtonXLandscape@2x.png rename to NYTPhotoViewer/NYTPhotoViewer.bundle/NYTPhotoViewerCloseButtonXLandscape@2x.png diff --git a/Pod/Assets/ios/NYTPhotoViewerCloseButtonXLandscape@3x.png b/NYTPhotoViewer/NYTPhotoViewer.bundle/NYTPhotoViewerCloseButtonXLandscape@3x.png similarity index 100% rename from Pod/Assets/ios/NYTPhotoViewerCloseButtonXLandscape@3x.png rename to NYTPhotoViewer/NYTPhotoViewer.bundle/NYTPhotoViewerCloseButtonXLandscape@3x.png diff --git a/NYTPhotoViewer/NYTPhotoViewer.h b/NYTPhotoViewer/NYTPhotoViewer.h new file mode 100644 index 00000000..7ed4c3e9 --- /dev/null +++ b/NYTPhotoViewer/NYTPhotoViewer.h @@ -0,0 +1,34 @@ +// +// NYTPhotoViewer.h +// NYTPhotoViewer +// +// Created by David Beck on 3/2/16. +// Copyright © 2016 NYTimes. All rights reserved. +// + +#import + +//! Project version number for NYTPhotoViewer. +FOUNDATION_EXPORT double NYTPhotoViewerVersionNumber; + +//! Project version string for NYTPhotoViewer. +FOUNDATION_EXPORT const unsigned char NYTPhotoViewerVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import +#import +#import +#import +#import +#import +#import +#import +#import +#import + +// Protocols +#import +#import +#import +#import + +#import diff --git a/NYTPhotoViewer/NYTPhotoViewerCore.h b/NYTPhotoViewer/NYTPhotoViewerCore.h new file mode 100644 index 00000000..4d46ea12 --- /dev/null +++ b/NYTPhotoViewer/NYTPhotoViewerCore.h @@ -0,0 +1,34 @@ +// +// NYTPhotoViewer.h +// NYTPhotoViewer +// +// Created by David Beck on 3/2/16. +// Copyright © 2016 NYTimes. All rights reserved. +// + +#import + +//! Project version number for NYTPhotoViewer. +FOUNDATION_EXPORT double NYTPhotoViewerCoreVersionNumber; + +//! Project version string for NYTPhotoViewer. +FOUNDATION_EXPORT const unsigned char NYTPhotoViewerCoreVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import +#import +#import +#import +#import +#import +#import +#import +#import +#import + +// Protocols +#import +#import +#import +#import + +#import diff --git a/Pod/Classes/ios/NYTPhotosDataSource.h b/NYTPhotoViewer/NYTPhotosDataSource.h similarity index 100% rename from Pod/Classes/ios/NYTPhotosDataSource.h rename to NYTPhotoViewer/NYTPhotosDataSource.h diff --git a/Pod/Classes/ios/NYTPhotosDataSource.m b/NYTPhotoViewer/NYTPhotosDataSource.m similarity index 100% rename from Pod/Classes/ios/NYTPhotosDataSource.m rename to NYTPhotoViewer/NYTPhotosDataSource.m diff --git a/Pod/Classes/ios/NYTPhotosOverlayView.h b/NYTPhotoViewer/NYTPhotosOverlayView.h similarity index 100% rename from Pod/Classes/ios/NYTPhotosOverlayView.h rename to NYTPhotoViewer/NYTPhotosOverlayView.h diff --git a/Pod/Classes/ios/NYTPhotosOverlayView.m b/NYTPhotoViewer/NYTPhotosOverlayView.m similarity index 100% rename from Pod/Classes/ios/NYTPhotosOverlayView.m rename to NYTPhotoViewer/NYTPhotosOverlayView.m diff --git a/Pod/Classes/ios/NYTPhotosViewController.h b/NYTPhotoViewer/NYTPhotosViewController.h similarity index 98% rename from Pod/Classes/ios/NYTPhotosViewController.h rename to NYTPhotoViewer/NYTPhotosViewController.h index 6a1d8a94..f67a9d6a 100644 --- a/Pod/Classes/ios/NYTPhotosViewController.h +++ b/NYTPhotoViewer/NYTPhotosViewController.h @@ -85,6 +85,8 @@ extern NSString * const NYTPhotosViewControllerDidDismissNotification; /** * The object that acts as the delegate of the `NYTPhotosViewController`. + * + * @warning It is recommended that you pass a delegate to the designated initializer of this class; otherwise certain delegate methods may not be called for the initial photo displayed by this view controller. */ @property (nonatomic, weak, nullable) id delegate; diff --git a/Pod/Classes/ios/NYTPhotosViewController.m b/NYTPhotoViewer/NYTPhotosViewController.m similarity index 100% rename from Pod/Classes/ios/NYTPhotosViewController.m rename to NYTPhotoViewer/NYTPhotosViewController.m diff --git a/Pod/Classes/ios/NYTScalingImageView.h b/NYTPhotoViewer/NYTScalingImageView.h similarity index 100% rename from Pod/Classes/ios/NYTScalingImageView.h rename to NYTPhotoViewer/NYTScalingImageView.h diff --git a/Pod/Classes/ios/NYTScalingImageView.m b/NYTPhotoViewer/NYTScalingImageView.m similarity index 100% rename from Pod/Classes/ios/NYTScalingImageView.m rename to NYTPhotoViewer/NYTScalingImageView.m diff --git a/Pod/Classes/ios/Protocols/NYTPhoto.h b/NYTPhotoViewer/Protocols/NYTPhoto.h similarity index 100% rename from Pod/Classes/ios/Protocols/NYTPhoto.h rename to NYTPhotoViewer/Protocols/NYTPhoto.h diff --git a/Pod/Classes/ios/Protocols/NYTPhotoCaptionViewLayoutWidthHinting.h b/NYTPhotoViewer/Protocols/NYTPhotoCaptionViewLayoutWidthHinting.h similarity index 100% rename from Pod/Classes/ios/Protocols/NYTPhotoCaptionViewLayoutWidthHinting.h rename to NYTPhotoViewer/Protocols/NYTPhotoCaptionViewLayoutWidthHinting.h diff --git a/Pod/Classes/ios/Protocols/NYTPhotoContainer.h b/NYTPhotoViewer/Protocols/NYTPhotoContainer.h similarity index 100% rename from Pod/Classes/ios/Protocols/NYTPhotoContainer.h rename to NYTPhotoViewer/Protocols/NYTPhotoContainer.h diff --git a/Pod/Classes/ios/Protocols/NYTPhotosViewControllerDataSource.h b/NYTPhotoViewer/Protocols/NYTPhotosViewControllerDataSource.h similarity index 100% rename from Pod/Classes/ios/Protocols/NYTPhotosViewControllerDataSource.h rename to NYTPhotoViewer/Protocols/NYTPhotosViewControllerDataSource.h diff --git a/Pod/Classes/ios/Resource Loading/NSBundle+NYTPhotoViewer.h b/NYTPhotoViewer/Resource Loading/NSBundle+NYTPhotoViewer.h similarity index 100% rename from Pod/Classes/ios/Resource Loading/NSBundle+NYTPhotoViewer.h rename to NYTPhotoViewer/Resource Loading/NSBundle+NYTPhotoViewer.h diff --git a/Pod/Classes/ios/Resource Loading/NSBundle+NYTPhotoViewer.m b/NYTPhotoViewer/Resource Loading/NSBundle+NYTPhotoViewer.m similarity index 100% rename from Pod/Classes/ios/Resource Loading/NSBundle+NYTPhotoViewer.m rename to NYTPhotoViewer/Resource Loading/NSBundle+NYTPhotoViewer.m diff --git a/Example/Tests/Tests-Info.plist b/NYTPhotoViewerTests/Info.plist similarity index 86% rename from Example/Tests/Tests-Info.plist rename to NYTPhotoViewerTests/Info.plist index 169b6f71..ba72822e 100644 --- a/Example/Tests/Tests-Info.plist +++ b/NYTPhotoViewerTests/Info.plist @@ -5,11 +5,13 @@ CFBundleDevelopmentRegion en CFBundleExecutable - ${EXECUTABLE_NAME} + $(EXECUTABLE_NAME) CFBundleIdentifier $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleInfoDictionaryVersion 6.0 + CFBundleName + $(PRODUCT_NAME) CFBundlePackageType BNDL CFBundleShortVersionString diff --git a/Example/Tests/NYTPhotoCaptionViewTests.m b/NYTPhotoViewerTests/NYTPhotoCaptionViewTests.m similarity index 100% rename from Example/Tests/NYTPhotoCaptionViewTests.m rename to NYTPhotoViewerTests/NYTPhotoCaptionViewTests.m diff --git a/Example/Tests/NYTPhotoTransitionAnimatorTests.m b/NYTPhotoViewerTests/NYTPhotoTransitionAnimatorTests.m similarity index 100% rename from Example/Tests/NYTPhotoTransitionAnimatorTests.m rename to NYTPhotoViewerTests/NYTPhotoTransitionAnimatorTests.m diff --git a/Example/Tests/NYTPhotoViewControllerTests.m b/NYTPhotoViewerTests/NYTPhotoViewControllerTests.m similarity index 100% rename from Example/Tests/NYTPhotoViewControllerTests.m rename to NYTPhotoViewerTests/NYTPhotoViewControllerTests.m diff --git a/Example/Tests/NYTPhotosDataSourceTests.m b/NYTPhotoViewerTests/NYTPhotosDataSourceTests.m similarity index 100% rename from Example/Tests/NYTPhotosDataSourceTests.m rename to NYTPhotoViewerTests/NYTPhotosDataSourceTests.m diff --git a/Example/Tests/NYTPhotosOverlayViewTests.m b/NYTPhotoViewerTests/NYTPhotosOverlayViewTests.m similarity index 100% rename from Example/Tests/NYTPhotosOverlayViewTests.m rename to NYTPhotoViewerTests/NYTPhotosOverlayViewTests.m diff --git a/Example/Tests/NYTPhotosViewControllerTests.m b/NYTPhotoViewerTests/NYTPhotosViewControllerTests.m similarity index 100% rename from Example/Tests/NYTPhotosViewControllerTests.m rename to NYTPhotoViewerTests/NYTPhotosViewControllerTests.m diff --git a/Example/Tests/NYTScalingImageViewTests.m b/NYTPhotoViewerTests/NYTScalingImageViewTests.m similarity index 85% rename from Example/Tests/NYTScalingImageViewTests.m rename to NYTPhotoViewerTests/NYTScalingImageViewTests.m index 475e4b4e..162518b7 100644 --- a/Example/Tests/NYTScalingImageViewTests.m +++ b/NYTPhotoViewerTests/NYTScalingImageViewTests.m @@ -10,10 +10,7 @@ @import XCTest; #import - -#ifdef ANIMATED_GIF_SUPPORT #import -#endif @interface NYTScalingImageViewTests : XCTestCase @@ -70,11 +67,7 @@ - (void)testImageInitializationSetsImage { - (void)testDataInitializationSetsImage { NYTScalingImageView *scalingImageView = [[NYTScalingImageView alloc] initWithImageData:self.imageData frame:CGRectZero]; -#ifdef ANIMATED_GIF_SUPPORT - XCTAssertEqual(self.imageData, scalingImageView.imageView.animatedImage.data); -#else - XCTAssertNotNil(scalingImageView.imageView.image); -#endif + XCTAssertEqual(self.imageData, ((FLAnimatedImageView *)scalingImageView.imageView).animatedImage.data); } - (void)testUpdateImageUpdatesImage { @@ -90,21 +83,14 @@ - (void)testUpdateImageDataUpdatesImage { NYTScalingImageView *scalingImageView = [[NYTScalingImageView alloc] initWithImageData:self.imageData frame:CGRectZero]; [scalingImageView updateImageData:image2]; - -#ifdef ANIMATED_GIF_SUPPORT - XCTAssertEqual(image2, scalingImageView.imageView.animatedImage.data); -#else - XCTAssertNotNil(scalingImageView.imageView.image); -#endif + + XCTAssertEqual(image2, ((FLAnimatedImageView *)scalingImageView.imageView).animatedImage.data); } - (void)testImageViewIsOfCorrectKindAfterInitialization { NYTScalingImageView *scalingImageViewer = [[NYTScalingImageView alloc] initWithImageData:self.imageData frame:CGRectZero]; -#ifdef ANIMATED_GIF_SUPPORT + XCTAssertTrue([scalingImageViewer.imageView isKindOfClass:FLAnimatedImageView.class]); -#else - XCTAssertTrue([scalingImageViewer.imageView isKindOfClass:UIImageView.class]); -#endif } @end diff --git a/README.md b/README.md index 54019e1a..3cb8a263 100644 --- a/README.md +++ b/README.md @@ -18,10 +18,24 @@ NYTPhotosViewController *photosViewController = [[NYTPhotosViewController alloc] ## Installation -NYTPhotoViewer is available through [CocoaPods](http://cocoapods.org). To install it, simply add the following line to your Podfile: +### Carthage + +NYTPhotoViewer may be installed via [Carthage](https://github.com/Carthage/Carthage). To install it, simply add the following line to your `Cartfile`: ``` -pod 'NYTPhotoViewer', '~> 1.0.0' +github "NYTimes/NYTPhotoViewer" +``` + +Then, following the instructions for [integrating Carthage frameworks into your app](https://github.com/Carthage/Carthage#if-youre-building-for-ios-tvos-or-watchos), link the `NYTPhotoViewer` and `FLAnimatedImage` frameworks into your project. + +If you don't want support for animated GIFs, you may instead link against only the `NYTPhotoViewerCore` framework. + +### Cocoapods + +NYTPhotoViewer is available through [CocoaPods](http://cocoapods.org). To install it, simply add the following line to your `Podfile`: + +``` +pod 'NYTPhotoViewer', '~> 1.1.0' ``` ## Requirements @@ -34,9 +48,7 @@ See [`CHANGELOG.md`](https://github.com/NYTimes/NYTPhotoViewer/blob/develop/CHAN ## Swift -NYTPhotoViewer is written in Objective-C but is intended to be fully interoperable with Swift. You’ll need to include an [Objective-C bridging header](https://developer.apple.com/library/ios/documentation/Swift/Conceptual/BuildingCocoaApps/MixandMatch.html) like [this one from the sample Swift project](Example/NYTPhotoViewer-Swift/NYTPhotoViewer-Swift-Bridging-Header.h). - -If you experience any interoperability difficulties, please open an issue or pull request and we will work to resolve it. +NYTPhotoViewer is written in Objective-C but is intended to be fully interoperable with Swift. If you experience any interoperability difficulties, please open an issue or pull request and we will work to resolve it. ## Inspiration @@ -48,12 +60,6 @@ NYTPhotoViewer has a straightforward implementation using standard UIKit compone It is intended to be used without the need for subclassing, and as such it accepts model objects conforming to a `NYTPhoto` protocol and provides ample opportunity for customization via the `NYTPhotosViewControllerDelegate`. Since standard APIs are used, the client has full control over the transitions and customization of the `NYTPhotosViewController`. -## Todo - -- [Carthage](https://github.com/Carthage/Carthage) support (see [#61](https://github.com/NYTimes/NYTPhotoViewer/issues/61)). -- Animate bounds changes like Tweetbot and Facebook. -- Publicly expose the data source property. - ## License NYTPhotoViewer is available under the Apache 2.0 license. See [`LICENSE.md`](https://github.com/NYTimes/NYTPhotoViewer/blob/develop/LICENSE.md) for more information. diff --git a/scripts/bootstrap b/scripts/bootstrap new file mode 100755 index 00000000..114a4088 --- /dev/null +++ b/scripts/bootstrap @@ -0,0 +1,9 @@ +#!/usr/bin/env sh + +if ! command -v carthage > /dev/null; then + printf 'Carthage is not installed.\n' + printf 'See https://github.com/Carthage/Carthage for install instructions.\n' + exit 1 +fi + +carthage bootstrap --platform iOS --no-use-binaries --use-submodules \ No newline at end of file diff --git a/scripts/carthage-update b/scripts/carthage-update new file mode 100755 index 00000000..6a15f9c1 --- /dev/null +++ b/scripts/carthage-update @@ -0,0 +1,9 @@ +#!/usr/bin/env sh + +if ! command -v carthage > /dev/null; then + printf 'Carthage is not installed.\n' + printf 'See https://github.com/Carthage/Carthage for install instructions.\n' + exit 1 +fi + +carthage update --platform iOS --no-use-binaries --use-submodules \ No newline at end of file diff --git a/scripts/lint b/scripts/lint new file mode 100755 index 00000000..5dbfa902 --- /dev/null +++ b/scripts/lint @@ -0,0 +1,12 @@ +#!/usr/bin/env sh + +if ! command -v carthage > /dev/null; then + printf 'Carthage is not installed.\n' + printf 'See https://github.com/Carthage/Carthage for install instructions.\n' + exit 1 +fi + + +carthage build --platform iOS --no-use-binaries --use-submodules --no-skip-current + +pod lib lint