diff --git a/AFNetworking/AFHTTPOperation.h b/AFNetworking/AFHTTPOperation.h deleted file mode 100644 index b1cef56..0000000 --- a/AFNetworking/AFHTTPOperation.h +++ /dev/null @@ -1,62 +0,0 @@ -// AFHTTPOperation.h -// -// Copyright (c) 2011 Gowalla (http://gowalla.com/) -// -// 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. - -#import -#import "QHTTPOperation.h" -#import "AFCallback.h" - -extern NSString * const AFHTTPOperationDidStartNotification; -extern NSString * const AFHTTPOperationDidSucceedNotification; -extern NSString * const AFHTTPOperationDidFailNotification; - -extern NSString * const AFHTTPOperationParsedDataErrorKey; - -@class AFHTTPOperationCallback; - -@interface AFHTTPOperation : QHTTPOperation { -@private - AFHTTPOperationCallback *_callback; -} - -@property (nonatomic, retain) AFHTTPOperationCallback *callback; -@property (readonly) NSString *responseString; - -+ (id)operationWithRequest:(NSURLRequest *)urlRequest callback:(AFHTTPOperationCallback *)callback; -- (id)initWithRequest:(NSURLRequest *)urlRequest callback:(AFHTTPOperationCallback *)callback; - -@end - -#pragma mark - AFHTTPOperationCallback - -typedef void (^AFHTTPOperationSuccessBlock)(NSURLRequest *request, NSHTTPURLResponse *response, NSDictionary *data); -typedef void (^AFHTTPOperationErrorBlock)(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error); - -@protocol AFHTTPOperationCallback -@optional -+ (id)callbackWithSuccess:(AFHTTPOperationSuccessBlock)success; -+ (id)callbackWithSuccess:(AFHTTPOperationSuccessBlock)success error:(AFHTTPOperationErrorBlock)error; -@end - -@interface AFHTTPOperationCallback : AFCallback -@property (readwrite, nonatomic, copy) AFHTTPOperationSuccessBlock successBlock; -@property (readwrite, nonatomic, copy) AFHTTPOperationErrorBlock errorBlock; -@end diff --git a/AFNetworking/AFHTTPOperation.m b/AFNetworking/AFHTTPOperation.m deleted file mode 100644 index c7745e9..0000000 --- a/AFNetworking/AFHTTPOperation.m +++ /dev/null @@ -1,106 +0,0 @@ -// AFHTTPOperation.m -// -// Copyright (c) 2011 Gowalla (http://gowalla.com/) -// -// 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. - -#import "AFHTTPOperation.h" -#import "JSONKit.h" - -NSString * const AFHTTPOperationDidStartNotification = @"com.alamofire.http-operation.start"; -NSString * const AFHTTPOperationDidSucceedNotification = @"com.alamofire.http-operation.success"; -NSString * const AFHTTPOperationDidFailNotification = @"com.alamofire.http-operation.failure"; - -NSString * const AFHTTPOperationParsedDataErrorKey = @"com.alamofire.http-operation.error.parsed-data"; - -@implementation AFHTTPOperation -@synthesize callback = _callback; - -+ (id)operationWithRequest:(NSURLRequest *)urlRequest callback:(AFHTTPOperationCallback *)callback { - return [[[self alloc] initWithRequest:urlRequest callback:callback] autorelease]; -} - -- (id)initWithRequest:(NSURLRequest *)urlRequest callback:(AFHTTPOperationCallback *)callback { - self = [super initWithRequest:urlRequest]; - if (!self) { - return nil; - } - - self.acceptableContentTypes = [NSSet setWithObjects:@"application/json", @"text/plain", nil]; - self.callback = callback; - - return self; -} - -- (void)dealloc { - [_callback release]; - [super dealloc]; -} - -- (NSString *)responseString { - return [[[NSString alloc] initWithData:self.responseBody encoding:NSUTF8StringEncoding] autorelease]; -} - -#pragma mark - QRunLoopOperation - -- (void)operationDidStart { - [super operationDidStart]; - [[NSNotificationCenter defaultCenter] postNotificationName:AFHTTPOperationDidStartNotification object:self]; -} - -- (void)finishWithError:(NSError *)error { - [super finishWithError:error]; - - NSDictionary *data = nil; - if (self.contentTypeAcceptable) { - if ([[self.lastResponse MIMEType] isEqualToString:@"application/json"]) { - NSError *jsonError = nil; - data = [[JSONDecoder decoder] parseJSONData:self.responseBody error:&jsonError]; - } - } - - if (self.statusCodeAcceptable) { - [[NSNotificationCenter defaultCenter] postNotificationName:AFHTTPOperationDidSucceedNotification object:self]; - - if(self.callback.successBlock) { - self.callback.successBlock(self.lastRequest, self.lastResponse, data); - } - } else { - [[NSNotificationCenter defaultCenter] postNotificationName:AFHTTPOperationDidFailNotification object:self]; - - NSMutableDictionary *userInfo = [NSMutableDictionary dictionaryWithDictionary:[error userInfo]]; - [userInfo setValue:[NSHTTPURLResponse localizedStringForStatusCode:[self.lastResponse statusCode]] forKey:NSLocalizedDescriptionKey]; - [userInfo setValue:[[self.lastRequest URL] absoluteString] forKey:NSURLErrorFailingURLStringErrorKey]; - [userInfo setValue:data forKey:AFHTTPOperationParsedDataErrorKey]; - - error = [[[NSError alloc] initWithDomain:NSURLErrorDomain code:[self.lastResponse statusCode] userInfo:userInfo] autorelease]; - - if (self.callback.errorBlock) { - self.callback.errorBlock(self.lastRequest, self.lastResponse, error); - } - } -} - -@end - -#pragma mark - AFHTTPOperationCallback - -@implementation AFHTTPOperationCallback -@dynamic successBlock, errorBlock; -@end diff --git a/AFNetworking/AFImageRequestOperation.h b/AFNetworking/AFImageRequestOperation.h deleted file mode 100644 index 0245dc6..0000000 --- a/AFNetworking/AFImageRequestOperation.h +++ /dev/null @@ -1,73 +0,0 @@ -// AFImageRequestOperation.h -// -// Copyright (c) 2011 Gowalla (http://gowalla.com/) -// -// 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. - -#import -#import -#import "QHTTPOperation.h" -#import "AFCallback.h" - -typedef enum { - AFImageRequestResize = 1 << 1, - AFImageRequestRoundCorners = 1 << 2, - AFImageCacheProcessedImage = 1 << 0xA, - AFImageRequestDefaultOptions = AFImageRequestResize, -} AFImageRequestOptions; - -@class AFImageRequestOperationCallback; - -@interface AFImageRequestOperation : QHTTPOperation { -@private - AFImageRequestOperationCallback *_callback; -} - -@property (nonatomic, retain) AFImageRequestOperationCallback *callback; - -+ (id)operationWithRequest:(NSURLRequest *)urlRequest callback:(AFImageRequestOperationCallback *)callback; -- (id)initWithRequest:(NSURLRequest *)urlRequest callback:(AFImageRequestOperationCallback *)callback; - -@end - -#pragma mark - AFHTTPOperationCallback - -typedef void (^AFImageRequestOperationSuccessBlock)(UIImage *image); -typedef void (^AFImageRequestOperationErrorBlock)(NSError *error); - -@protocol AFImageRequestOperationCallback -@optional -+ (id)callbackWithSuccess:(AFImageRequestOperationSuccessBlock)success; -+ (id)callbackWithSuccess:(AFImageRequestOperationSuccessBlock)success error:(AFImageRequestOperationErrorBlock)error; -@end - -@interface AFImageRequestOperationCallback : AFCallback { -@private - CGSize _imageSize; - AFImageRequestOptions _options; -} - -@property (readwrite, nonatomic, assign) CGSize imageSize; -@property (readwrite, nonatomic, assign) AFImageRequestOptions options; - -@property (readwrite, nonatomic, copy) AFImageRequestOperationSuccessBlock successBlock; -@property (readwrite, nonatomic, copy) AFImageRequestOperationErrorBlock errorBlock; - -+ (id)callbackWithSuccess:(AFImageRequestOperationSuccessBlock)success imageSize:(CGSize)imageSize options:(AFImageRequestOptions)options; -@end diff --git a/AFNetworking/AFImageRequestOperation.m b/AFNetworking/AFImageRequestOperation.m deleted file mode 100644 index 5af1e1c..0000000 --- a/AFNetworking/AFImageRequestOperation.m +++ /dev/null @@ -1,143 +0,0 @@ -// AFImageRequestOperation.m -// -// Copyright (c) 2011 Gowalla (http://gowalla.com/) -// -// 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. - -#import "AFImageRequestOperation.h" - -#import "UIImage+AFNetworking.h" - -const CGFloat kAFImageRequestJPEGQuality = 0.8; -const NSUInteger kAFImageRequestMaximumResponseSize = 8 * 1024 * 1024; -static inline CGSize kAFImageRequestRoundedCornerRadii(CGSize imageSize) { - CGFloat dimension = fmaxf(imageSize.width, imageSize.height) * 0.1; - return CGSizeMake(dimension, dimension); -} - -@implementation AFImageRequestOperation -@synthesize callback = _callback; - -+ (id)operationWithRequest:(NSURLRequest *)urlRequest callback:(AFImageRequestOperationCallback *)callback { - return [[[self alloc] initWithRequest:urlRequest callback:callback] autorelease]; -} - -- (id)initWithRequest:(NSURLRequest *)urlRequest callback:(AFImageRequestOperationCallback *)callback { - self = [super initWithRequest:urlRequest]; - if (!self) { - return nil; - } - - self.maximumResponseSize = kAFImageRequestMaximumResponseSize; - - NSMutableIndexSet *statusCodes = [NSMutableIndexSet indexSetWithIndex:0]; - [statusCodes addIndexesInRange:NSMakeRange(200, 100)]; - self.acceptableStatusCodes = statusCodes; - self.acceptableContentTypes = [NSSet setWithObjects:@"image/png", @"image/jpeg", @"image/pjpeg", @"image/gif", @"application/x-0", nil]; - self.callback = callback; - - if (self.callback) { - self.runLoopModes = [NSSet setWithObjects:NSRunLoopCommonModes, NSDefaultRunLoopMode, nil]; - } - - return self; -} - -#pragma mark - QHTTPRequestOperation - -// QHTTPRequestOperation requires this to return an NSHTTPURLResponse, but in certain circumstances, -// this method would otherwise return an instance of its superclass, NSURLResponse -- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response { - if([response isKindOfClass:[NSHTTPURLResponse class]]) { - [super connection:connection didReceiveResponse:response]; - } else { - [super connection:connection didReceiveResponse:[[[NSHTTPURLResponse alloc] initWithURL:[response URL] MIMEType:[response MIMEType] expectedContentLength:[response expectedContentLength] textEncodingName:[response textEncodingName]] autorelease]]; - } -} - -#pragma mark - QRunLoopOperation - -- (void)finishWithError:(NSError *)error { - [super finishWithError:error]; - - if (error) { - if (self.callback.errorBlock) { - self.callback.errorBlock(error); - } - - return; - } - - UIImage *image = nil; - if ([[UIScreen mainScreen] scale] == 2.0) { - CGImageRef imageRef = [UIImage imageWithData:self.responseBody].CGImage; - image = [UIImage imageWithCGImage:imageRef scale:2.0 orientation:UIImageOrientationUp]; - } else { - image = [UIImage imageWithData:self.responseBody]; - } - - BOOL didProcessingOnImage = NO; - - if ((self.callback.options & AFImageRequestResize) && !(CGSizeEqualToSize(image.size, self.callback.imageSize) || CGSizeEqualToSize(self.callback.imageSize, CGSizeZero))) { - image = [UIImage imageByScalingAndCroppingImage:image size:self.callback.imageSize]; - didProcessingOnImage = YES; - } - if ((self.callback.options & AFImageRequestRoundCorners)) { - image = [UIImage imageByRoundingCornersOfImage:image corners:UIRectCornerAllCorners cornerRadii:kAFImageRequestRoundedCornerRadii(image.size)]; - didProcessingOnImage = YES; - } - - - if (self.callback.successBlock) { - self.callback.successBlock(image); - } - - if ((self.callback.options & AFImageCacheProcessedImage) && didProcessingOnImage) { - NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; - NSData *processedImageData = nil; - if ((self.callback.options & AFImageRequestRoundCorners) || [[[[self.lastRequest URL] path] pathExtension] isEqualToString:@"png"]) { - processedImageData = UIImagePNGRepresentation(image); - } else { - processedImageData = UIImageJPEGRepresentation(image, kAFImageRequestJPEGQuality); - } - NSURLResponse *response = [[[NSURLResponse alloc] initWithURL:[self.lastRequest URL] MIMEType:[self.lastResponse MIMEType] expectedContentLength:[processedImageData length] textEncodingName:[self.lastResponse textEncodingName]] autorelease]; - NSCachedURLResponse *cachedResponse = [[[NSCachedURLResponse alloc] initWithResponse:response data:processedImageData] autorelease]; - [[NSURLCache sharedURLCache] storeCachedResponse:cachedResponse forRequest:self.lastRequest]; - [pool drain]; - } -} - -@end - -#pragma mark - AFHTTPOperationCallback - -@implementation AFImageRequestOperationCallback : AFCallback -@synthesize options = _options; -@synthesize imageSize = _imageSize; -@dynamic successBlock, errorBlock; - -+ (id)callbackWithSuccess:(AFImageRequestOperationSuccessBlock)success imageSize:(CGSize)imageSize options:(AFImageRequestOptions)options { - id callback = [self callbackWithSuccess:success]; - [callback setImageSize:imageSize]; - [callback setOptions:options]; - - return callback; -} - -@end diff --git a/AFNetworking/QHTTPOperation/QHTTPOperation.h b/AFNetworking/QHTTPOperation/QHTTPOperation.h deleted file mode 100644 index 62332da..0000000 --- a/AFNetworking/QHTTPOperation/QHTTPOperation.h +++ /dev/null @@ -1,245 +0,0 @@ -/* - File: QHTTPOperation.h - - Contains: An NSOperation that runs an HTTP request. - - Written by: DTS - - Copyright: Copyright (c) 2010 Apple Inc. All Rights Reserved. - - Disclaimer: IMPORTANT: This Apple software is supplied to you by Apple Inc. - ("Apple") in consideration of your agreement to the following - terms, and your use, installation, modification or - redistribution of this Apple software constitutes acceptance of - these terms. If you do not agree with these terms, please do - not use, install, modify or redistribute this Apple software. - - In consideration of your agreement to abide by the following - terms, and subject to these terms, Apple grants you a personal, - non-exclusive license, under Apple's copyrights in this - original Apple software (the "Apple Software"), to use, - reproduce, modify and redistribute the Apple Software, with or - without modifications, in source and/or binary forms; provided - that if you redistribute the Apple Software in its entirety and - without modifications, you must retain this notice and the - following text and disclaimers in all such redistributions of - the Apple Software. Neither the name, trademarks, service marks - or logos of Apple Inc. may be used to endorse or promote - products derived from the Apple Software without specific prior - written permission from Apple. Except as expressly stated in - this notice, no other rights or licenses, express or implied, - are granted by Apple herein, including but not limited to any - patent rights that may be infringed by your derivative works or - by other works in which the Apple Software may be incorporated. - - The Apple Software is provided by Apple on an "AS IS" basis. - APPLE MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING - WITHOUT LIMITATION THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, - MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, REGARDING - THE APPLE SOFTWARE OR ITS USE AND OPERATION ALONE OR IN - COMBINATION WITH YOUR PRODUCTS. - - IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, - INCIDENTAL OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED - TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ARISING IN ANY WAY - OUT OF THE USE, REPRODUCTION, MODIFICATION AND/OR DISTRIBUTION - OF THE APPLE SOFTWARE, HOWEVER CAUSED AND WHETHER UNDER THEORY - OF CONTRACT, TORT (INCLUDING NEGLIGENCE), STRICT LIABILITY OR - OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE POSSIBILITY OF - SUCH DAMAGE. - -*/ - -#import "QRunLoopOperation.h" - -/* - QHTTPOperation is a general purpose NSOperation that runs an HTTP request. - You initialise it with an HTTP request and then, when you run the operation, - it sends the request and gathers the response. It is quite a complex - object because it handles a wide variety of edge cases, but it's very - easy to use in simple cases: - - 1. create the operation with the URL you want to get - - op = [[[QHTTPOperation alloc] initWithURL:url] autorelease]; - - 2. set up any non-default parameters, for example, set which HTTP - content types are acceptable - - op.acceptableContentTypes = [NSSet setWithObject:@"text/html"]; - - 3. enqueue the operation - - [queue addOperation:op]; - - 4. finally, when the operation is done, use the lastResponse and - error properties to find out how things went - - As mentioned above, QHTTPOperation is very general purpose. There are a - large number of configuration and result options available to you. - - o You can specify a NSURLRequest rather than just a URL. - - o You can configure the run loop and modes on which the NSURLConnection is - scheduled. - - o You can specify what HTTP status codes and content types are OK. - - o You can set an authentication delegate to handle authentication challenges. - - o You can accumulate responses in memory or in an NSOutputStream. - - o For in-memory responses, you can specify a default response size - (used to size the response buffer) and a maximum response size - (to prevent unbounded memory use). - - o You can get at the last request and the last response, to track - redirects. - - o There are a variety of funky debugging options to simulator errors - and delays. - - Finally, it's perfectly reasonable to subclass QHTTPOperation to meet you - own specific needs. Specifically, it's common for the subclass to - override -connection:didReceiveResponse: in order to setup the output - stream based on the specific details of the response. -*/ - -@protocol QHTTPOperationAuthenticationDelegate; - -@interface QHTTPOperation : QRunLoopOperation /* */ -{ - NSURLRequest * _request; - NSIndexSet * _acceptableStatusCodes; - NSSet * _acceptableContentTypes; - id _authenticationDelegate; - NSOutputStream * _responseOutputStream; - NSUInteger _defaultResponseSize; - NSUInteger _maximumResponseSize; - NSURLConnection * _connection; - BOOL _firstData; - NSMutableData * _dataAccumulator; - NSURLRequest * _lastRequest; - NSHTTPURLResponse * _lastResponse; - NSData * _responseBody; -#if ! defined(NDEBUG) - NSError * _debugError; - NSTimeInterval _debugDelay; - NSTimer * _debugDelayTimer; -#endif -} - -- (id)initWithRequest:(NSURLRequest *)request; // designated -- (id)initWithURL:(NSURL *)url; // convenience, calls +[NSURLRequest requestWithURL:] - -// Things that are configured by the init method and can't be changed. - -@property (copy, readonly) NSURLRequest * request; -@property (copy, readonly) NSURL * URL; - -// Things you can configure before queuing the operation. - -// runLoopThread and runLoopModes inherited from QRunLoopOperation -@property (copy, readwrite) NSIndexSet * acceptableStatusCodes; // default is nil, implying 200..299 -@property (copy, readwrite) NSSet * acceptableContentTypes; // default is nil, implying anything is acceptable -@property (assign, readwrite) id authenticationDelegate; - -#if ! defined(NDEBUG) -@property (copy, readwrite) NSError * debugError; // default is nil -@property (assign, readwrite) NSTimeInterval debugDelay; // default is none -#endif - -// Things you can configure up to the point where you start receiving data. -// Typically you would change these in -connection:didReceiveResponse:, but -// it is possible to change them up to the point where -connection:didReceiveData: -// is called for the first time (that is, you could override -connection:didReceiveData: -// and change these before calling super). - -// IMPORTANT: If you set a response stream, QHTTPOperation calls the response -// stream synchronously. This is fine for file and memory streams, but it would -// not work well for other types of streams (like a bound pair). - -@property (retain, readwrite) NSOutputStream * responseOutputStream; // defaults to nil, which puts response into responseBody -@property (assign, readwrite) NSUInteger defaultResponseSize; // default is 1 MB, ignored if responseOutputStream is set -@property (assign, readwrite) NSUInteger maximumResponseSize; // default is 4 MB, ignored if responseOutputStream is set - // defaults are 1/4 of the above on embedded - -// Things that are only meaningful after a response has been received; - -@property (assign, readonly, getter=isStatusCodeAcceptable) BOOL statusCodeAcceptable; -@property (assign, readonly, getter=isContentTypeAcceptable) BOOL contentTypeAcceptable; - -// Things that are only meaningful after the operation is finished. - -// error property inherited from QRunLoopOperation -@property (copy, readonly) NSURLRequest * lastRequest; -@property (copy, readonly) NSHTTPURLResponse * lastResponse; - -@property (copy, readonly) NSData * responseBody; - -@end - -@interface QHTTPOperation (NSURLConnectionDelegate) - -// QHTTPOperation implements all of these methods, so if you override them -// you must consider whether or not to call super. -// -// These will be called on the operation's run loop thread. - -- (BOOL)connection:(NSURLConnection *)connection canAuthenticateAgainstProtectionSpace:(NSURLProtectionSpace *)protectionSpace; - // Routes the request to the authentication delegate if it exists, otherwise - // just returns NO. - -- (void)connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge; - // Routes the request to the authentication delegate if it exists, otherwise - // just cancels the challenge. - -- (NSURLRequest *)connection:(NSURLConnection *)connection willSendRequest:(NSURLRequest *)request redirectResponse:(NSURLResponse *)response; - // Latches the request and response in lastRequest and lastResponse. - -- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response; - // Latches the response in lastResponse. - -- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data; - // If this is the first chunk of data, it decides whether the data is going to be - // routed to memory (responseBody) or a stream (responseOutputStream) and makes the - // appropriate preparations. For this and subsequent data it then actually shuffles - // the data to its destination. - -- (void)connectionDidFinishLoading:(NSURLConnection *)connection; - // Completes the operation with either no error (if the response status code is acceptable) - // or an error (otherwise). - -- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error; - // Completes the operation with the error. - -@end - -@protocol QHTTPOperationAuthenticationDelegate -@required - -// These are called on the operation's run loop thread and have the same semantics as their -// NSURLConnection equivalents. It's important to realise that there is no -// didCancelAuthenticationChallenge callback (because NSURLConnection doesn't issue one to us). -// Rather, an authentication delegate is expected to observe the operation and cancel itself -// if the operation completes while the challenge is running. - -- (BOOL)httpOperation:(QHTTPOperation *)operation canAuthenticateAgainstProtectionSpace:(NSURLProtectionSpace *)protectionSpace; -- (void)httpOperation:(QHTTPOperation *)operation didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge; - -@end - -extern NSString * kQHTTPOperationErrorDomain; - -// positive error codes are HTML status codes (when they are not allowed via acceptableStatusCodes) -// -// 0 is, of course, not a valid error code -// -// negative error codes are errors from the module - -enum { - kQHTTPOperationErrorResponseTooLarge = -1, - kQHTTPOperationErrorOnOutputStream = -2, - kQHTTPOperationErrorBadContentType = -3 -}; diff --git a/AFNetworking/QHTTPOperation/QHTTPOperation.m b/AFNetworking/QHTTPOperation/QHTTPOperation.m deleted file mode 100644 index fec3f19..0000000 --- a/AFNetworking/QHTTPOperation/QHTTPOperation.m +++ /dev/null @@ -1,653 +0,0 @@ -/* - File: QHTTPOperation.m - - Contains: An NSOperation that runs an HTTP request. - - Written by: DTS - - Copyright: Copyright (c) 2010 Apple Inc. All Rights Reserved. - - Disclaimer: IMPORTANT: This Apple software is supplied to you by Apple Inc. - ("Apple") in consideration of your agreement to the following - terms, and your use, installation, modification or - redistribution of this Apple software constitutes acceptance of - these terms. If you do not agree with these terms, please do - not use, install, modify or redistribute this Apple software. - - In consideration of your agreement to abide by the following - terms, and subject to these terms, Apple grants you a personal, - non-exclusive license, under Apple's copyrights in this - original Apple software (the "Apple Software"), to use, - reproduce, modify and redistribute the Apple Software, with or - without modifications, in source and/or binary forms; provided - that if you redistribute the Apple Software in its entirety and - without modifications, you must retain this notice and the - following text and disclaimers in all such redistributions of - the Apple Software. Neither the name, trademarks, service marks - or logos of Apple Inc. may be used to endorse or promote - products derived from the Apple Software without specific prior - written permission from Apple. Except as expressly stated in - this notice, no other rights or licenses, express or implied, - are granted by Apple herein, including but not limited to any - patent rights that may be infringed by your derivative works or - by other works in which the Apple Software may be incorporated. - - The Apple Software is provided by Apple on an "AS IS" basis. - APPLE MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING - WITHOUT LIMITATION THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, - MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, REGARDING - THE APPLE SOFTWARE OR ITS USE AND OPERATION ALONE OR IN - COMBINATION WITH YOUR PRODUCTS. - - IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, - INCIDENTAL OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED - TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ARISING IN ANY WAY - OUT OF THE USE, REPRODUCTION, MODIFICATION AND/OR DISTRIBUTION - OF THE APPLE SOFTWARE, HOWEVER CAUSED AND WHETHER UNDER THEORY - OF CONTRACT, TORT (INCLUDING NEGLIGENCE), STRICT LIABILITY OR - OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE POSSIBILITY OF - SUCH DAMAGE. - -*/ - -#import "QHTTPOperation.h" - -@interface QHTTPOperation () - -// Read/write versions of public properties - -@property (copy, readwrite) NSURLRequest * lastRequest; -@property (copy, readwrite) NSHTTPURLResponse * lastResponse; - -// Internal properties - -@property (retain, readwrite) NSURLConnection * connection; -@property (assign, readwrite) BOOL firstData; -@property (retain, readwrite) NSMutableData * dataAccumulator; - -#if ! defined(NDEBUG) -@property (retain, readwrite) NSTimer * debugDelayTimer; -#endif - -@end - -@implementation QHTTPOperation - -#pragma mark * Initialise and finalise - -- (id)initWithRequest:(NSURLRequest *)request - // See comment in header. -{ - // any thread - assert(request != nil); - assert([request URL] != nil); - // Because we require an NSHTTPURLResponse, we only support HTTP and HTTPS URLs. - assert([[[[request URL] scheme] lowercaseString] isEqual:@"http"] || [[[[request URL] scheme] lowercaseString] isEqual:@"https"]); - self = [super init]; - if (self != nil) { - #if TARGET_OS_EMBEDDED || TARGET_IPHONE_SIMULATOR - static const NSUInteger kPlatformReductionFactor = 4; - #else - static const NSUInteger kPlatformReductionFactor = 1; - #endif - self->_request = [request copy]; - self->_defaultResponseSize = 1 * 1024 * 1024 / kPlatformReductionFactor; - self->_maximumResponseSize = 4 * 1024 * 1024 / kPlatformReductionFactor; - self->_firstData = YES; - } - return self; -} - -- (id)initWithURL:(NSURL *)url - // See comment in header. -{ - assert(url != nil); - return [self initWithRequest:[NSURLRequest requestWithURL:url]]; -} - -- (void)dealloc -{ - #if ! defined(NDEBUG) - [self->_debugError release]; - [self->_debugDelayTimer invalidate]; - [self->_debugDelayTimer release]; - #endif - // any thread - [self->_request release]; - [self->_acceptableStatusCodes release]; - [self->_acceptableContentTypes release]; - [self->_responseOutputStream release]; - assert(self->_connection == nil); // should have been shut down by now - [self->_dataAccumulator release]; - [self->_lastRequest release]; - [self->_lastResponse release]; - [self->_responseBody release]; - [super dealloc]; -} - -#pragma mark * Properties - -// We write our own settings for many properties because we want to bounce -// sets that occur in the wrong state. And, given that we've written the -// setter anyway, we also avoid KVO notifications when the value doesn't change. - -@synthesize request = _request; - -@synthesize authenticationDelegate = _authenticationDelegate; - -+ (BOOL)automaticallyNotifiesObserversOfAuthenticationDelegate -{ - return NO; -} - -- (id)authenticationDelegate -{ - return self->_authenticationDelegate; -} - -- (void)setAuthenticationDelegate:(id)newValue -{ - if (self.state != kQRunLoopOperationStateInited) { - assert(NO); - } else { - if (newValue != self->_authenticationDelegate) { - [self willChangeValueForKey:@"authenticationDelegate"]; - self->_authenticationDelegate = newValue; - [self didChangeValueForKey:@"authenticationDelegate"]; - } - } -} - -@synthesize acceptableStatusCodes = _acceptableStatusCodes; - -+ (BOOL)automaticallyNotifiesObserversOfAcceptableStatusCodes -{ - return NO; -} - -- (NSIndexSet *)acceptableStatusCodes -{ - return [[self->_acceptableStatusCodes retain] autorelease]; -} - -- (void)setAcceptableStatusCodes:(NSIndexSet *)newValue -{ - if (self.state != kQRunLoopOperationStateInited) { - assert(NO); - } else { - if (newValue != self->_acceptableStatusCodes) { - [self willChangeValueForKey:@"acceptableStatusCodes"]; - [self->_acceptableStatusCodes autorelease]; - self->_acceptableStatusCodes = [newValue copy]; - [self didChangeValueForKey:@"acceptableStatusCodes"]; - } - } -} - -@synthesize acceptableContentTypes = _acceptableContentTypes; - -+ (BOOL)automaticallyNotifiesObserversOfAcceptableContentTypes -{ - return NO; -} - -- (NSSet *)acceptableContentTypes -{ - return [[self->_acceptableContentTypes retain] autorelease]; -} - -- (void)setAcceptableContentTypes:(NSSet *)newValue -{ - if (self.state != kQRunLoopOperationStateInited) { - assert(NO); - } else { - if (newValue != self->_acceptableContentTypes) { - [self willChangeValueForKey:@"acceptableContentTypes"]; - [self->_acceptableContentTypes autorelease]; - self->_acceptableContentTypes = [newValue copy]; - [self didChangeValueForKey:@"acceptableContentTypes"]; - } - } -} - -@synthesize responseOutputStream = _responseOutputStream; - -+ (BOOL)automaticallyNotifiesObserversOfResponseOutputStream -{ - return NO; -} - -- (NSOutputStream *)responseOutputStream -{ - return [[self->_responseOutputStream retain] autorelease]; -} - -- (void)setResponseOutputStream:(NSOutputStream *)newValue -{ - if (self.dataAccumulator != nil) { - assert(NO); - } else { - if (newValue != self->_responseOutputStream) { - [self willChangeValueForKey:@"responseOutputStream"]; - [self->_responseOutputStream autorelease]; - self->_responseOutputStream = [newValue retain]; - [self didChangeValueForKey:@"responseOutputStream"]; - } - } -} - -@synthesize defaultResponseSize = _defaultResponseSize; - -+ (BOOL)automaticallyNotifiesObserversOfDefaultResponseSize -{ - return NO; -} - -- (NSUInteger)defaultResponseSize -{ - return self->_defaultResponseSize; -} - -- (void)setDefaultResponseSize:(NSUInteger)newValue -{ - if (self.dataAccumulator != nil) { - assert(NO); - } else { - if (newValue != self->_defaultResponseSize) { - [self willChangeValueForKey:@"defaultResponseSize"]; - self->_defaultResponseSize = newValue; - [self didChangeValueForKey:@"defaultResponseSize"]; - } - } -} - -@synthesize maximumResponseSize = _maximumResponseSize; - -+ (BOOL)automaticallyNotifiesObserversOfMaximumResponseSize -{ - return NO; -} - -- (NSUInteger)maximumResponseSize -{ - return self->_maximumResponseSize; -} - -- (void)setMaximumResponseSize:(NSUInteger)newValue -{ - if (self.dataAccumulator != nil) { - assert(NO); - } else { - if (newValue != self->_maximumResponseSize) { - [self willChangeValueForKey:@"maximumResponseSize"]; - self->_maximumResponseSize = newValue; - [self didChangeValueForKey:@"maximumResponseSize"]; - } - } -} - -@synthesize lastRequest = _lastRequest; -@synthesize lastResponse = _lastResponse; -@synthesize responseBody = _responseBody; - -@synthesize connection = _connection; -@synthesize firstData = _firstData; -@synthesize dataAccumulator = _dataAccumulator; - -- (NSURL *)URL -{ - return [self.request URL]; -} - -- (BOOL)isStatusCodeAcceptable -{ - NSIndexSet * acceptableStatusCodes; - NSInteger statusCode; - - assert(self.lastResponse != nil); - - acceptableStatusCodes = self.acceptableStatusCodes; - if (acceptableStatusCodes == nil) { - acceptableStatusCodes = [NSIndexSet indexSetWithIndexesInRange:NSMakeRange(200, 100)]; - } - assert(acceptableStatusCodes != nil); - - statusCode = [self.lastResponse statusCode]; - return (statusCode >= 0) && [acceptableStatusCodes containsIndex: (NSUInteger) statusCode]; -} - -- (BOOL)isContentTypeAcceptable -{ - NSString * contentType; - - assert(self.lastResponse != nil); - contentType = [self.lastResponse MIMEType]; - return (self.acceptableContentTypes == nil) || ((contentType != nil) && [self.acceptableContentTypes containsObject:contentType]); -} - -#pragma mark * Start and finish overrides - -- (void)operationDidStart - // Called by QRunLoopOperation when the operation starts. This kicks of an - // asynchronous NSURLConnection. -{ - assert(self.isActualRunLoopThread); - assert(self.state == kQRunLoopOperationStateExecuting); - - assert(self.defaultResponseSize > 0); - assert(self.maximumResponseSize > 0); - assert(self.defaultResponseSize <= self.maximumResponseSize); - - assert(self.request != nil); - - // If a debug error is set, apply that error rather than running the connection. - - #if ! defined(NDEBUG) - if (self.debugError != nil) { - [self finishWithError:self.debugError]; - return; - } - #endif - - // Create a connection that's scheduled in the required run loop modes. - - assert(self.connection == nil); - self.connection = [[[NSURLConnection alloc] initWithRequest:self.request delegate:self startImmediately:NO] autorelease]; - assert(self.connection != nil); - - for (NSString * mode in self.actualRunLoopModes) { - [self.connection scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:mode]; - } - - [self.connection start]; -} - -- (void)operationWillFinish - // Called by QRunLoopOperation when the operation has finished. We - // do various bits of tidying up. -{ - assert(self.isActualRunLoopThread); - assert(self.state == kQRunLoopOperationStateExecuting); - - // It is possible to hit this state of the operation is cancelled while - // the debugDelayTimer is running. In that case, hey, we'll just accept - // the inevitable and finish rather than trying anything else clever. - - #if ! defined(NDEBUG) - if (self.debugDelayTimer != nil) { - [self.debugDelayTimer invalidate]; - self.debugDelayTimer = nil; - } - #endif - - [self.connection cancel]; - self.connection = nil; - - // If we have an output stream, close it at this point. We might never - // have actually opened this stream but, AFAICT, closing an unopened stream - // doesn't hurt. - - if (self.responseOutputStream != nil) { - [self.responseOutputStream close]; - } -} - -- (void)finishWithError:(NSError *)error - // We override -finishWithError: just so we can handle our debug delay. -{ - // If a debug delay was set, don't finish now but rather start the debug delay timer - // and have it do the actual finish. We clear self.debugDelay so that the next - // time this code runs its doesn't do this again. - // - // We only do this in the non-cancellation case. In the cancellation case, we - // just stop immediately. - - #if ! defined(NDEBUG) - if (self.debugDelay > 0.0) { - if ( (error != nil) && [[error domain] isEqual:NSCocoaErrorDomain] && ([error code] == NSUserCancelledError) ) { - self.debugDelay = 0.0; - } else { - assert(self.debugDelayTimer == nil); - self.debugDelayTimer = [NSTimer timerWithTimeInterval:self.debugDelay target:self selector:@selector(debugDelayTimerDone:) userInfo:error repeats:NO]; - assert(self.debugDelayTimer != nil); - for (NSString * mode in self.actualRunLoopModes) { - [[NSRunLoop currentRunLoop] addTimer:self.debugDelayTimer forMode:mode]; - } - self.debugDelay = 0.0; - return; - } - } - #endif - - [super finishWithError:error]; -} - -#if ! defined(NDEBUG) - -@synthesize debugError = _debugError; -@synthesize debugDelay = _debugDelay; -@synthesize debugDelayTimer = _debugDelayTimer; - -- (void)debugDelayTimerDone:(NSTimer *)timer -{ - NSError * error; - - assert(timer == self.debugDelayTimer); - - error = [[[timer userInfo] retain] autorelease]; - assert( (error == nil) || [error isKindOfClass:[NSError class]] ); - - [self.debugDelayTimer invalidate]; - self.debugDelayTimer = nil; - - [self finishWithError:error]; -} - -#endif - -#pragma mark * NSURLConnection delegate callbacks - -- (BOOL)connection:(NSURLConnection *)connection canAuthenticateAgainstProtectionSpace:(NSURLProtectionSpace *)protectionSpace - // See comment in header. -{ - BOOL result; - - assert(self.isActualRunLoopThread); - assert(connection == self.connection); - #pragma unused(connection) - assert(protectionSpace != nil); - #pragma unused(protectionSpace) - - result = NO; - if (self.authenticationDelegate != nil) { - result = [self.authenticationDelegate httpOperation:self canAuthenticateAgainstProtectionSpace:protectionSpace]; - } - return result; -} - -- (void)connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge - // See comment in header. -{ - assert(self.isActualRunLoopThread); - assert(connection == self.connection); - #pragma unused(connection) - assert(challenge != nil); - #pragma unused(challenge) - - if (self.authenticationDelegate != nil) { - [self.authenticationDelegate httpOperation:self didReceiveAuthenticationChallenge:challenge]; - } else { - if ( [challenge previousFailureCount] == 0 ) { - [[challenge sender] continueWithoutCredentialForAuthenticationChallenge:challenge]; - } else { - [[challenge sender] cancelAuthenticationChallenge:challenge]; - } - } -} - -- (NSURLRequest *)connection:(NSURLConnection *)connection willSendRequest:(NSURLRequest *)request redirectResponse:(NSURLResponse *)response - // See comment in header. -{ - assert(self.isActualRunLoopThread); - assert(connection == self.connection); - #pragma unused(connection) - assert( (response == nil) || [response isKindOfClass:[NSHTTPURLResponse class]] ); - - self.lastRequest = request; - self.lastResponse = (NSHTTPURLResponse *) response; - return request; -} - -- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response - // See comment in header. -{ - assert(self.isActualRunLoopThread); - assert(connection == self.connection); - #pragma unused(connection) - assert([response isKindOfClass:[NSHTTPURLResponse class]]); - - self.lastResponse = (NSHTTPURLResponse *) response; - - // We don't check the status code here because we want to give the client an opportunity - // to get the data of the error message. Perhaps we /should/ check the content type - // here, but I'm not sure whether that's the right thing to do. -} - -- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data - // See comment in header. -{ - BOOL success; - - assert(self.isActualRunLoopThread); - assert(connection == self.connection); - #pragma unused(connection) - assert(data != nil); - - // If we don't yet have a destination for the data, calculate one. Note that, even - // if there is an output stream, we don't use it for error responses. - - success = YES; - if (self.firstData) { - assert(self.dataAccumulator == nil); - - if ( (self.responseOutputStream == nil) || ! self.isStatusCodeAcceptable ) { - long long length; - - assert(self.dataAccumulator == nil); - - length = [self.lastResponse expectedContentLength]; - if (length == NSURLResponseUnknownLength) { - length = self.defaultResponseSize; - } - if (length <= (long long) self.maximumResponseSize) { - self.dataAccumulator = [NSMutableData dataWithCapacity:(NSUInteger)length]; - } else { - [self finishWithError:[NSError errorWithDomain:kQHTTPOperationErrorDomain code:kQHTTPOperationErrorResponseTooLarge userInfo:nil]]; - success = NO; - } - } - - // If the data is going to an output stream, open it. - - if (success) { - if (self.dataAccumulator == nil) { - assert(self.responseOutputStream != nil); - [self.responseOutputStream open]; - } - } - - self.firstData = NO; - } - - // Write the data to its destination. - - if (success) { - if (self.dataAccumulator != nil) { - if ( ([self.dataAccumulator length] + [data length]) <= self.maximumResponseSize ) { - [self.dataAccumulator appendData:data]; - } else { - [self finishWithError:[NSError errorWithDomain:kQHTTPOperationErrorDomain code:kQHTTPOperationErrorResponseTooLarge userInfo:nil]]; - } - } else { - NSUInteger dataOffset; - NSUInteger dataLength; - const uint8_t * dataPtr; - NSError * error; - NSInteger bytesWritten; - - assert(self.responseOutputStream != nil); - - dataOffset = 0; - dataLength = [data length]; - dataPtr = [data bytes]; - error = nil; - do { - if (dataOffset == dataLength) { - break; - } - bytesWritten = [self.responseOutputStream write:&dataPtr[dataOffset] maxLength:dataLength - dataOffset]; - if (bytesWritten <= 0) { - error = [self.responseOutputStream streamError]; - if (error == nil) { - error = [NSError errorWithDomain:kQHTTPOperationErrorDomain code:kQHTTPOperationErrorOnOutputStream userInfo:nil]; - } - break; - } else { - dataOffset += bytesWritten; - } - } while (YES); - - if (error != nil) { - [self finishWithError:error]; - } - } - } -} - -- (void)connectionDidFinishLoading:(NSURLConnection *)connection - // See comment in header. -{ - assert(self.isActualRunLoopThread); - assert(connection == self.connection); - #pragma unused(connection) - - assert(self.lastResponse != nil); - - // Swap the data accumulator over to the response data so that we don't trigger a copy. - - assert(self->_responseBody == nil); - self->_responseBody = self->_dataAccumulator; - self->_dataAccumulator = nil; - - // Because we fill out _dataAccumulator lazily, an empty body will leave _dataAccumulator - // set to nil. That's not what our clients expect, so we fix it here. - - if (self->_responseBody == nil) { - self->_responseBody = [[NSData alloc] init]; - assert(self->_responseBody != nil); - } - - if ( ! self.isStatusCodeAcceptable ) { - [self finishWithError:[NSError errorWithDomain:kQHTTPOperationErrorDomain code:self.lastResponse.statusCode userInfo:nil]]; - } else if ( ! self.isContentTypeAcceptable ) { - [self finishWithError:[NSError errorWithDomain:kQHTTPOperationErrorDomain code:kQHTTPOperationErrorBadContentType userInfo:nil]]; - } else { - [self finishWithError:nil]; - } -} - -- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error - // See comment in header. -{ - assert(self.isActualRunLoopThread); - assert(connection == self.connection); - #pragma unused(connection) - assert(error != nil); - - [self finishWithError:error]; -} - -@end - -NSString * kQHTTPOperationErrorDomain = @"kQHTTPOperationErrorDomain"; diff --git a/AFNetworking/QHTTPOperation/QRunLoopOperation.h b/AFNetworking/QHTTPOperation/QRunLoopOperation.h deleted file mode 100644 index 7c1f76f..0000000 --- a/AFNetworking/QHTTPOperation/QRunLoopOperation.h +++ /dev/null @@ -1,119 +0,0 @@ -/* - File: QRunLoopOperation.h - - Contains: An abstract subclass of NSOperation for async run loop based operations. - - Written by: DTS - - Copyright: Copyright (c) 2010 Apple Inc. All Rights Reserved. - - Disclaimer: IMPORTANT: This Apple software is supplied to you by Apple Inc. - ("Apple") in consideration of your agreement to the following - terms, and your use, installation, modification or - redistribution of this Apple software constitutes acceptance of - these terms. If you do not agree with these terms, please do - not use, install, modify or redistribute this Apple software. - - In consideration of your agreement to abide by the following - terms, and subject to these terms, Apple grants you a personal, - non-exclusive license, under Apple's copyrights in this - original Apple software (the "Apple Software"), to use, - reproduce, modify and redistribute the Apple Software, with or - without modifications, in source and/or binary forms; provided - that if you redistribute the Apple Software in its entirety and - without modifications, you must retain this notice and the - following text and disclaimers in all such redistributions of - the Apple Software. Neither the name, trademarks, service marks - or logos of Apple Inc. may be used to endorse or promote - products derived from the Apple Software without specific prior - written permission from Apple. Except as expressly stated in - this notice, no other rights or licenses, express or implied, - are granted by Apple herein, including but not limited to any - patent rights that may be infringed by your derivative works or - by other works in which the Apple Software may be incorporated. - - The Apple Software is provided by Apple on an "AS IS" basis. - APPLE MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING - WITHOUT LIMITATION THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, - MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, REGARDING - THE APPLE SOFTWARE OR ITS USE AND OPERATION ALONE OR IN - COMBINATION WITH YOUR PRODUCTS. - - IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, - INCIDENTAL OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED - TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ARISING IN ANY WAY - OUT OF THE USE, REPRODUCTION, MODIFICATION AND/OR DISTRIBUTION - OF THE APPLE SOFTWARE, HOWEVER CAUSED AND WHETHER UNDER THEORY - OF CONTRACT, TORT (INCLUDING NEGLIGENCE), STRICT LIABILITY OR - OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE POSSIBILITY OF - SUCH DAMAGE. - -*/ - -#import - -enum QRunLoopOperationState { - kQRunLoopOperationStateInited, - kQRunLoopOperationStateExecuting, - kQRunLoopOperationStateFinished -}; -typedef enum QRunLoopOperationState QRunLoopOperationState; - -@interface QRunLoopOperation : NSOperation -{ - QRunLoopOperationState _state; - NSThread * _runLoopThread; - NSSet * _runLoopModes; - NSError * _error; -} - -// Things you can configure before queuing the operation. - -// IMPORTANT: Do not change these after queuing the operation; it's very likely that -// bad things will happen if you do. - -@property (retain, readwrite) NSThread * runLoopThread; // default is nil, implying main thread -@property (copy, readwrite) NSSet * runLoopModes; // default is nil, implying set containing NSDefaultRunLoopMode - -// Things that are only meaningful after the operation is finished. - -@property (copy, readonly ) NSError * error; - -// Things you can only alter implicitly. - -@property (assign, readonly ) QRunLoopOperationState state; -@property (retain, readonly ) NSThread * actualRunLoopThread; // main thread if runLoopThread is nil, runLoopThread otherwise -@property (assign, readonly ) BOOL isActualRunLoopThread; // YES if the current thread is the actual run loop thread -@property (copy, readonly ) NSSet * actualRunLoopModes; // set containing NSDefaultRunLoopMode if runLoopModes is nil or empty, runLoopModes otherwise - -@end - -@interface QRunLoopOperation (SubClassSupport) - -// Override points - -// A subclass will probably need to override -operationDidStart and -operationWillFinish -// to set up and tear down its run loop sources, respectively. These are always called -// on the actual run loop thread. -// -// Note that -operationWillFinish will be called even if the operation is cancelled. -// -// -operationWillFinish can check the error property to see whether the operation was -// successful. error will be NSCocoaErrorDomain/NSUserCancelledError on cancellation. -// -// -operationDidStart is allowed to call -finishWithError:. - -- (void)operationDidStart; -- (void)operationWillFinish; - -// Support methods - -// A subclass should call finishWithError: when the operation is complete, passing nil -// for no error and an error otherwise. It must call this on the actual run loop thread. -// -// Note that this will call -operationWillFinish before returning. - -- (void)finishWithError:(NSError *)error; - -@end diff --git a/AFNetworking/QHTTPOperation/QRunLoopOperation.m b/AFNetworking/QHTTPOperation/QRunLoopOperation.m deleted file mode 100644 index ab75aa2..0000000 --- a/AFNetworking/QHTTPOperation/QRunLoopOperation.m +++ /dev/null @@ -1,359 +0,0 @@ -/* - File: QRunLoopOperation.m - - Contains: An abstract subclass of NSOperation for async run loop based operations. - - Written by: DTS - - Copyright: Copyright (c) 2010 Apple Inc. All Rights Reserved. - - Disclaimer: IMPORTANT: This Apple software is supplied to you by Apple Inc. - ("Apple") in consideration of your agreement to the following - terms, and your use, installation, modification or - redistribution of this Apple software constitutes acceptance of - these terms. If you do not agree with these terms, please do - not use, install, modify or redistribute this Apple software. - - In consideration of your agreement to abide by the following - terms, and subject to these terms, Apple grants you a personal, - non-exclusive license, under Apple's copyrights in this - original Apple software (the "Apple Software"), to use, - reproduce, modify and redistribute the Apple Software, with or - without modifications, in source and/or binary forms; provided - that if you redistribute the Apple Software in its entirety and - without modifications, you must retain this notice and the - following text and disclaimers in all such redistributions of - the Apple Software. Neither the name, trademarks, service marks - or logos of Apple Inc. may be used to endorse or promote - products derived from the Apple Software without specific prior - written permission from Apple. Except as expressly stated in - this notice, no other rights or licenses, express or implied, - are granted by Apple herein, including but not limited to any - patent rights that may be infringed by your derivative works or - by other works in which the Apple Software may be incorporated. - - The Apple Software is provided by Apple on an "AS IS" basis. - APPLE MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING - WITHOUT LIMITATION THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, - MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, REGARDING - THE APPLE SOFTWARE OR ITS USE AND OPERATION ALONE OR IN - COMBINATION WITH YOUR PRODUCTS. - - IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, - INCIDENTAL OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED - TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ARISING IN ANY WAY - OUT OF THE USE, REPRODUCTION, MODIFICATION AND/OR DISTRIBUTION - OF THE APPLE SOFTWARE, HOWEVER CAUSED AND WHETHER UNDER THEORY - OF CONTRACT, TORT (INCLUDING NEGLIGENCE), STRICT LIABILITY OR - OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE POSSIBILITY OF - SUCH DAMAGE. - -*/ - -#import "QRunLoopOperation.h" - -/* - Theory of Operation - ------------------- - Some critical points: - - 1. By the time we're running on the run loop thread, we know that all further state - transitions happen on the run loop thread. That's because there are only three - states (inited, executing, and finished) and run loop thread code can only run - in the last two states and the transition from executing to finished is - always done on the run loop thread. - - 2. -start can only be called once. So run loop thread code doesn't have to worry - about racing with -start because, by the time the run loop thread code runs, - -start has already been called. - - 3. -cancel can be called multiple times from any thread. Run loop thread code - must take a lot of care with do the right thing with cancellation. - - Some state transitions: - - 1. init -> dealloc - 2. init -> cancel -> dealloc -XXX 3. init -> cancel -> start -> finish -> dealloc - 4. init -> cancel -> start -> startOnRunLoopThreadThread -> finish dealloc -!!! 5. init -> start -> cancel -> startOnRunLoopThreadThread -> finish -> cancelOnRunLoopThreadThread -> dealloc -XXX 6. init -> start -> cancel -> cancelOnRunLoopThreadThread -> startOnRunLoopThreadThread -> finish -> dealloc -XXX 7. init -> start -> cancel -> startOnRunLoopThreadThread -> cancelOnRunLoopThreadThread -> finish -> dealloc - 8. init -> start -> startOnRunLoopThreadThread -> finish -> dealloc - 9. init -> start -> startOnRunLoopThreadThread -> cancel -> cancelOnRunLoopThreadThread -> finish -> dealloc -!!! 10. init -> start -> startOnRunLoopThreadThread -> cancel -> finish -> cancelOnRunLoopThreadThread -> dealloc - 11. init -> start -> startOnRunLoopThreadThread -> finish -> cancel -> dealloc - - Markup: - XXX means that the case doesn't happen. - !!! means that the case is interesting. - - Described: - - 1. It's valid to allocate an operation and never run it. - 2. It's also valid to allocate an operation, cancel it, and yet never run it. - 3. While it's valid to cancel an operation before it starting it, this case doesn't - happen because -start always bounces to the run loop thread to maintain the invariant - that the executing to finished transition always happens on the run loop thread. - 4. In this -startOnRunLoopThread detects the cancellation and finishes immediately. - 5. Because the -cancel can happen on any thread, it's possible for the -cancel - to come in between the -start and the -startOnRunLoop thread. In this case - -startOnRunLoopThread notices isCancelled and finishes straightaway. And - -cancelOnRunLoopThread detects that the operation is finished and does nothing. - 6. This case can never happen because -performSelecton:onThread:xxx - callbacks happen in order, -start is synchronised with -cancel, and -cancel - only schedules if -start has run. - 7. This case can never happen because -startOnRunLoopThread will finish immediately - if it detects isCancelled (see case 5). - 8. This is the standard run-to-completion case. - 9. This is the standard cancellation case. -cancelOnRunLoopThread wins the race - with finish, and it detects that the operation is executing and actually cancels. - 10. In this case the -cancelOnRunLoopThread loses the race with finish, but that's OK - because -cancelOnRunLoopThread already does nothing if the operation is already - finished. - 11. Cancellating after finishing still sets isCancelled but has no impact - on the RunLoop thread code. -*/ - -@interface QRunLoopOperation () - -// read/write versions of public properties - -@property (assign, readwrite) QRunLoopOperationState state; -@property (copy, readwrite) NSError * error; - -@end - -@implementation QRunLoopOperation - -- (id)init -{ - self = [super init]; - if (self != nil) { - assert(self->_state == kQRunLoopOperationStateInited); - } - return self; -} - -- (void)dealloc -{ - assert(self->_state != kQRunLoopOperationStateExecuting); - [self->_runLoopModes release]; - [self->_runLoopThread release]; - [self->_error release]; - [super dealloc]; -} - -#pragma mark * Properties - -@synthesize runLoopThread = _runLoopThread; -@synthesize runLoopModes = _runLoopModes; - -- (NSThread *)actualRunLoopThread - // Returns the effective run loop thread, that is, the one set by the user - // or, if that's not set, the main thread. -{ - NSThread * result; - - result = self.runLoopThread; - if (result == nil) { - result = [NSThread mainThread]; - } - return result; -} - -- (BOOL)isActualRunLoopThread - // Returns YES if the current thread is the actual run loop thread. -{ - return [[NSThread currentThread] isEqual:self.actualRunLoopThread]; -} - -- (NSSet *)actualRunLoopModes -{ - NSSet * result; - - result = self.runLoopModes; - if ( (result == nil) || ([result count] == 0) ) { - result = [NSSet setWithObject:NSDefaultRunLoopMode]; - } - return result; -} - -@synthesize error = _error; - -#pragma mark * Core state transitions - -- (QRunLoopOperationState)state -{ - return self->_state; -} - -- (void)setState:(QRunLoopOperationState)newState - // Change the state of the operation, sending the appropriate KVO notifications. -{ - // any thread - - @synchronized (self) { - QRunLoopOperationState oldState; - - // The following check is really important. The state can only go forward, and there - // should be no redundant changes to the state (that is, newState must never be - // equal to self->_state). - - assert(newState > self->_state); - - // Transitions from executing to finished must be done on the run loop thread. - - assert( (newState != kQRunLoopOperationStateFinished) || self.isActualRunLoopThread ); - - // inited + executing -> isExecuting - // inited + finished -> isFinished - // executing + finished -> isExecuting + isFinished - - oldState = self->_state; - if ( (newState == kQRunLoopOperationStateExecuting) || (oldState == kQRunLoopOperationStateExecuting) ) { - [self willChangeValueForKey:@"isExecuting"]; - } - if (newState == kQRunLoopOperationStateFinished) { - [self willChangeValueForKey:@"isFinished"]; - } - self->_state = newState; - if (newState == kQRunLoopOperationStateFinished) { - [self didChangeValueForKey:@"isFinished"]; - } - if ( (newState == kQRunLoopOperationStateExecuting) || (oldState == kQRunLoopOperationStateExecuting) ) { - [self didChangeValueForKey:@"isExecuting"]; - } - } -} - -- (void)startOnRunLoopThread - // Starts the operation. The actual -start method is very simple, - // deferring all of the work to be done on the run loop thread by this - // method. -{ - assert(self.isActualRunLoopThread); - assert(self.state == kQRunLoopOperationStateExecuting); - - if ([self isCancelled]) { - - // We were cancelled before we even got running. Flip the the finished - // state immediately. - - [self finishWithError:[NSError errorWithDomain:NSCocoaErrorDomain code:NSUserCancelledError userInfo:nil]]; - } else { - [self operationDidStart]; - } -} - -- (void)cancelOnRunLoopThread - // Cancels the operation. -{ - assert(self.isActualRunLoopThread); - - // We know that a) state was kQRunLoopOperationStateExecuting when we were - // scheduled (that's enforced by -cancel), and b) the state can't go - // backwards (that's enforced by -setState), so we know the state must - // either be kQRunLoopOperationStateExecuting or kQRunLoopOperationStateFinished. - // We also know that the transition from executing to finished always - // happens on the run loop thread. Thus, we don't need to lock here. - // We can look at state and, if we're executing, trigger a cancellation. - - if (self.state == kQRunLoopOperationStateExecuting) { - [self finishWithError:[NSError errorWithDomain:NSCocoaErrorDomain code:NSUserCancelledError userInfo:nil]]; - } -} - -- (void)finishWithError:(NSError *)error -{ - assert(self.isActualRunLoopThread); - // error may be nil - - if (self.error == nil) { - self.error = error; - } - [self operationWillFinish]; - self.state = kQRunLoopOperationStateFinished; -} - -#pragma mark * Subclass override points - -- (void)operationDidStart -{ - assert(self.isActualRunLoopThread); -} - -- (void)operationWillFinish -{ - assert(self.isActualRunLoopThread); -} - -#pragma mark * Overrides - -- (BOOL)isConcurrent -{ - // any thread - return YES; -} - -- (BOOL)isExecuting -{ - // any thread - return self.state == kQRunLoopOperationStateExecuting; -} - -- (BOOL)isFinished -{ - // any thread - return self.state == kQRunLoopOperationStateFinished; -} - -- (void)start -{ - // any thread - - assert(self.state == kQRunLoopOperationStateInited); - - // We have to change the state here, otherwise isExecuting won't necessarily return - // true by the time we return from -start. Also, we don't test for cancellation - // here because that would a) result in us sending isFinished notifications on a - // thread that isn't our run loop thread, and b) confuse the core cancellation code, - // which expects to run on our run loop thread. Finally, we don't have to worry - // about races with other threads calling -start. Only one thread is allowed to - // start us at a time. - - self.state = kQRunLoopOperationStateExecuting; - [self performSelector:@selector(startOnRunLoopThread) onThread:self.actualRunLoopThread withObject:nil waitUntilDone:NO modes:[self.actualRunLoopModes allObjects]]; -} - -- (void)cancel -{ - BOOL runCancelOnRunLoopThread; - BOOL oldValue; - - // any thread - - // We need to synchronise here to avoid state changes to isCancelled and state - // while we're running. - - @synchronized (self) { - oldValue = [self isCancelled]; - - // Call our super class so that isCancelled starts returning true immediately. - - [super cancel]; - - // If we were the one to set isCancelled (that is, we won the race with regards - // other threads calling -cancel) and we're actually running (that is, we lost - // the race with other threads calling -start and the run loop thread finishing), - // we schedule to run on the run loop thread. - - runCancelOnRunLoopThread = ! oldValue && self.state == kQRunLoopOperationStateExecuting; - } - if (runCancelOnRunLoopThread) { - [self performSelector:@selector(cancelOnRunLoopThread) onThread:self.actualRunLoopThread withObject:nil waitUntilDone:YES modes:[self.actualRunLoopModes allObjects]]; - } -} - -@end diff --git a/Example/AFHTTPRequestOperation.h b/Example/AFHTTPRequestOperation.h new file mode 100644 index 0000000..8fa7b1c --- /dev/null +++ b/Example/AFHTTPRequestOperation.h @@ -0,0 +1,56 @@ +// AFHTTPOperation.h +// +// Copyright (c) 2011 Gowalla (http://gowalla.com/) +// +// 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. + +#import + +extern NSString * const AFHTTPOperationDidStartNotification; +extern NSString * const AFHTTPOperationDidFinishNotification; + +@interface AFHTTPRequestOperation : NSOperation { +@private + NSURLConnection *_connection; + NSPort *_port; + NSSet *_runLoopModes; + + NSURLRequest *_request; + NSHTTPURLResponse *_response; + + NSData *_responseBody; + NSMutableData *_dataAccumulator; +} + +@property (nonatomic, retain) NSURLConnection *connection; +@property (nonatomic, retain) NSSet *runLoopModes; + +@property (nonatomic, retain) NSURLRequest *request; +@property (nonatomic, retain) NSHTTPURLResponse *response; +@property (nonatomic, retain) NSError *error; + +@property (nonatomic, retain) NSData *responseBody; +@property (readonly) NSString *responseString; + ++ (id)operationWithRequest:(NSURLRequest *)urlRequest + completion:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, NSData *data, NSError *error))completion; + +- (id)initWithRequest:(NSURLRequest *)urlRequest; + +@end diff --git a/Example/AFHTTPRequestOperation.m b/Example/AFHTTPRequestOperation.m new file mode 100644 index 0000000..827844c --- /dev/null +++ b/Example/AFHTTPRequestOperation.m @@ -0,0 +1,269 @@ +// AFHTTPOperation.m +// +// Copyright (c) 2011 Gowalla (http://gowalla.com/) +// +// 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. + +#import "AFHTTPRequestOperation.h" +#import "AFNetworkActivityIndicatorManager.h" + +typedef enum { + AFHTTPOperationReadyState = 1, + AFHTTPOperationExecutingState = 2, + AFHTTPOperationFinishedState = 3, + AFHTTPOperationCancelledState = 4, +} AFHTTPOperationState; + +NSString * const AFHTTPOperationDidStartNotification = @"com.alamofire.http-operation.start"; +NSString * const AFHTTPOperationDidFinishNotification = @"com.alamofire.http-operation.finish"; + +typedef void (^AFHTTPRequestOperationCompletionBlock)(NSURLRequest *request, NSHTTPURLResponse *response, NSData *data, NSError *error); + +static inline NSString * AFKeyPathFromOperationState(AFHTTPOperationState state) { + switch (state) { + case AFHTTPOperationReadyState: + return @"isReady"; + case AFHTTPOperationExecutingState: + return @"isExecuting"; + case AFHTTPOperationFinishedState: + case AFHTTPOperationCancelledState: + return @"isFinished"; + default: + return @"state"; + } +} + +static inline BOOL AFHTTPOperationStateTransitionIsValid(AFHTTPOperationState from, AFHTTPOperationState to) { + if (from == to) { + return NO; + } + + switch (from) { + case AFHTTPOperationReadyState: + switch (to) { + case AFHTTPOperationExecutingState: + case AFHTTPOperationCancelledState: + return YES; + default: + return NO; + } + case AFHTTPOperationExecutingState: + switch (to) { + case AFHTTPOperationReadyState: + return NO; + default: + return YES; + } + case AFHTTPOperationFinishedState: + case AFHTTPOperationCancelledState: + return NO; + default: + return YES; + } +} + +@interface AFHTTPRequestOperation () +@property (nonatomic, assign) AFHTTPOperationState state; +@property (readwrite, nonatomic, retain) NSPort *port; +@property (readwrite, nonatomic, retain) NSMutableData *dataAccumulator; +@property (readwrite, nonatomic, copy) AFHTTPRequestOperationCompletionBlock completion; +@end + +@implementation AFHTTPRequestOperation +@synthesize state = _state; +@synthesize connection = _connection; +@synthesize runLoopModes = _runLoopModes; +@synthesize port = _port; +@synthesize request = _request; +@synthesize response = _response; +@synthesize error = _error; +@synthesize responseBody = _responseBody; +@synthesize dataAccumulator = _dataAccumulator; +@synthesize completion = _completion; + ++ (id)operationWithRequest:(NSURLRequest *)urlRequest + completion:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, NSData *data, NSError *error))completion +{ + AFHTTPRequestOperation *operation = [[[self alloc] initWithRequest:urlRequest] autorelease]; + operation.completion = completion; + + return operation; +} + +- (id)initWithRequest:(NSURLRequest *)urlRequest { + self = [super init]; + if (!self) { + return nil; + } + + self.request = urlRequest; + + self.runLoopModes = [NSSet setWithObjects:NSDefaultRunLoopMode, NSRunLoopCommonModes, nil]; + + self.state = AFHTTPOperationReadyState; + + return self; +} + +- (void)dealloc { + [_runLoopModes release]; + [_port release]; + + [_request release]; + [_response release]; + [_responseBody release]; + [_dataAccumulator release]; + + [_connection release]; + + [_completion release]; + [super dealloc]; +} + +- (void)setState:(AFHTTPOperationState)state { + if (!AFHTTPOperationStateTransitionIsValid(self.state, state)) { + return; + } + + NSString *oldStateKey = AFKeyPathFromOperationState(self.state); + NSString *newStateKey = AFKeyPathFromOperationState(state); + + [self willChangeValueForKey:newStateKey]; + [self willChangeValueForKey:oldStateKey]; + _state = state; + [self didChangeValueForKey:oldStateKey]; + [self didChangeValueForKey:newStateKey]; + + switch (state) { + case AFHTTPOperationExecutingState: + [[AFNetworkActivityIndicatorManager sharedManager] startAnimating]; + [[NSNotificationCenter defaultCenter] postNotificationName:AFHTTPOperationDidStartNotification object:self]; + break; + case AFHTTPOperationFinishedState: + case AFHTTPOperationCancelledState: + [[AFNetworkActivityIndicatorManager sharedManager] stopAnimating]; + [[NSNotificationCenter defaultCenter] postNotificationName:AFHTTPOperationDidFinishNotification object:self]; + + for (NSString *runLoopMode in self.runLoopModes) { + [[NSRunLoop currentRunLoop] removePort:self.port forMode:runLoopMode]; + [self.connection unscheduleFromRunLoop:[NSRunLoop currentRunLoop] forMode:runLoopMode]; + } + CFRunLoopStop([[NSRunLoop currentRunLoop] getCFRunLoop]); + break; + default: + break; + } +} + +- (NSString *)responseString { + return [[[NSString alloc] initWithData:self.responseBody encoding:NSUTF8StringEncoding] autorelease]; +} + +#pragma mark - NSOperation + +- (BOOL)isReady { + return self.state == AFHTTPOperationReadyState; +} + +- (BOOL)isExecuting { + return self.state == AFHTTPOperationExecutingState; +} + +- (BOOL)isFinished { + return self.state == AFHTTPOperationFinishedState || self.isCancelled; +} + +- (BOOL)isCancelled { + return self.state == AFHTTPOperationCancelledState; +} + +- (BOOL)isConcurrent { + return YES; +} + +- (void)start { + if (self.isFinished) { + return; + } + + self.state = AFHTTPOperationExecutingState; + + self.connection = [[[NSURLConnection alloc] initWithRequest:self.request delegate:self startImmediately:NO] autorelease]; + self.port = [NSPort port]; + + NSRunLoop *runLoop = [NSRunLoop currentRunLoop]; + for (NSString *runLoopMode in self.runLoopModes) { + [self.connection scheduleInRunLoop:runLoop forMode:runLoopMode]; + [runLoop addPort:self.port forMode:runLoopMode]; + } + + [self.connection start]; + + [runLoop run]; +} + +- (void)cancel { + self.state = AFHTTPOperationCancelledState; + + [self.connection cancel]; +} + +#pragma mark - AFHTTPRequestOperation + +- (void)finish { + if (self.isCancelled) { + return; + } + + if (self.completion) { + self.completion(self.request, self.response, self.responseBody, self.error); + } +} + +#pragma mark - NSURLConnection + +- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response { + self.response = (NSHTTPURLResponse *)response; + NSUInteger contentLength = MIN(MAX(abs(response.expectedContentLength), 1024), 1024 * 1024 * 8); + + self.dataAccumulator = [NSMutableData dataWithCapacity:contentLength]; +} + +- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data { + [self.dataAccumulator appendData:data]; +} + +- (void)connectionDidFinishLoading:(NSURLConnection *)connection { + self.state = AFHTTPOperationFinishedState; + + self.responseBody = [NSData dataWithData:self.dataAccumulator]; + self.dataAccumulator = nil; + + [self performSelectorOnMainThread:@selector(finish) withObject:nil waitUntilDone:YES modes:[self.runLoopModes allObjects]]; +} + +- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error { + self.state = AFHTTPOperationFinishedState; + + self.error = error; + + [self performSelectorOnMainThread:@selector(finish) withObject:nil waitUntilDone:YES modes:[self.runLoopModes allObjects]]; +} + +@end diff --git a/Example/Classes/AFImageRequest.h b/Example/AFImageCache.h similarity index 62% rename from Example/Classes/AFImageRequest.h rename to Example/AFImageCache.h index 2c9833d..8cbe227 100644 --- a/Example/Classes/AFImageRequest.h +++ b/Example/AFImageCache.h @@ -1,4 +1,4 @@ -// AFImageRequest.h +// AFImageCache.h // // Copyright (c) 2011 Gowalla (http://gowalla.com/) // @@ -20,20 +20,20 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. +#import #import "AFImageRequestOperation.h" -@protocol AFImageRequester -@required -- (void)setImageURLString:(NSString *)urlString; -- (void)setImageURLString:(NSString *)urlString options:(AFImageRequestOptions)options; -@optional -@property (nonatomic, copy) NSString *imageURLString; -@end +@interface AFImageCache : NSCache -@interface AFImageRequest : NSObject ++ (id)sharedImageCache; + +- (UIImage *)cachedImageForRequest:(NSURLRequest *)urlRequest + imageSize:(CGSize)imageSize + options:(AFImageRequestOptions)options; + +- (void)cacheImage:(UIImage *)image + forRequest:(NSURLRequest *)urlRequest + imageSize:(CGSize)imageSize + options:(AFImageRequestOptions)options; -+ (void)requestImageWithURLString:(NSString *)urlString options:(AFImageRequestOptions)options block:(void (^)(UIImage *image))block; -+ (void)requestImageWithURLString:(NSString *)urlString size:(CGSize)imageSize options:(AFImageRequestOptions)options block:(void (^)(UIImage *image))block; -+ (void)cancelImageRequestOperationsForURLString:(NSString *)urlString; -+ (void)cancelAllImageRequestOperations; @end diff --git a/Example/AFImageCache.m b/Example/AFImageCache.m new file mode 100644 index 0000000..330a6c6 --- /dev/null +++ b/Example/AFImageCache.m @@ -0,0 +1,60 @@ +// AFImageCache.m +// +// Copyright (c) 2011 Gowalla (http://gowalla.com/) +// +// 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. + +#import "AFImageCache.h" + +static inline NSString * AFImageCacheKey(NSURLRequest *urlRequest, CGSize imageSize, AFImageRequestOptions options) { + return [[[urlRequest URL] absoluteString] stringByAppendingFormat:@"#%fx%f:%d", imageSize.width, imageSize.height, options]; +} + +@implementation AFImageCache + ++ (id)sharedImageCache { + static NSCache *_sharedImageCache = nil; + + if (!_sharedImageCache) { + _sharedImageCache = [[self alloc] init]; + } + + return _sharedImageCache; +} + +- (UIImage *)cachedImageForRequest:(NSURLRequest *)urlRequest + imageSize:(CGSize)imageSize + options:(AFImageRequestOptions)options +{ + return [self objectForKey:AFImageCacheKey(urlRequest, imageSize, options)]; +} + +- (void)cacheImage:(UIImage *)image + forRequest:(NSURLRequest *)urlRequest + imageSize:(CGSize)imageSize + options:(AFImageRequestOptions)options +{ + if (!image) { + return; + } + + [self setObject:image forKey:AFImageCacheKey(urlRequest, imageSize, options)]; +} + +@end diff --git a/Example/AFImageRequestOperation.h b/Example/AFImageRequestOperation.h new file mode 100644 index 0000000..8c0f48c --- /dev/null +++ b/Example/AFImageRequestOperation.h @@ -0,0 +1,42 @@ +// AFImageRequestOperation.h +// +// Copyright (c) 2011 Gowalla (http://gowalla.com/) +// +// 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. + +#import +#import +#import "AFHTTPRequestOperation.h" + +typedef enum { + AFImageRequestDefaultOptions = 0, + AFImageRequestRoundCorners = 1 << 1, +} AFImageRequestOptions; + +@interface AFImageRequestOperation : AFHTTPRequestOperation + ++ (id)operationWithRequest:(NSURLRequest *)urlRequest + success:(void (^)(UIImage *image))success; + ++ (id)operationWithRequest:(NSURLRequest *)urlRequest + imageSize:(CGSize)imageSize + options:(AFImageRequestOptions)options + success:(void (^)(UIImage *image))success; + +@end diff --git a/Example/AFImageRequestOperation.m b/Example/AFImageRequestOperation.m new file mode 100644 index 0000000..6830ad5 --- /dev/null +++ b/Example/AFImageRequestOperation.m @@ -0,0 +1,88 @@ +// AFImageRequestOperation.m +// +// Copyright (c) 2011 Gowalla (http://gowalla.com/) +// +// 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. + +#import "AFImageRequestOperation.h" +#import "AFImageCache.h" + +#import "UIImage+AFNetworking.h" + +static CGFloat const kAFImageRequestJPEGQuality = 0.8; +static NSUInteger const kAFImageRequestMaximumResponseSize = 8 * 1024 * 1024; + +static inline CGSize kAFImageRequestRoundedCornerRadii(CGSize imageSize) { + CGFloat dimension = fmaxf(imageSize.width, imageSize.height) * 0.1; + return CGSizeMake(dimension, dimension); +} + +@implementation AFImageRequestOperation + ++ (id)operationWithRequest:(NSURLRequest *)urlRequest + success:(void (^)(UIImage *image))success +{ + return [self operationWithRequest:urlRequest imageSize:CGSizeZero options:AFImageRequestDefaultOptions success:success]; +} + ++ (id)operationWithRequest:(NSURLRequest *)urlRequest + imageSize:(CGSize)imageSize + options:(AFImageRequestOptions)options + success:(void (^)(UIImage *image))success +{ + return [self operationWithRequest:urlRequest completion:^(NSURLRequest *request, NSHTTPURLResponse *response, NSData *data, NSError *error) { + UIImage *image = nil; + if ([[UIScreen mainScreen] scale] == 2.0) { + CGImageRef imageRef = [[UIImage imageWithData:data] CGImage]; + image = [UIImage imageWithCGImage:imageRef scale:2.0 orientation:UIImageOrientationUp]; + } else { + image = [UIImage imageWithData:data]; + } + + if (!(CGSizeEqualToSize(image.size, imageSize) || CGSizeEqualToSize(imageSize, CGSizeZero))) { + image = [UIImage imageByScalingAndCroppingImage:image size:imageSize]; + } + if ((options & AFImageRequestRoundCorners)) { + image = [UIImage imageByRoundingCornersOfImage:image corners:UIRectCornerAllCorners cornerRadii:kAFImageRequestRoundedCornerRadii(image.size)]; + } + + dispatch_async(dispatch_get_main_queue(), ^(void) { + if (success) { + success(image); + } + }); + + dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^(void) { + [[AFImageCache sharedImageCache] cacheImage:image forRequest:request imageSize:imageSize options:options]; + }); + }]; +} + +- (id)initWithRequest:(NSURLRequest *)urlRequest { + self = [super initWithRequest:urlRequest]; + if (!self) { + return nil; + } + + self.runLoopModes = [NSSet setWithObject:NSRunLoopCommonModes]; + + return self; +} + +@end diff --git a/AFNetworking/AFCallback.m b/Example/AFJSONRequestOperation.h similarity index 56% rename from AFNetworking/AFCallback.m rename to Example/AFJSONRequestOperation.h index db7f1a9..a163aee 100644 --- a/AFNetworking/AFCallback.m +++ b/Example/AFJSONRequestOperation.h @@ -1,4 +1,4 @@ -// AFCallback.m +// AFJSONRequestOperation.h // // Copyright (c) 2011 Gowalla (http://gowalla.com/) // @@ -20,41 +20,21 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. -#import "AFCallback.h" +#import "AFHTTPRequestOperation.h" + +@interface AFJSONRequestOperation : AFHTTPRequestOperation + ++ (id)operationWithRequest:(NSURLRequest *)urlRequest + success:(void (^)(NSDictionary *JSON))success; + ++ (id)operationWithRequest:(NSURLRequest *)urlRequest + success:(void (^)(NSDictionary *JSON))success + failure:(void (^)(NSError *error))failure; + ++ (id)operationWithRequest:(NSURLRequest *)urlRequest + acceptableStatusCodes:(NSIndexSet *)acceptableStatusCodes + acceptableContentTypes:(NSSet *)acceptableContentTypes + success:(void (^)(NSDictionary *JSON))success + failure:(void (^)(NSError *error))failure; -@interface AFCallback () -@property (readwrite, nonatomic, copy) id successBlock; -@property (readwrite, nonatomic, copy) id errorBlock; @end - -@implementation AFCallback -@synthesize successBlock = _successBlock; -@synthesize errorBlock = _errorBlock; - -+ (id)callbackWithSuccess:(id)success { - return [self callbackWithSuccess:success error:nil]; -} - -+ (id)callbackWithSuccess:(id)success error:(id)error { - id callback = [[[self alloc] init] autorelease]; - [callback setSuccessBlock:success]; - [callback setErrorBlock:error]; - - return callback; -} - -- (id)init { - if ([self class] == [AFCallback class]) { - [NSException raise:NSInternalInconsistencyException format:@"You must override %@ in a subclass", NSStringFromSelector(_cmd)]; - } - - return [super init]; -} - -- (void)dealloc { - [_successBlock release]; - [_errorBlock release]; - [super dealloc]; -} - -@end \ No newline at end of file diff --git a/Example/AFJSONRequestOperation.m b/Example/AFJSONRequestOperation.m new file mode 100644 index 0000000..9acb579 --- /dev/null +++ b/Example/AFJSONRequestOperation.m @@ -0,0 +1,75 @@ +// AFJSONRequestOperation.m +// +// Copyright (c) 2011 Gowalla (http://gowalla.com/) +// +// 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. + +#import "AFJSONRequestOperation.h" +#import "JSONKit.h" + +@implementation AFJSONRequestOperation + ++ (id)operationWithRequest:(NSURLRequest *)urlRequest + success:(void (^)(NSDictionary *JSON))success +{ + return [self operationWithRequest:urlRequest success:success failure:nil]; +} + ++ (id)operationWithRequest:(NSURLRequest *)urlRequest + success:(void (^)(NSDictionary *JSON))success + failure:(void (^)(NSError *error))failure +{ + NSIndexSet *acceptableStatusCodes = [NSIndexSet indexSetWithIndexesInRange:NSMakeRange(200, 100)]; + NSSet *acceptableContentTypes = [NSSet setWithObjects:@"application/json", @"application/x-javascript", @"text/javascript", @"text/x-javascript", @"text/x-json", @"text/plain", nil]; + + return [self operationWithRequest:urlRequest acceptableStatusCodes:acceptableStatusCodes acceptableContentTypes:acceptableContentTypes success:success failure:failure]; +} + ++ (id)operationWithRequest:(NSURLRequest *)urlRequest + acceptableStatusCodes:(NSIndexSet *)acceptableStatusCodes + acceptableContentTypes:(NSSet *)acceptableContentTypes + success:(void (^)(NSDictionary *JSON))success + failure:(void (^)(NSError *error))failure +{ + return [self operationWithRequest:urlRequest completion:^(NSURLRequest *request, NSHTTPURLResponse *response, NSData *data, NSError *error) { + BOOL statusCodeAcceptable = [acceptableStatusCodes containsIndex:[response statusCode]]; + BOOL contentTypeAcceptable = [acceptableContentTypes containsObject:[response MIMEType]]; + if (!statusCodeAcceptable || !contentTypeAcceptable) { + NSMutableDictionary *userInfo = [NSMutableDictionary dictionary]; + [userInfo setValue:[NSHTTPURLResponse localizedStringForStatusCode:[response statusCode]] forKey:NSLocalizedDescriptionKey]; + [userInfo setValue:[request URL] forKey:NSURLErrorFailingURLErrorKey]; + + error = [[[NSError alloc] initWithDomain:NSURLErrorDomain code:[response statusCode] userInfo:userInfo] autorelease]; + } + + if (error) { + if (failure) { + failure(error); + } + } else { + NSDictionary *JSON = [[JSONDecoder decoder] objectWithData:data error:&error]; + + if (success) { + success(JSON); + } + } + }]; +} + +@end diff --git a/AFNetworking/AFCallback.h b/Example/AFNetworkActivityIndicatorManager.h similarity index 83% rename from AFNetworking/AFCallback.h rename to Example/AFNetworkActivityIndicatorManager.h index 0385ea9..1729d26 100644 --- a/AFNetworking/AFCallback.h +++ b/Example/AFNetworkActivityIndicatorManager.h @@ -1,4 +1,4 @@ -// AFCallback.h +// AFNetworkActivityIndicatorManager.h // // Copyright (c) 2011 Gowalla (http://gowalla.com/) // @@ -22,15 +22,14 @@ #import -@protocol AFCallback -+ (id)callbackWithSuccess:(id)success; -+ (id)callbackWithSuccess:(id)success error:(id)error; -@end - -@interface AFCallback : NSObject { +@interface AFNetworkActivityIndicatorManager : NSObject { @private - id _successBlock; - id _errorBlock; + NSUInteger _activityCount; } -@end \ No newline at end of file ++ (AFNetworkActivityIndicatorManager *)sharedManager; + +- (void)startAnimating; +- (void)stopAnimating; + +@end diff --git a/Example/AFNetworkActivityIndicatorManager.m b/Example/AFNetworkActivityIndicatorManager.m new file mode 100644 index 0000000..7217b18 --- /dev/null +++ b/Example/AFNetworkActivityIndicatorManager.m @@ -0,0 +1,57 @@ +// AFNetworkActivityIndicatorManager.m +// +// Copyright (c) 2011 Gowalla (http://gowalla.com/) +// +// 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. + +#import "AFNetworkActivityIndicatorManager.h" + +@interface AFNetworkActivityIndicatorManager () +@property (readwrite, nonatomic, assign) NSUInteger activityCount; +@end + +@implementation AFNetworkActivityIndicatorManager +@synthesize activityCount = _activityCount; + ++ (AFNetworkActivityIndicatorManager *)sharedManager { + static AFNetworkActivityIndicatorManager *_sharedManager = nil; + if (!_sharedManager) { + _sharedManager = [[AFNetworkActivityIndicatorManager alloc] init]; + } + + return _sharedManager; +} + +- (void)setActivityCount:(NSUInteger)activityCount { + [self willChangeValueForKey:@"activityCount"]; + _activityCount = MAX(activityCount, 0); + [self didChangeValueForKey:@"activityCount"]; + + [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:self.activityCount > 0]; +} + +- (void)startAnimating { + self.activityCount += 1; +} + +- (void)stopAnimating { + self.activityCount -= 1; +} + +@end diff --git a/Example/AFNetworking Example.xcodeproj/project.pbxproj b/Example/AFNetworking Example.xcodeproj/project.pbxproj index 249439a..7ce6660 100644 --- a/Example/AFNetworking Example.xcodeproj/project.pbxproj +++ b/Example/AFNetworking Example.xcodeproj/project.pbxproj @@ -7,20 +7,20 @@ objects = { /* Begin PBXBuildFile section */ + F874B5B113E0937400B28E3E /* AFHTTPRequestOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = F874B5A413E0937400B28E3E /* AFHTTPRequestOperation.m */; }; + F874B5B213E0937400B28E3E /* AFJSONRequestOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = F874B5A613E0937400B28E3E /* AFJSONRequestOperation.m */; }; + F874B5B313E0937400B28E3E /* AFImageRequestOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = F874B5A813E0937400B28E3E /* AFImageRequestOperation.m */; }; + F874B5B413E0937400B28E3E /* AFImageCache.m in Sources */ = {isa = PBXBuildFile; fileRef = F874B5AA13E0937400B28E3E /* AFImageCache.m */; }; + F874B5B513E0937400B28E3E /* AFRestClient.m in Sources */ = {isa = PBXBuildFile; fileRef = F874B5AC13E0937400B28E3E /* AFRestClient.m */; }; + F874B5B613E0937400B28E3E /* UIImage+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = F874B5AE13E0937400B28E3E /* UIImage+AFNetworking.m */; }; + F874B5B713E0937400B28E3E /* UIImageView+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = F874B5B013E0937400B28E3E /* UIImageView+AFNetworking.m */; }; + F874B5BA13E096C400B28E3E /* AFNetworkActivityIndicatorManager.m in Sources */ = {isa = PBXBuildFile; fileRef = F874B5B913E096C400B28E3E /* AFNetworkActivityIndicatorManager.m */; }; F8D25D191396A9D300CF3BD6 /* placeholder-stamp.png in Resources */ = {isa = PBXBuildFile; fileRef = F8D25D171396A9D300CF3BD6 /* placeholder-stamp.png */; }; F8D25D1A1396A9D300CF3BD6 /* placeholder-stamp@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = F8D25D181396A9D300CF3BD6 /* placeholder-stamp@2x.png */; }; F8DA09D21396ABED0057D0CC /* AFGowallaAPIClient.m in Sources */ = {isa = PBXBuildFile; fileRef = F8D25D1D1396A9DE00CF3BD6 /* AFGowallaAPIClient.m */; }; - F8DA09D31396ABED0057D0CC /* AFImageRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = F8D25D1E1396A9DE00CF3BD6 /* AFImageRequest.m */; }; F8DA09D41396ABED0057D0CC /* NearbySpotsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = F8DA09C81396AB690057D0CC /* NearbySpotsViewController.m */; }; F8DA09D51396ABED0057D0CC /* Spot.m in Sources */ = {isa = PBXBuildFile; fileRef = F8DA09CB1396AB690057D0CC /* Spot.m */; }; F8DA09D61396ABED0057D0CC /* SpotTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = F8DA09CE1396AB690057D0CC /* SpotTableViewCell.m */; }; - F8DA09D91396ABED0057D0CC /* AFCallback.m in Sources */ = {isa = PBXBuildFile; fileRef = F8D25CF01396A98600CF3BD6 /* AFCallback.m */; }; - F8DA09DA1396ABED0057D0CC /* AFHTTPOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = F8D25CF11396A98600CF3BD6 /* AFHTTPOperation.m */; }; - F8DA09DB1396ABED0057D0CC /* AFImageRequestOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = F8D25CF21396A98600CF3BD6 /* AFImageRequestOperation.m */; }; - F8DA09DC1396ABED0057D0CC /* AFRestClient.m in Sources */ = {isa = PBXBuildFile; fileRef = F8D25CF31396A98600CF3BD6 /* AFRestClient.m */; }; - F8DA09DE1396ABED0057D0CC /* UIImage+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = F8D25CF51396A98600CF3BD6 /* UIImage+AFNetworking.m */; }; - F8DA09DF1396ABED0057D0CC /* QHTTPOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = F8D25D0A1396A9A900CF3BD6 /* QHTTPOperation.m */; }; - F8DA09E01396ABED0057D0CC /* QRunLoopOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = F8D25D0C1396A9A900CF3BD6 /* QRunLoopOperation.m */; }; F8DA09E11396ABED0057D0CC /* JSONKit.m in Sources */ = {isa = PBXBuildFile; fileRef = F8D25D111396A9C400CF3BD6 /* JSONKit.m */; }; F8DA09E21396ABED0057D0CC /* TTTLocationFormatter.m in Sources */ = {isa = PBXBuildFile; fileRef = F8D25D141396A9C400CF3BD6 /* TTTLocationFormatter.m */; }; F8DA09E41396AC040057D0CC /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = F8DA09E31396AC040057D0CC /* main.m */; }; @@ -32,20 +32,22 @@ /* End PBXBuildFile section */ /* Begin PBXFileReference section */ - F8D25CEA1396A98600CF3BD6 /* AFCallback.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AFCallback.h; path = ../AFNetworking/AFCallback.h; sourceTree = ""; }; - F8D25CEB1396A98600CF3BD6 /* AFHTTPOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AFHTTPOperation.h; path = ../AFNetworking/AFHTTPOperation.h; sourceTree = ""; }; - F8D25CEC1396A98600CF3BD6 /* AFImageRequestOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AFImageRequestOperation.h; path = ../AFNetworking/AFImageRequestOperation.h; sourceTree = ""; }; - F8D25CED1396A98600CF3BD6 /* AFRestClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AFRestClient.h; path = ../AFNetworking/AFRestClient.h; sourceTree = ""; }; - F8D25CEF1396A98600CF3BD6 /* UIImage+AFNetworking.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "UIImage+AFNetworking.h"; path = "../AFNetworking/UIImage+AFNetworking.h"; sourceTree = ""; }; - F8D25CF01396A98600CF3BD6 /* AFCallback.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AFCallback.m; path = ../AFNetworking/AFCallback.m; sourceTree = ""; }; - F8D25CF11396A98600CF3BD6 /* AFHTTPOperation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AFHTTPOperation.m; path = ../AFNetworking/AFHTTPOperation.m; sourceTree = ""; }; - F8D25CF21396A98600CF3BD6 /* AFImageRequestOperation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AFImageRequestOperation.m; path = ../AFNetworking/AFImageRequestOperation.m; sourceTree = ""; }; - F8D25CF31396A98600CF3BD6 /* AFRestClient.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AFRestClient.m; path = ../AFNetworking/AFRestClient.m; sourceTree = ""; }; - F8D25CF51396A98600CF3BD6 /* UIImage+AFNetworking.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "UIImage+AFNetworking.m"; path = "../AFNetworking/UIImage+AFNetworking.m"; sourceTree = ""; }; - F8D25D091396A9A900CF3BD6 /* QHTTPOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = QHTTPOperation.h; sourceTree = ""; }; - F8D25D0A1396A9A900CF3BD6 /* QHTTPOperation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = QHTTPOperation.m; sourceTree = ""; }; - F8D25D0B1396A9A900CF3BD6 /* QRunLoopOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = QRunLoopOperation.h; sourceTree = ""; }; - F8D25D0C1396A9A900CF3BD6 /* QRunLoopOperation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = QRunLoopOperation.m; sourceTree = ""; }; + F874B5A313E0937400B28E3E /* AFHTTPRequestOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AFHTTPRequestOperation.h; sourceTree = ""; }; + F874B5A413E0937400B28E3E /* AFHTTPRequestOperation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AFHTTPRequestOperation.m; sourceTree = ""; }; + F874B5A513E0937400B28E3E /* AFJSONRequestOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AFJSONRequestOperation.h; sourceTree = ""; }; + F874B5A613E0937400B28E3E /* AFJSONRequestOperation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AFJSONRequestOperation.m; sourceTree = ""; }; + F874B5A713E0937400B28E3E /* AFImageRequestOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AFImageRequestOperation.h; sourceTree = ""; }; + F874B5A813E0937400B28E3E /* AFImageRequestOperation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AFImageRequestOperation.m; sourceTree = ""; }; + F874B5A913E0937400B28E3E /* AFImageCache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AFImageCache.h; sourceTree = ""; }; + F874B5AA13E0937400B28E3E /* AFImageCache.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AFImageCache.m; sourceTree = ""; }; + F874B5AB13E0937400B28E3E /* AFRestClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AFRestClient.h; sourceTree = ""; }; + F874B5AC13E0937400B28E3E /* AFRestClient.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AFRestClient.m; sourceTree = ""; }; + F874B5AD13E0937400B28E3E /* UIImage+AFNetworking.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIImage+AFNetworking.h"; sourceTree = ""; }; + F874B5AE13E0937400B28E3E /* UIImage+AFNetworking.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIImage+AFNetworking.m"; sourceTree = ""; }; + F874B5AF13E0937400B28E3E /* UIImageView+AFNetworking.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIImageView+AFNetworking.h"; sourceTree = ""; }; + F874B5B013E0937400B28E3E /* UIImageView+AFNetworking.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIImageView+AFNetworking.m"; sourceTree = ""; }; + F874B5B813E096C400B28E3E /* AFNetworkActivityIndicatorManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AFNetworkActivityIndicatorManager.h; sourceTree = ""; }; + F874B5B913E096C400B28E3E /* AFNetworkActivityIndicatorManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AFNetworkActivityIndicatorManager.m; sourceTree = ""; }; F8D25D101396A9C400CF3BD6 /* JSONKit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSONKit.h; sourceTree = ""; }; F8D25D111396A9C400CF3BD6 /* JSONKit.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JSONKit.m; sourceTree = ""; }; F8D25D131396A9C400CF3BD6 /* TTTLocationFormatter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TTTLocationFormatter.h; sourceTree = ""; }; @@ -53,9 +55,7 @@ F8D25D171396A9D300CF3BD6 /* placeholder-stamp.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "placeholder-stamp.png"; path = "Images/placeholder-stamp.png"; sourceTree = SOURCE_ROOT; }; F8D25D181396A9D300CF3BD6 /* placeholder-stamp@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "placeholder-stamp@2x.png"; path = "Images/placeholder-stamp@2x.png"; sourceTree = SOURCE_ROOT; }; F8D25D1B1396A9DE00CF3BD6 /* AFGowallaAPIClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AFGowallaAPIClient.h; path = Classes/AFGowallaAPIClient.h; sourceTree = ""; }; - F8D25D1C1396A9DE00CF3BD6 /* AFImageRequest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AFImageRequest.h; path = Classes/AFImageRequest.h; sourceTree = ""; }; F8D25D1D1396A9DE00CF3BD6 /* AFGowallaAPIClient.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AFGowallaAPIClient.m; path = Classes/AFGowallaAPIClient.m; sourceTree = ""; }; - F8D25D1E1396A9DE00CF3BD6 /* AFImageRequest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AFImageRequest.m; path = Classes/AFImageRequest.m; sourceTree = ""; }; F8DA09C71396AB690057D0CC /* NearbySpotsViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NearbySpotsViewController.h; sourceTree = ""; }; F8DA09C81396AB690057D0CC /* NearbySpotsViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NearbySpotsViewController.m; sourceTree = ""; }; F8DA09CA1396AB690057D0CC /* Spot.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Spot.h; sourceTree = ""; }; @@ -92,18 +92,6 @@ /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - F8D25D081396A9A900CF3BD6 /* QHTTPOperation */ = { - isa = PBXGroup; - children = ( - F8D25D091396A9A900CF3BD6 /* QHTTPOperation.h */, - F8D25D0A1396A9A900CF3BD6 /* QHTTPOperation.m */, - F8D25D0B1396A9A900CF3BD6 /* QRunLoopOperation.h */, - F8D25D0C1396A9A900CF3BD6 /* QRunLoopOperation.m */, - ); - name = QHTTPOperation; - path = ../AFNetworking/QHTTPOperation; - sourceTree = ""; - }; F8D25D0F1396A9C400CF3BD6 /* JSONKit */ = { isa = PBXGroup; children = ( @@ -216,7 +204,6 @@ isa = PBXGroup; children = ( F8E469941395744600DB05C8 /* Alamofire */, - F8D25D081396A9A900CF3BD6 /* QHTTPOperation */, F8D25D0F1396A9C400CF3BD6 /* JSONKit */, F8D25D121396A9C400CF3BD6 /* TTT */, ); @@ -226,16 +213,22 @@ F8E469941395744600DB05C8 /* Alamofire */ = { isa = PBXGroup; children = ( - F8D25CEA1396A98600CF3BD6 /* AFCallback.h */, - F8D25CF01396A98600CF3BD6 /* AFCallback.m */, - F8D25CEB1396A98600CF3BD6 /* AFHTTPOperation.h */, - F8D25CF11396A98600CF3BD6 /* AFHTTPOperation.m */, - F8D25CEC1396A98600CF3BD6 /* AFImageRequestOperation.h */, - F8D25CF21396A98600CF3BD6 /* AFImageRequestOperation.m */, - F8D25CED1396A98600CF3BD6 /* AFRestClient.h */, - F8D25CF31396A98600CF3BD6 /* AFRestClient.m */, - F8D25CEF1396A98600CF3BD6 /* UIImage+AFNetworking.h */, - F8D25CF51396A98600CF3BD6 /* UIImage+AFNetworking.m */, + F874B5A313E0937400B28E3E /* AFHTTPRequestOperation.h */, + F874B5A413E0937400B28E3E /* AFHTTPRequestOperation.m */, + F874B5A513E0937400B28E3E /* AFJSONRequestOperation.h */, + F874B5A613E0937400B28E3E /* AFJSONRequestOperation.m */, + F874B5AB13E0937400B28E3E /* AFRestClient.h */, + F874B5AC13E0937400B28E3E /* AFRestClient.m */, + F874B5A713E0937400B28E3E /* AFImageRequestOperation.h */, + F874B5A813E0937400B28E3E /* AFImageRequestOperation.m */, + F874B5A913E0937400B28E3E /* AFImageCache.h */, + F874B5AA13E0937400B28E3E /* AFImageCache.m */, + F874B5B813E096C400B28E3E /* AFNetworkActivityIndicatorManager.h */, + F874B5B913E096C400B28E3E /* AFNetworkActivityIndicatorManager.m */, + F874B5AD13E0937400B28E3E /* UIImage+AFNetworking.h */, + F874B5AE13E0937400B28E3E /* UIImage+AFNetworking.m */, + F874B5AF13E0937400B28E3E /* UIImageView+AFNetworking.h */, + F874B5B013E0937400B28E3E /* UIImageView+AFNetworking.m */, ); name = Alamofire; sourceTree = ""; @@ -245,8 +238,6 @@ children = ( F8D25D1B1396A9DE00CF3BD6 /* AFGowallaAPIClient.h */, F8D25D1D1396A9DE00CF3BD6 /* AFGowallaAPIClient.m */, - F8D25D1C1396A9DE00CF3BD6 /* AFImageRequest.h */, - F8D25D1E1396A9DE00CF3BD6 /* AFImageRequest.m */, ); name = "Networking Extensions"; sourceTree = ""; @@ -287,6 +278,7 @@ F8E469571395739C00DB05C8 /* Project object */ = { isa = PBXProject; attributes = { + LastUpgradeCheck = 0420; ORGANIZATIONNAME = Gowalla; }; buildConfigurationList = F8E4695A1395739C00DB05C8 /* Build configuration list for PBXProject "AFNetworking Example" */; @@ -324,21 +316,21 @@ buildActionMask = 2147483647; files = ( F8DA09D21396ABED0057D0CC /* AFGowallaAPIClient.m in Sources */, - F8DA09D31396ABED0057D0CC /* AFImageRequest.m in Sources */, F8DA09D41396ABED0057D0CC /* NearbySpotsViewController.m in Sources */, F8DA09D51396ABED0057D0CC /* Spot.m in Sources */, F8DA09D61396ABED0057D0CC /* SpotTableViewCell.m in Sources */, - F8DA09D91396ABED0057D0CC /* AFCallback.m in Sources */, - F8DA09DA1396ABED0057D0CC /* AFHTTPOperation.m in Sources */, - F8DA09DB1396ABED0057D0CC /* AFImageRequestOperation.m in Sources */, - F8DA09DC1396ABED0057D0CC /* AFRestClient.m in Sources */, - F8DA09DE1396ABED0057D0CC /* UIImage+AFNetworking.m in Sources */, - F8DA09DF1396ABED0057D0CC /* QHTTPOperation.m in Sources */, - F8DA09E01396ABED0057D0CC /* QRunLoopOperation.m in Sources */, F8DA09E11396ABED0057D0CC /* JSONKit.m in Sources */, F8DA09E21396ABED0057D0CC /* TTTLocationFormatter.m in Sources */, F8DA09E41396AC040057D0CC /* main.m in Sources */, F8DA09E81396AC220057D0CC /* AppDelegate.m in Sources */, + F874B5B113E0937400B28E3E /* AFHTTPRequestOperation.m in Sources */, + F874B5B213E0937400B28E3E /* AFJSONRequestOperation.m in Sources */, + F874B5B313E0937400B28E3E /* AFImageRequestOperation.m in Sources */, + F874B5B413E0937400B28E3E /* AFImageCache.m in Sources */, + F874B5B513E0937400B28E3E /* AFRestClient.m in Sources */, + F874B5B613E0937400B28E3E /* UIImage+AFNetworking.m in Sources */, + F874B5B713E0937400B28E3E /* UIImageView+AFNetworking.m in Sources */, + F874B5BA13E096C400B28E3E /* AFNetworkActivityIndicatorManager.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/Example/AFNetworking Example.xcodeproj/project.xcworkspace/xcuserdata/mattt.xcuserdatad/UserInterfaceState.xcuserstate b/Example/AFNetworking Example.xcodeproj/project.xcworkspace/xcuserdata/mattt.xcuserdatad/UserInterfaceState.xcuserstate index 10dd190..7d88d33 100644 --- a/Example/AFNetworking Example.xcodeproj/project.xcworkspace/xcuserdata/mattt.xcuserdatad/UserInterfaceState.xcuserstate +++ b/Example/AFNetworking Example.xcodeproj/project.xcworkspace/xcuserdata/mattt.xcuserdatad/UserInterfaceState.xcuserstate @@ -11,7 +11,7 @@ $class CF$UID - 52 + 57 NS.keys @@ -32,7 +32,7 @@ CF$UID - 308 + 372 @@ -42,7 +42,7 @@ $class CF$UID - 43 + 48 NS.keys @@ -70,53 +70,17 @@ CF$UID 10 - - NS.objects - CF$UID 11 - - CF$UID - 306 - - - CF$UID - 21 - - - CF$UID - 5 - - - CF$UID - 307 - - - CF$UID - 2 - - - - IDEWorkspaceTabController_4477BFCD-C087-4B94-AEA0-FFB3C20C7F0F - IDEOrderedWorkspaceTabControllers - IDEWindowToolbarIsVisible - IDEActiveWorkspaceTabController - IDEWindowFrame - IDEWorkspaceWindowControllerUniqueIdentifier - - $class - - CF$UID - 43 - - NS.keys - CF$UID 12 + + NS.objects + CF$UID 13 @@ -125,6 +89,49 @@ CF$UID 14 + + CF$UID + 371 + + + CF$UID + 36 + + + CF$UID + 2 + + + CF$UID + 6 + + + CF$UID + 24 + + + CF$UID + 36 + + + + IDEWindowFrame + IDEWorkspaceTabController_4477BFCD-C087-4B94-AEA0-FFB3C20C7F0F + IDEOrderedWorkspaceTabControllers + IDEWindowInFullscreenMode + IDEWorkspaceWindowControllerUniqueIdentifier + IDEActiveWorkspaceTabController + IDEWindowToolbarIsVisible + IDEWindowTabBarIsVisible + {{0, 90}, {1920, 1088}} + + $class + + CF$UID + 48 + + NS.keys + CF$UID 15 @@ -145,9 +152,6 @@ CF$UID 19 - - NS.objects - CF$UID 20 @@ -160,45 +164,8 @@ CF$UID 22 - - CF$UID - 216 - - - CF$UID - 223 - - - CF$UID - 297 - - - CF$UID - 159 - - - CF$UID - 42 - - - IDETabLabel - IDEShowNavigator - IDEEditorArea - IDEWorkspaceTabControllerUtilityAreaSplitView - IDENavigatorArea - IDEWorkspaceTabControllerDesignAreaSplitView - IDEShowUtilities - AssistantEditorsLayout - Build target AFNetworkingExample - - - $class - - CF$UID - 43 - - NS.keys + NS.objects CF$UID @@ -212,6 +179,46 @@ CF$UID 25 + + CF$UID + 263 + + + CF$UID + 270 + + + CF$UID + 362 + + + CF$UID + 36 + + + CF$UID + 47 + + + + IDETabLabel + IDEShowNavigator + IDEEditorArea + IDEWorkspaceTabControllerUtilityAreaSplitView + IDENavigatorArea + IDEWorkspaceTabControllerDesignAreaSplitView + IDEShowUtilities + AssistantEditorsLayout + UIImageView+AFNetworking.h + + + $class + + CF$UID + 48 + + NS.keys + CF$UID 26 @@ -236,64 +243,10 @@ CF$UID 31 - - NS.objects - - - CF$UID - 21 - CF$UID 32 - - CF$UID - 66 - - - CF$UID - 21 - - - CF$UID - 42 - - - CF$UID - 102 - - - CF$UID - 110 - - - CF$UID - 111 - - - CF$UID - 207 - - - - ShowDebuggerArea - IDEEDitorArea_DebugArea - IDEEditorMode_Standard - IDEShowEditor - EditorMode - DebuggerSplitView - DefaultPersistentRepresentations - IDEEditorMode_Genius - layoutTree - - $class - - CF$UID - 43 - - NS.keys - CF$UID 33 @@ -306,6 +259,9 @@ CF$UID 35 + + NS.objects + CF$UID 36 @@ -316,11 +272,61 @@ CF$UID - 38 + 72 + + + CF$UID + 24 + + + CF$UID + 47 + + + CF$UID + 122 + + + CF$UID + 168 + + + CF$UID + 176 + + + CF$UID + 177 + + + CF$UID + 250 - NS.objects + + ShowDebuggerArea + IDEEDitorArea_DebugArea + IDEEditorMode_Standard + IDEShowEditor + EditorMode + IDEEditorMode_Version + DebuggerSplitView + DefaultPersistentRepresentations + IDEEditorMode_Genius + layoutTree + + + $class + + CF$UID + 48 + + NS.keys + + CF$UID + 38 + CF$UID 39 @@ -329,49 +335,72 @@ CF$UID 40 - - CF$UID - 44 - - - CF$UID - 39 - - - CF$UID - 57 - - - CF$UID - 63 - - - - LayoutFocusMode - console - IDEDebugArea_SplitView - LayoutMode - IDEDebuggerAreaSplitView - variables - 1 - - $class - - CF$UID - 43 - - NS.keys - CF$UID 41 + + CF$UID + 42 + + + CF$UID + 43 + NS.objects CF$UID - 42 + 44 + + + CF$UID + 45 + + + CF$UID + 49 + + + CF$UID + 44 + + + CF$UID + 62 + + + CF$UID + 68 + + + + LayoutFocusMode + console + IDEDebuggerAreaSplitView + LayoutMode + IDEDebugArea_SplitView + variables + 1 + + $class + + CF$UID + 48 + + NS.keys + + + CF$UID + 46 + + + NS.objects + + + CF$UID + 47 @@ -391,20 +420,20 @@ $class CF$UID - 43 + 48 NS.keys CF$UID - 45 + 50 NS.objects CF$UID - 46 + 51 @@ -413,17 +442,17 @@ $class CF$UID - 56 + 61 NS.objects CF$UID - 47 + 52 CF$UID - 53 + 58 @@ -431,28 +460,28 @@ $class CF$UID - 52 + 57 NS.keys CF$UID - 48 + 53 CF$UID - 49 + 54 NS.objects CF$UID - 50 + 55 CF$UID - 51 + 56 @@ -473,28 +502,28 @@ $class CF$UID - 52 + 57 NS.keys CF$UID - 48 + 53 CF$UID - 49 + 54 NS.objects CF$UID - 54 + 59 CF$UID - 55 + 60 @@ -514,67 +543,67 @@ $class CF$UID - 43 + 48 NS.keys - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 58 - - - - - $class - - CF$UID - 56 - - NS.objects - - - CF$UID - 59 - - - CF$UID - 61 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 48 - - - CF$UID - 49 - - - NS.objects CF$UID 50 + + NS.objects + CF$UID - 60 + 63 + + + + + $class + + CF$UID + 61 + + NS.objects + + + CF$UID + 64 + + + CF$UID + 66 + + + + + $class + + CF$UID + 57 + + NS.keys + + + CF$UID + 53 + + + CF$UID + 54 + + + NS.objects + + + CF$UID + 55 + + + CF$UID + 65 @@ -583,28 +612,28 @@ $class CF$UID - 52 + 57 NS.keys CF$UID - 48 + 53 CF$UID - 49 + 54 NS.objects CF$UID - 54 + 59 CF$UID - 62 + 67 @@ -613,52 +642,7 @@ $class CF$UID - 43 - - NS.keys - - - CF$UID - 64 - - - NS.objects - - - CF$UID - 65 - - - - DBGVariablesViewFilterMode - 2 - - $class - - CF$UID - 43 - - NS.keys - - - CF$UID - 67 - - - NS.objects - - - CF$UID - 68 - - - - EditorLayout_PersistentRepresentation - - $class - - CF$UID - 43 + 48 NS.keys @@ -666,32 +650,34 @@ CF$UID 69 - - NS.objects - CF$UID 70 - - Main - - $class - - CF$UID - 52 - - NS.keys + NS.objects + + CF$UID + 44 + CF$UID 71 - - CF$UID - 72 - + + + VariablesViewSelectedScope + DBGVariablesViewFilterMode + 2 + + $class + + CF$UID + 48 + + NS.keys + CF$UID 73 @@ -703,45 +689,39 @@ CF$UID 74 - - CF$UID - 42 - - - CF$UID - 100 - - EditorLayout_StateSavingStateDictionaries - EditorLayout_Selected - EditorLayout_Geometry + EditorLayout_PersistentRepresentation $class CF$UID - 86 + 48 - NS.objects + NS.keys CF$UID 75 - - - $class - - CF$UID - 43 - - NS.keys + NS.objects CF$UID 76 + + + Main + + $class + + CF$UID + 57 + + NS.keys + CF$UID 77 @@ -754,21 +734,52 @@ CF$UID 79 + + NS.objects + CF$UID 80 + + CF$UID + 47 + + + CF$UID + 120 + + + + EditorLayout_StateSavingStateDictionaries + EditorLayout_Selected + EditorLayout_Geometry + + $class + + CF$UID + 102 + + NS.objects + CF$UID 81 + + + + $class + + CF$UID + 48 + + NS.keys + CF$UID 82 - - NS.objects - CF$UID 83 @@ -779,23 +790,50 @@ CF$UID - 92 + 85 CF$UID - 95 + 86 CF$UID - 96 + 87 CF$UID - 97 + 88 + + + NS.objects + + + CF$UID + 89 CF$UID - 98 + 90 + + + CF$UID + 108 + + + CF$UID + 94 + + + CF$UID + 94 + + + CF$UID + 116 + + + CF$UID + 117 @@ -806,43 +844,122 @@ DocumentNavigableItemName DocumentExtensionIdentifier DocumentURL - com.apple.dt.IDE.BuildLogContentType + public.c-header $class CF$UID - 91 + 107 DocumentLocation CF$UID - 88 + 103 DomainIdentifier CF$UID - 0 + 91 IdentifierPath CF$UID - 85 + 92 IndexOfDocumentIdentifier CF$UID - 87 + 47 + Xcode.IDENavigableItemDomain.WorkspaceStructure + + $class + + CF$UID + 102 + + NS.objects + + + CF$UID + 93 + + + CF$UID + 96 + + + CF$UID + 98 + + + CF$UID + 100 + + + $class CF$UID - 86 + 95 + + Identifier + + CF$UID + 94 - NS.objects - + UIImageView+AFNetworking.h + + $classes + + IDEArchivableStringIndexPair + NSObject + + $classname + IDEArchivableStringIndexPair + + + $class + + CF$UID + 95 + + Identifier + + CF$UID + 97 + + + Alamofire + + $class + + CF$UID + 95 + + Identifier + + CF$UID + 99 + + + Vendor + + $class + + CF$UID + 95 + + Identifier + + CF$UID + 101 + + + AFNetworkingExample $classes @@ -852,17 +969,16 @@ $classname NSArray - 9223372036854775807 $class CF$UID - 90 + 106 documentURL CF$UID - 89 + 104 timestamp @@ -870,7 +986,25 @@ 0 - x-xcode-log://CEB352F9-1C85-4BD4-BA9F-87C4EFFED35A + + $class + + CF$UID + 105 + + NS.string + file://localhost/Users/mattt/Code/Objective-C/AFNetworking/Example/UIImageView+AFNetworking.h + + + $classes + + NSMutableString + NSString + NSObject + + $classname + NSMutableString + $classes @@ -893,41 +1027,60 @@ $class CF$UID - 52 + 57 NS.keys CF$UID - 93 + 109 + + + CF$UID + 110 + + + CF$UID + 111 + + + CF$UID + 112 NS.objects CF$UID - 94 + 113 + + + CF$UID + 114 + + + CF$UID + 36 + + + CF$UID + 115 - SelectedDocumentLocations + PrimaryDocumentTimestamp + PrimaryDocumentVisibleCharacterRange + HideAllIssues + PrimaryDocumentSelectedCharacterRange + 333490344.00867498 + {0, 1541} + {693, 0} + Xcode.IDEKit.EditorDocument.SourceCode $class CF$UID - 86 - - NS.objects - - - - - Xcode.IDEKit.EditorDocument.LogDocument - - $class - - CF$UID - 99 + 119 NS.base @@ -937,9 +1090,10 @@ NS.relative CF$UID - 89 + 118 + file://localhost/Users/mattt/Code/Objective-C/AFNetworking/Example/UIImageView+AFNetworking.h $classes @@ -953,226 +1107,105 @@ $class CF$UID - 86 + 102 NS.objects - - CF$UID - 101 - - - - {{0, 0}, {1580, 894}} - - $class - - CF$UID - 43 - - NS.keys - - - CF$UID - 45 - - - NS.objects - - - CF$UID - 103 - - - - - $class - - CF$UID - 56 - - NS.objects - - - CF$UID - 104 - - - CF$UID - 107 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 48 - - - CF$UID - 49 - - - NS.objects - - - CF$UID - 105 - - - CF$UID - 106 - - - - IDEEditor - 916 - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 48 - - - CF$UID - 49 - - - NS.objects - - - CF$UID - 108 - - - CF$UID - 109 - - - - IDEDebuggerArea - 100 - - $class - - CF$UID - 43 - - NS.keys - - NS.objects - - - - $class - - CF$UID - 43 - - NS.keys - - - CF$UID - 112 - - - CF$UID - 113 - - - NS.objects - - - CF$UID - 114 - - - CF$UID - 115 - - - - SplitPosition - EditorLayout_PersistentRepresentation - 0.5 - - $class - - CF$UID - 43 - - NS.keys - - - CF$UID - 116 - - - CF$UID - 117 - - - NS.objects - - - CF$UID - 118 - - - CF$UID - 166 - - - - Alternate - Main - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 119 - - - CF$UID - 120 - CF$UID 121 + + {{0, 0}, {1580, 1012}} + + $class + + CF$UID + 48 + + NS.keys + + + CF$UID + 123 + + + CF$UID + 124 + + NS.objects CF$UID - 122 + 125 CF$UID - 42 + 126 + + + + VersionsEditorSubmode + EditorLayout_PersistentRepresentation + 0 + + $class + + CF$UID + 48 + + NS.keys + + + CF$UID + 127 + + + NS.objects + + + CF$UID + 128 + + + + Main + + $class + + CF$UID + 57 + + NS.keys + + + CF$UID + 129 CF$UID - 164 + 130 + + + CF$UID + 131 + + + NS.objects + + + CF$UID + 132 + + + CF$UID + 125 + + + CF$UID + 166 @@ -1183,13 +1216,13 @@ $class CF$UID - 56 + 102 NS.objects CF$UID - 123 + 133 @@ -1197,69 +1230,69 @@ $class CF$UID - 43 + 48 NS.keys CF$UID - 124 + 134 CF$UID - 125 + 135 CF$UID - 126 + 136 CF$UID - 127 + 137 CF$UID - 128 + 138 CF$UID - 129 + 139 CF$UID - 130 + 140 NS.objects CF$UID - 131 + 141 CF$UID - 132 + 142 CF$UID - 152 - - - CF$UID - 135 - - - CF$UID - 135 - - - CF$UID - 161 + 154 CF$UID 162 + + CF$UID + 145 + + + CF$UID + 163 + + + CF$UID + 164 + FileDataType @@ -1269,130 +1302,41 @@ DocumentNavigableItemName DocumentExtensionIdentifier DocumentURL - public.precompiled-c-header + public.objective-c-source $class CF$UID - 91 + 107 DocumentLocation CF$UID - 149 + 152 DomainIdentifier CF$UID - 0 + 91 IdentifierPath CF$UID - 133 + 143 IndexOfDocumentIdentifier CF$UID - 42 + 47 $class CF$UID - 86 + 102 NS.objects - - - CF$UID - 134 - - - CF$UID - 137 - - - CF$UID - 139 - - - CF$UID - 141 - - - CF$UID - 146 - - - - - $class - - CF$UID - 136 - - Identifier - - CF$UID - 135 - - - Prefix.pch - - $classes - - IDEArchivableStringIndexPair - NSObject - - $classname - IDEArchivableStringIndexPair - - - $class - - CF$UID - 136 - - Identifier - - CF$UID - 138 - - - Supporting Files - - $class - - CF$UID - 136 - - Identifier - - CF$UID - 140 - - - Classes - - $class - - CF$UID - 43 - - NS.keys - - - CF$UID - 142 - - - CF$UID - 143 - - - NS.objects CF$UID @@ -1400,47 +1344,80 @@ CF$UID - 145 + 146 + + + CF$UID + 148 + + + CF$UID + 150 - manualDomainIdentifier - navigableItem_name - Xcode.IDENavigableItemDomain.WorkspaceStructure + + $class + + CF$UID + 95 + + Identifier + + CF$UID + 145 + + + AFImageRequestOperation.m + + $class + + CF$UID + 95 + + Identifier + + CF$UID + 147 + + + Alamofire + + $class + + CF$UID + 95 + + Identifier + + CF$UID + 149 + + + Vendor + + $class + + CF$UID + 95 + + Identifier + + CF$UID + 151 + + AFNetworkingExample $class CF$UID - 43 - - NS.keys - - - CF$UID - 147 - - - NS.objects - - - CF$UID - 148 - - - - identifier - Xcode.IDEKit.GeniusCategory.Manual - - $class - - CF$UID - 90 + 106 documentURL CF$UID - 150 + 153 timestamp @@ -1452,37 +1429,19 @@ $class CF$UID - 151 + 105 NS.string - file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFNetworkingExample/AFNetworkingExample/Prefix.pch - - - $classes - - NSMutableString - NSString - NSObject - - $classname - NSMutableString + file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFNetworking/AFImageRequestOperation.m $class CF$UID - 52 + 57 NS.keys - - CF$UID - 153 - - - CF$UID - 154 - CF$UID 155 @@ -1491,9 +1450,6 @@ CF$UID 156 - - NS.objects - CF$UID 157 @@ -1502,6 +1458,9 @@ CF$UID 158 + + NS.objects + CF$UID 159 @@ -1510,22 +1469,30 @@ CF$UID 160 + + CF$UID + 36 + + + CF$UID + 161 + PrimaryDocumentTimestamp PrimaryDocumentVisibleCharacterRange HideAllIssues PrimaryDocumentSelectedCharacterRange - 328564090.93231797 - {0, 344} - - {0, 0} - Xcode.IDEKit.EditorDocument.SourceCode + 332371428.598571 + {1234, 1997} + {2001, 64} + -initWithRequest:callback: + Xcode.IDEKit.EditorDocument.SourceCodeComparisonEditor $class CF$UID - 99 + 119 NS.base @@ -1535,111 +1502,36 @@ NS.relative CF$UID - 163 + 165 - file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFNetworkingExample/AFNetworkingExample/Prefix.pch + file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFNetworking/AFImageRequestOperation.m $class CF$UID - 56 + 102 NS.objects - - - CF$UID - 165 - - - - {{0, 0}, {1109, 1364}} - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 119 - - - CF$UID - 120 - - - CF$UID - 121 - - - NS.objects CF$UID 167 - - CF$UID - 42 - - - CF$UID - 205 - + {{0, 0}, {2220, 1158}} $class CF$UID - 86 - - NS.objects - - - CF$UID - 168 - - - - - $class - - CF$UID - 43 + 48 NS.keys CF$UID - 124 - - - CF$UID - 125 - - - CF$UID - 126 - - - CF$UID - 127 - - - CF$UID - 128 - - - CF$UID - 129 - - - CF$UID - 130 + 50 NS.objects @@ -1648,129 +1540,118 @@ CF$UID 169 + + + + $class + + CF$UID + 61 + + NS.objects + CF$UID 170 CF$UID - 176 - - - CF$UID - 145 - - - CF$UID - 145 - - - CF$UID - 203 - - - CF$UID - 204 + 173 - com.apple.xcode.project $class CF$UID - 91 - - DocumentLocation - - CF$UID - 174 - - DomainIdentifier - - CF$UID - 144 - - IdentifierPath - - CF$UID - 171 - - IndexOfDocumentIdentifier - - CF$UID - 173 - - - - $class - - CF$UID - 86 + 57 + NS.keys + + + CF$UID + 53 + + + CF$UID + 54 + + NS.objects + + CF$UID + 171 + CF$UID 172 + IDEEditor + 832 $class CF$UID - 136 - - Identifier - - CF$UID - 145 - - - 9223372036854775807 - - $class - - CF$UID - 90 - - documentURL - - CF$UID - 175 - - timestamp - - CF$UID - 0 - - - - $class - - CF$UID - 151 - - NS.string - file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFNetworkingExample/AFNetworkingExample.xcodeproj/ - - - $class - - CF$UID - 52 + 57 NS.keys CF$UID - 177 + 53 + + CF$UID + 54 + + + NS.objects + + + CF$UID + 174 + + + CF$UID + 175 + + + + IDEDebuggerArea + 180 + + $class + + CF$UID + 48 + + NS.keys + + NS.objects + + + + $class + + CF$UID + 48 + + NS.keys + CF$UID 178 + + CF$UID + 124 + + + NS.objects + CF$UID 179 @@ -1779,10 +1660,26 @@ CF$UID 180 + + + SplitPosition + 0.5 + + $class + + CF$UID + 48 + + NS.keys + CF$UID 181 + + CF$UID + 127 + NS.objects @@ -1790,23 +1687,312 @@ CF$UID 182 + + CF$UID + 228 + + + + Alternate + + $class + + CF$UID + 57 + + NS.keys + + + CF$UID + 129 + + + CF$UID + 130 + + + CF$UID + 131 + + + NS.objects + CF$UID 183 CF$UID - 193 + 125 CF$UID - 194 + 226 + + + + + $class + + CF$UID + 61 + + NS.objects + + + CF$UID + 184 + + + + + $class + + CF$UID + 48 + + NS.keys + + + CF$UID + 134 + + + CF$UID + 135 + + + CF$UID + 136 + + + CF$UID + 137 + + + CF$UID + 138 + + + CF$UID + 139 + + + CF$UID + 140 + + + NS.objects + + + CF$UID + 185 + + + CF$UID + 186 + + + CF$UID + 197 + + + CF$UID + 151 + + + CF$UID + 151 + + + CF$UID + 224 + + + CF$UID + 225 + + + + com.apple.xcode.project + + $class + + CF$UID + 107 + + DocumentLocation + + CF$UID + 195 + + DomainIdentifier + + CF$UID + 0 + + IdentifierPath + + CF$UID + 187 + + IndexOfDocumentIdentifier + + CF$UID + 194 + + + + $class + + CF$UID + 102 + + NS.objects + + + CF$UID + 188 + + + CF$UID + 191 + + + + + $class + + CF$UID + 48 + + NS.keys + + + CF$UID + 189 + + + CF$UID + 190 + + + NS.objects + + + CF$UID + 91 + + + CF$UID + 151 + + + + manualDomainIdentifier + navigableItem_name + + $class + + CF$UID + 48 + + NS.keys + + + CF$UID + 192 + + + NS.objects + + + CF$UID + 193 + + + + identifier + Xcode.IDEKit.GeniusCategory.Manual + 9223372036854775807 + + $class + + CF$UID + 106 + + documentURL + + CF$UID + 196 + + timestamp + + CF$UID + 0 + + + + $class + + CF$UID + 105 + + NS.string + file://localhost/Users/mattt/Code/Objective-C/AFNetworking/Example/AFNetworking%20Example.xcodeproj/ + + + $class + + CF$UID + 57 + + NS.keys + + + CF$UID + 198 + + + CF$UID + 199 + + + CF$UID + 200 + + + CF$UID + 201 CF$UID 202 + NS.objects + + + CF$UID + 203 + + + CF$UID + 204 + + + CF$UID + 214 + + + CF$UID + 215 + + + CF$UID + 223 + + Xcode3ProjectEditorPreviousProjectEditorClass Xcode3ProjectEditor.sourceList.splitview @@ -1818,20 +2004,20 @@ $class CF$UID - 43 + 48 NS.keys CF$UID - 184 + 205 NS.objects CF$UID - 185 + 206 @@ -1840,17 +2026,17 @@ $class CF$UID - 56 + 61 NS.objects CF$UID - 186 + 207 CF$UID - 191 + 212 @@ -1858,28 +2044,28 @@ $class CF$UID - 52 + 57 NS.keys CF$UID - 187 + 208 CF$UID - 188 + 209 NS.objects CF$UID - 189 + 210 CF$UID - 190 + 211 @@ -1891,44 +2077,44 @@ $class CF$UID - 52 + 57 NS.keys CF$UID - 187 + 208 CF$UID - 188 + 209 NS.objects CF$UID - 189 + 210 CF$UID - 192 + 213 - 940 + 619 Xcode3TargetEditor $class CF$UID - 86 + 102 NS.objects CF$UID - 195 + 216 @@ -1936,52 +2122,52 @@ $class CF$UID - 201 + 222 documentURL CF$UID - 196 + 217 selection CF$UID - 198 + 219 timestamp CF$UID - 197 + 218 - file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFNetworkingExample/AFNetworkingExample.xcodeproj/ - 328564090.93203801 + file://localhost/Users/mattt/Code/Objective-C/AFNetworking/Example/AFNetworking%20Example.xcodeproj/ + 333484926.16016197 $class CF$UID - 43 + 48 NS.keys CF$UID - 199 + 220 CF$UID - 200 + 221 NS.objects CF$UID - 193 + 214 CF$UID - 145 + 151 @@ -2001,7 +2187,7 @@ $class CF$UID - 43 + 48 NS.keys @@ -2013,7 +2199,7 @@ $class CF$UID - 99 + 119 NS.base @@ -2023,29 +2209,360 @@ NS.relative CF$UID - 196 + 217 $class CF$UID - 86 + 61 NS.objects CF$UID - 206 + 227 - {{0, 0}, {2220, 1364}} + {{0, 0}, {789, 810}} $class CF$UID - 215 + 57 + + NS.keys + + + CF$UID + 129 + + + CF$UID + 130 + + + CF$UID + 131 + + + NS.objects + + + CF$UID + 229 + + + CF$UID + 125 + + + CF$UID + 248 + + + + + $class + + CF$UID + 102 + + NS.objects + + + CF$UID + 230 + + + + + $class + + CF$UID + 48 + + NS.keys + + + CF$UID + 134 + + + CF$UID + 135 + + + CF$UID + 136 + + + CF$UID + 137 + + + CF$UID + 138 + + + CF$UID + 139 + + + CF$UID + 140 + + + NS.objects + + + CF$UID + 231 + + + CF$UID + 232 + + + CF$UID + 241 + + + CF$UID + 235 + + + CF$UID + 235 + + + CF$UID + 245 + + + CF$UID + 246 + + + + public.c-header + + $class + + CF$UID + 107 + + DocumentLocation + + CF$UID + 239 + + DomainIdentifier + + CF$UID + 91 + + IdentifierPath + + CF$UID + 233 + + IndexOfDocumentIdentifier + + CF$UID + 47 + + + + $class + + CF$UID + 102 + + NS.objects + + + CF$UID + 234 + + + CF$UID + 236 + + + CF$UID + 237 + + + CF$UID + 238 + + + + + $class + + CF$UID + 95 + + Identifier + + CF$UID + 235 + + + AFHTTPRequestOperation.h + + $class + + CF$UID + 95 + + Identifier + + CF$UID + 147 + + + + $class + + CF$UID + 95 + + Identifier + + CF$UID + 149 + + + + $class + + CF$UID + 95 + + Identifier + + CF$UID + 151 + + + + $class + + CF$UID + 106 + + documentURL + + CF$UID + 240 + + timestamp + + CF$UID + 0 + + + + $class + + CF$UID + 105 + + NS.string + file://localhost/Users/mattt/Code/Objective-C/AFNetworking/Example/AFHTTPRequestOperation.h + + + $class + + CF$UID + 57 + + NS.keys + + + CF$UID + 155 + + + CF$UID + 156 + + + CF$UID + 157 + + + CF$UID + 158 + + + NS.objects + + + CF$UID + 242 + + + CF$UID + 243 + + + CF$UID + 36 + + + CF$UID + 244 + + + + 333484926.15995902 + {0, 1313} + {996, 0} + Xcode.IDEKit.EditorDocument.SourceCode + + $class + + CF$UID + 119 + + NS.base + + CF$UID + 0 + + NS.relative + + CF$UID + 247 + + + file://localhost/Users/mattt/Code/Objective-C/AFNetworking/Example/AFHTTPRequestOperation.h + + $class + + CF$UID + 102 + + NS.objects + + + CF$UID + 249 + + + + {{0, 0}, {1580, 810}} + + $class + + CF$UID + 262 geniusEditorContextNode @@ -2055,19 +2572,19 @@ primaryEditorContextNode CF$UID - 208 + 251 rootLayoutTreeNode CF$UID - 212 + 259 $class CF$UID - 214 + 261 children @@ -2079,63 +2596,128 @@ documentArchivableRepresentation CF$UID - 209 + 252 orientation 0 parent CF$UID - 212 + 259 $class CF$UID - 91 + 107 DocumentLocation CF$UID - 88 + 103 DomainIdentifier CF$UID - 0 + 91 IdentifierPath CF$UID - 210 + 253 IndexOfDocumentIdentifier CF$UID - 211 + 47 $class CF$UID - 86 + 102 NS.objects - + + + CF$UID + 254 + + + CF$UID + 255 + + + CF$UID + 256 + + + CF$UID + 257 + + - 9223372036854775807 $class CF$UID - 214 + 95 + + Identifier + + CF$UID + 94 + + + + $class + + CF$UID + 95 + + Identifier + + CF$UID + 97 + + + + $class + + CF$UID + 95 + + Identifier + + CF$UID + 99 + + + + $class + + CF$UID + 95 + + Identifier + + CF$UID + 258 + + + AFNetworkingExample + + $class + + CF$UID + 261 children CF$UID - 213 + 260 contentType 0 @@ -2156,13 +2738,13 @@ $class CF$UID - 86 + 102 NS.objects CF$UID - 208 + 251 @@ -2188,20 +2770,20 @@ $class CF$UID - 43 + 48 NS.keys CF$UID - 45 + 50 NS.objects CF$UID - 217 + 264 @@ -2209,17 +2791,17 @@ $class CF$UID - 56 + 61 NS.objects CF$UID - 218 + 265 CF$UID - 221 + 268 @@ -2227,59 +2809,59 @@ $class CF$UID - 52 + 57 NS.keys CF$UID - 48 + 53 CF$UID - 49 + 54 NS.objects CF$UID - 219 + 266 CF$UID - 220 + 267 - 792 + 788 $class CF$UID - 52 + 57 NS.keys CF$UID - 48 + 53 CF$UID - 49 + 54 NS.objects CF$UID - 219 + 266 CF$UID - 222 + 269 @@ -2288,489 +2870,10 @@ $class CF$UID - 43 + 48 NS.keys - - CF$UID - 224 - - - CF$UID - 225 - - - CF$UID - 226 - - - CF$UID - 227 - - - CF$UID - 228 - - - NS.objects - - - CF$UID - 229 - - - CF$UID - 262 - - - CF$UID - 266 - - - CF$UID - 228 - - - CF$UID - 279 - - - - Xcode.IDEKit.Navigator.Structure - Xcode.DebuggerKit.ThreadsStacksNavigator - Xcode.IDEKit.Navigator.BatchFind - SelectedNavigator - Xcode.IDEKit.Navigator.Issues - - $class - - CF$UID - 43 - - NS.keys - - - CF$UID - 230 - - - CF$UID - 231 - - - CF$UID - 232 - - - CF$UID - 233 - - - CF$UID - 234 - - - CF$UID - 235 - - - CF$UID - 236 - - - NS.objects - - - CF$UID - 237 - - - CF$UID - 159 - - - CF$UID - 238 - - - CF$UID - 159 - - - CF$UID - 159 - - - CF$UID - 240 - - - CF$UID - 246 - - - - IDEVisibleRect - IDEUnsavedDocumentFilteringEnabled - IDENavigatorExpandedItemsBeforeFilteringSet - IDERecentDocumentFilteringEnabled - IDESCMStatusFilteringEnabled - IDESelectedObjects - IDEExpandedItemsSet - {{0, 0}, {339, 972}} - - $class - - CF$UID - 239 - - NS.objects - - - - $classes - - NSSet - NSObject - - $classname - NSSet - - - $class - - CF$UID - 86 - - NS.objects - - - CF$UID - 241 - - - - - $class - - CF$UID - 56 - - NS.objects - - - CF$UID - 242 - - - CF$UID - 243 - - - CF$UID - 244 - - - CF$UID - 245 - - - - AFNetworkingExample - Vendor - Alamofire - AFImageRequestOperation.m - - $class - - CF$UID - 239 - - NS.objects - - - CF$UID - 247 - - - CF$UID - 248 - - - CF$UID - 250 - - - CF$UID - 252 - - - CF$UID - 255 - - - CF$UID - 257 - - - CF$UID - 258 - - - CF$UID - 260 - - - CF$UID - 261 - - - - - $class - - CF$UID - 56 - - NS.objects - - - CF$UID - 242 - - - - - $class - - CF$UID - 56 - - NS.objects - - - CF$UID - 242 - - - CF$UID - 249 - - - - Images - - $class - - CF$UID - 56 - - NS.objects - - - CF$UID - 242 - - - CF$UID - 243 - - - CF$UID - 251 - - - - TTT - - $class - - CF$UID - 56 - - NS.objects - - - CF$UID - 242 - - - CF$UID - 253 - - - CF$UID - 254 - - - - Classes - Supporting Files - - $class - - CF$UID - 56 - - NS.objects - - - CF$UID - 242 - - - CF$UID - 243 - - - CF$UID - 256 - - - - QHTTPOperation - - $class - - CF$UID - 56 - - NS.objects - - - CF$UID - 242 - - - CF$UID - 253 - - - - - $class - - CF$UID - 56 - - NS.objects - - - CF$UID - 242 - - - CF$UID - 259 - - - - Networking Extensions - - $class - - CF$UID - 56 - - NS.objects - - - CF$UID - 242 - - - CF$UID - 243 - - - CF$UID - 244 - - - - - $class - - CF$UID - 56 - - NS.objects - - - CF$UID - 242 - - - CF$UID - 243 - - - - - $class - - CF$UID - 43 - - NS.keys - - - CF$UID - 263 - - - CF$UID - 264 - - - CF$UID - 265 - - - NS.objects - - - CF$UID - 65 - - - CF$UID - 42 - - - CF$UID - 159 - - - - IDEStackCompressionValue - IDEThreadsOrQueuesMode - IDEHideAncestorForNonInterestingFrames - - $class - - CF$UID - 43 - - NS.keys - - - CF$UID - 267 - - - CF$UID - 268 - - - CF$UID - 269 - - - CF$UID - 270 - CF$UID 271 @@ -2783,21 +2886,6 @@ CF$UID 273 - - NS.objects - - - CF$UID - 42 - - - CF$UID - 159 - - - CF$UID - 189 - CF$UID 274 @@ -2808,67 +2896,59 @@ CF$UID - 42 + 276 + + NS.objects + CF$UID 277 + + CF$UID + 307 + + + CF$UID + 311 + + + CF$UID + 324 + + + CF$UID + 271 + + + CF$UID + 328 + - IDEBatchFindNavigatorScrollPosition - IDEBatchFindNavigatorShowsOptions - IDEBatchFindNavigatorReplaceString - IDEBatchFindNavigatorFindString - IDEBatchFindNavigatorSelectedRowIndexes - IDEBatchFindNavigatorFindMode - IDEBatchFindNavigatorCollapsedGroups - QReachabilityOperation + Xcode.IDEKit.Navigator.Structure + Xcode.DebuggerKit.ThreadsStacksNavigator + Xcode.IDEKit.Navigator.BatchFind + Xcode.IDEKit.Navigator.Debug + SelectedNavigator + Xcode.IDEKit.Navigator.Issues $class CF$UID - 276 - - NSRangeCount - 0 - - - $classes - - NSIndexSet - NSObject - - $classname - NSIndexSet - - - $class - - CF$UID - 278 - - NSRangeCount - 0 - - - $classes - - NSMutableIndexSet - NSIndexSet - NSObject - - $classname - NSMutableIndexSet - - - $class - - CF$UID - 43 + 48 NS.keys + + CF$UID + 278 + + + CF$UID + 279 + CF$UID 280 @@ -2889,87 +2969,52 @@ CF$UID 284 + + NS.objects + CF$UID 285 + + CF$UID + 36 + CF$UID 286 CF$UID - 287 + 36 + + + CF$UID + 36 CF$UID 288 - - CF$UID - 289 - - - NS.objects - - - CF$UID - 159 - - - CF$UID - 290 - CF$UID 291 - - CF$UID - 293 - - - CF$UID - 294 - - - CF$UID - 159 - - - CF$UID - 159 - - - CF$UID - 295 - - - CF$UID - 159 - - - CF$UID - 296 - - IDEErrorFilteringEnabled IDEVisibleRect - IDECollapsedFiles - IDEExpandedIssues - IDESelectedNavigables - IDEShowsByType - IDESchemeFilteringEnabled - IDECollapsedTypes - IDERecentFilteringEnabled - IDECollapsedGroups - {{0, 0}, {339, 950}} + IDEUnsavedDocumentFilteringEnabled + IDENavigatorExpandedItemsBeforeFilteringSet + IDERecentDocumentFilteringEnabled + IDESCMStatusFilteringEnabled + IDESelectedObjects + IDEExpandedItemsSet + {{0, 0}, {339, 968}} $class CF$UID - 292 + 287 NS.objects @@ -2977,67 +3022,23 @@ $classes - NSMutableSet NSSet NSObject $classname - NSMutableSet + NSSet $class CF$UID - 292 + 102 NS.objects - - - - $class - - CF$UID - 56 - - NS.objects - - - - $class - - CF$UID - 292 - - NS.objects - - - - $class - - CF$UID - 292 - - NS.objects - - - - $class - - CF$UID - 43 - - NS.keys - - - CF$UID - 45 - - - NS.objects CF$UID - 298 + 289 @@ -3045,103 +3046,65 @@ $class CF$UID - 56 + 61 NS.objects CF$UID - 299 + 290 CF$UID - 301 + 99 CF$UID - 303 + 97 + + + CF$UID + 94 + AFNetworkingExample $class CF$UID - 52 + 287 - NS.keys - - - CF$UID - 48 - - - CF$UID - 49 - - NS.objects CF$UID - 16 + 292 + + + CF$UID + 293 + + + CF$UID + 295 + + + CF$UID + 296 + + + CF$UID + 297 CF$UID 300 - - - 340 - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 48 - - - CF$UID - 49 - - - NS.objects - - - CF$UID - 14 - CF$UID 302 - - - 1580 - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 48 - - - CF$UID - 49 - - - NS.objects - CF$UID 304 @@ -3152,31 +3115,198 @@ - IDEUtilitiesArea - 260 $class CF$UID - 86 + 61 NS.objects CF$UID - 5 + 290 - {{0, 86}, {1920, 1092}} $class CF$UID - 43 + 61 + + NS.objects + + + CF$UID + 290 + + + CF$UID + 294 + + + + Images + + $class + + CF$UID + 61 + + NS.objects + + + CF$UID + 290 + + + CF$UID + 99 + + + CF$UID + 97 + + + + + $class + + CF$UID + 61 + + NS.objects + + + CF$UID + 290 + + + CF$UID + 99 + + + + + $class + + CF$UID + 61 + + NS.objects + + + CF$UID + 290 + + + CF$UID + 298 + + + CF$UID + 299 + + + + Classes + Controllers + + $class + + CF$UID + 61 + + NS.objects + + + CF$UID + 290 + + + CF$UID + 298 + + + CF$UID + 301 + + + + Views + + $class + + CF$UID + 61 + + NS.objects + + + CF$UID + 290 + + + CF$UID + 303 + + + + Networking Extensions + + $class + + CF$UID + 61 + + NS.objects + + + CF$UID + 290 + + + CF$UID + 298 + + + + + $class + + CF$UID + 61 + + NS.objects + + + CF$UID + 290 + + + CF$UID + 99 + + + CF$UID + 306 + + + + TTT + + $class + + CF$UID + 48 NS.keys + + CF$UID + 308 + CF$UID 309 @@ -3185,10 +3315,34 @@ CF$UID 310 + + NS.objects + CF$UID - 311 + 71 + + CF$UID + 125 + + + CF$UID + 36 + + + + IDEStackCompressionValue + IDEThreadsOrQueuesMode + IDEHideAncestorForNonInterestingFrames + + $class + + CF$UID + 48 + + NS.keys + CF$UID 312 @@ -3222,7 +3376,15 @@ CF$UID - 21 + 47 + + + CF$UID + 36 + + + CF$UID + 266 CF$UID @@ -3230,35 +3392,646 @@ CF$UID - 42 + 320 CF$UID - 993 + 125 CF$UID - 998 + 322 + + + + IDEBatchFindNavigatorScrollPosition + IDEBatchFindNavigatorShowsOptions + IDEBatchFindNavigatorReplaceString + IDEBatchFindNavigatorFindString + IDEBatchFindNavigatorSelectedRowIndexes + IDEBatchFindNavigatorFindMode + IDEBatchFindNavigatorCollapsedGroups + NSLog + + $class + + CF$UID + 321 + + NSRangeCount + 0 + + + $classes + + NSIndexSet + NSObject + + $classname + NSIndexSet + + + $class + + CF$UID + 323 + + NSRangeCount + 0 + + + $classes + + NSMutableIndexSet + NSIndexSet + NSObject + + $classname + NSMutableIndexSet + + + $class + + CF$UID + 48 + + NS.keys + + + CF$UID + 325 CF$UID - 1001 + 326 CF$UID - 1031 + 327 + + + NS.objects + + + CF$UID + 71 CF$UID - 1032 + 47 CF$UID - 159 + 36 + + + + IDEStackCompressionValue + IDEThreadOrQueueMode + IDEShowOnlyInterestingContent + + $class + + CF$UID + 48 + + NS.keys + + + CF$UID + 329 CF$UID - 159 + 330 + + + CF$UID + 331 + + + CF$UID + 332 + + + CF$UID + 333 + + + CF$UID + 334 + + + CF$UID + 335 + + + CF$UID + 336 + + + CF$UID + 337 + + + CF$UID + 338 + + + NS.objects + + + CF$UID + 36 + + + CF$UID + 339 + + + CF$UID + 340 + + + CF$UID + 342 + + + CF$UID + 343 + + + CF$UID + 36 + + + CF$UID + 36 + + + CF$UID + 360 + + + CF$UID + 36 + + + CF$UID + 361 + + + + IDEErrorFilteringEnabled + IDEVisibleRect + IDECollapsedFiles + IDEExpandedIssues + IDESelectedNavigables + IDEShowsByType + IDESchemeFilteringEnabled + IDECollapsedTypes + IDERecentFilteringEnabled + IDECollapsedGroups + {{0, 0}, {339, 946}} + + $class + + CF$UID + 341 + + NS.objects + + + + $classes + + NSMutableSet + NSSet + NSObject + + $classname + NSMutableSet + + + $class + + CF$UID + 341 + + NS.objects + + + + $class + + CF$UID + 61 + + NS.objects + + + CF$UID + 344 + + + + + $class + + CF$UID + 61 + + NS.objects + + + CF$UID + 345 + + + CF$UID + 350 + + + + + $class + + CF$UID + 57 + + NS.keys + + + CF$UID + 346 + + + CF$UID + 347 + + + NS.objects + + + CF$UID + 348 + + + CF$UID + 349 + + + + id + ty + AFNetworkingExample + g + + $class + + CF$UID + 57 + + NS.keys + + + CF$UID + 346 + + + CF$UID + 347 + + + NS.objects + + + CF$UID + 351 + + + CF$UID + 359 + + + + + $class + + CF$UID + 48 + + NS.keys + + + CF$UID + 352 + + + CF$UID + 353 + + + CF$UID + 354 + + + CF$UID + 355 + + + NS.objects + + + CF$UID + 356 + + + CF$UID + 357 + + + CF$UID + 358 + + + CF$UID + 356 + + + + fullMessage + subissues + type + shortMessage + Code Sign warning: code-signing identity 'iPhone Developer' matches multiple identities : 'iPhone Developer: Mattt Thompson (78K26BBJN7)', 'iPhone Developer: Matthew Thompson (R6H76394LW)' -- 'iPhone Developer: Mattt Thompson (78K26BBJN7)' will be used. + + $class + + CF$UID + 61 + + NS.objects + + + Uncategorized + i + + $class + + CF$UID + 341 + + NS.objects + + + + $class + + CF$UID + 341 + + NS.objects + + + + $class + + CF$UID + 48 + + NS.keys + + + CF$UID + 50 + + + NS.objects + + + CF$UID + 363 + + + + + $class + + CF$UID + 61 + + NS.objects + + + CF$UID + 364 + + + CF$UID + 366 + + + CF$UID + 368 + + + + + $class + + CF$UID + 57 + + NS.keys + + + CF$UID + 53 + + + CF$UID + 54 + + + NS.objects + + + CF$UID + 19 + + + CF$UID + 365 + + + + 340 + + $class + + CF$UID + 57 + + NS.keys + + + CF$UID + 53 + + + CF$UID + 54 + + + NS.objects + + + CF$UID + 17 + + + CF$UID + 367 + + + + 1580 + + $class + + CF$UID + 57 + + NS.keys + + + CF$UID + 53 + + + CF$UID + 54 + + + NS.objects + + + CF$UID + 369 + + + CF$UID + 370 + + + + IDEUtilitiesArea + 260 + + $class + + CF$UID + 102 + + NS.objects + + + CF$UID + 6 + + + + + $class + + CF$UID + 48 + + NS.keys + + + CF$UID + 373 + + + CF$UID + 374 + + + CF$UID + 375 + + + CF$UID + 376 + + + CF$UID + 377 + + + CF$UID + 378 + + + CF$UID + 379 + + + CF$UID + 380 + + + CF$UID + 381 + + + CF$UID + 382 + + + NS.objects + + + CF$UID + 24 + + + CF$UID + 383 + + + CF$UID + 47 + + + CF$UID + 1221 + + + CF$UID + 1226 + + + CF$UID + 1229 + + + CF$UID + 1259 + + + CF$UID + 1260 + + + CF$UID + 36 + + + CF$UID + 36 @@ -3276,93 +4049,92 @@ $class CF$UID - 43 + 48 NS.keys CF$UID - 320 + 384 CF$UID - 321 + 385 CF$UID - 203 + 224 CF$UID - 161 + 245 CF$UID - 322 + 386 CF$UID - 323 + 163 NS.objects CF$UID - 324 + 387 CF$UID - 350 + 413 CF$UID - 367 + 430 CF$UID - 451 + 506 CF$UID - 907 + 1122 CF$UID - 990 + 1218 Xcode.IDEKit.CocoaTouchIntegration.EditorDocument.CocoaTouch Xcode.IDEKit.EditorDocument.PlistEditor Xcode.IDEKit.EditorDocument.LogDocument - Xcode.IDEKit.EditorDocument.SourceCodeComparisonEditor $class CF$UID - 43 + 48 NS.keys CF$UID - 325 + 388 CF$UID - 327 + 390 NS.objects CF$UID - 329 + 392 CF$UID - 343 + 406 @@ -3370,7 +4142,7 @@ $class CF$UID - 99 + 119 NS.base @@ -3380,14 +4152,14 @@ NS.relative CF$UID - 326 + 389 $class CF$UID - 151 + 105 NS.string file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFNetworkingExample/AFNetworkingExample/en.lproj/MainWindow.xib @@ -3396,7 +4168,7 @@ $class CF$UID - 99 + 119 NS.base @@ -3406,14 +4178,14 @@ NS.relative CF$UID - 328 + 391 $class CF$UID - 151 + 105 NS.string file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFNetworkingExample/AFNetworkingExample/en.lproj/RootViewController.xib @@ -3422,44 +4194,44 @@ $class CF$UID - 43 + 48 NS.keys CF$UID - 330 + 393 CF$UID - 331 + 394 CF$UID - 332 + 395 CF$UID - 333 + 396 NS.objects CF$UID - 334 + 397 CF$UID - 337 + 400 CF$UID - 333 + 396 CF$UID - 338 + 401 @@ -3471,20 +4243,20 @@ $class CF$UID - 43 + 48 NS.keys CF$UID - 335 + 398 NS.objects CF$UID - 336 + 399 @@ -3494,13 +4266,13 @@ $class CF$UID - 56 + 61 NS.objects CF$UID - 65 + 71 @@ -3508,28 +4280,28 @@ $class CF$UID - 43 + 48 NS.keys CF$UID - 339 + 402 CF$UID - 340 + 403 NS.objects CF$UID - 341 + 404 CF$UID - 342 + 405 @@ -3539,7 +4311,7 @@ $class CF$UID - 43 + 48 NS.keys @@ -3550,13 +4322,13 @@ $class CF$UID - 56 + 61 NS.objects CF$UID - 65 + 71 @@ -3564,44 +4336,44 @@ $class CF$UID - 43 + 48 NS.keys CF$UID - 330 + 393 CF$UID - 331 + 394 CF$UID - 332 + 395 CF$UID - 333 + 396 NS.objects CF$UID - 344 + 407 CF$UID - 346 + 409 CF$UID - 333 + 396 CF$UID - 347 + 410 @@ -3609,20 +4381,20 @@ $class CF$UID - 43 + 48 NS.keys CF$UID - 335 + 398 NS.objects CF$UID - 345 + 408 @@ -3631,13 +4403,13 @@ $class CF$UID - 56 + 61 NS.objects CF$UID - 65 + 71 @@ -3645,28 +4417,28 @@ $class CF$UID - 43 + 48 NS.keys CF$UID - 339 + 402 CF$UID - 340 + 403 NS.objects CF$UID - 348 + 411 CF$UID - 349 + 412 @@ -3674,7 +4446,7 @@ $class CF$UID - 43 + 48 NS.keys @@ -3685,13 +4457,13 @@ $class CF$UID - 56 + 61 NS.objects CF$UID - 65 + 71 @@ -3699,28 +4471,28 @@ $class CF$UID - 43 + 48 NS.keys CF$UID - 351 + 414 CF$UID - 353 + 416 NS.objects CF$UID - 355 + 418 CF$UID - 362 + 425 @@ -3728,7 +4500,7 @@ $class CF$UID - 99 + 119 NS.base @@ -3738,14 +4510,14 @@ NS.relative CF$UID - 352 + 415 $class CF$UID - 151 + 105 NS.string file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFNetworkingExample/AFNetworkingExample/Info.plist @@ -3754,7 +4526,7 @@ $class CF$UID - 99 + 119 NS.base @@ -3764,14 +4536,14 @@ NS.relative CF$UID - 354 + 417 $class CF$UID - 151 + 105 NS.string file://localhost/Users/mattt/Code/Objective-C/AFNetworking/Example/Info.plist @@ -3780,36 +4552,36 @@ $class CF$UID - 43 + 48 NS.keys CF$UID - 356 + 419 CF$UID - 357 + 420 CF$UID - 358 + 421 NS.objects CF$UID - 359 + 422 CF$UID - 360 + 423 CF$UID - 361 + 424 @@ -3820,7 +4592,7 @@ $class CF$UID - 86 + 102 NS.objects @@ -3829,7 +4601,7 @@ $class CF$UID - 292 + 341 NS.objects @@ -3839,36 +4611,36 @@ $class CF$UID - 43 + 48 NS.keys CF$UID - 356 + 419 CF$UID - 358 + 421 CF$UID - 357 + 420 NS.objects CF$UID - 359 + 422 CF$UID - 363 + 426 CF$UID - 364 + 427 @@ -3877,13 +4649,13 @@ $class CF$UID - 292 + 341 NS.objects CF$UID - 365 + 428 @@ -3891,13 +4663,13 @@ $class CF$UID - 56 + 61 NS.objects CF$UID - 366 + 429 @@ -3906,36 +4678,36 @@ $class CF$UID - 43 + 48 NS.keys CF$UID - 368 + 431 CF$UID - 370 + 433 CF$UID - 372 + 435 NS.objects CF$UID - 374 + 437 CF$UID - 407 + 472 CF$UID - 429 + 484 @@ -3943,7 +4715,7 @@ $class CF$UID - 99 + 119 NS.base @@ -3953,14 +4725,14 @@ NS.relative CF$UID - 369 + 432 $class CF$UID - 151 + 105 NS.string file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFNetworkingExample/AFNetworkingExample.xcodeproj @@ -3969,7 +4741,7 @@ $class CF$UID - 99 + 119 NS.base @@ -3979,14 +4751,14 @@ NS.relative CF$UID - 371 + 434 $class CF$UID - 151 + 105 NS.string file://localhost/Users/mattt/Code/Objective-C/AFNetworking/Example/AFNetworking%20Example.xcodeproj/ @@ -3995,7 +4767,7 @@ $class CF$UID - 99 + 119 NS.base @@ -4005,14 +4777,14 @@ NS.relative CF$UID - 373 + 436 $class CF$UID - 151 + 105 NS.string file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFNetworkingExample.xcodeproj @@ -4021,202 +4793,14 @@ $class CF$UID - 43 + 48 NS.keys CF$UID - 177 + 198 - - CF$UID - 178 - - - CF$UID - 179 - - - CF$UID - 180 - - - CF$UID - 375 - - - NS.objects - - - CF$UID - 376 - - - CF$UID - 377 - - - CF$UID - 383 - - - CF$UID - 384 - - - CF$UID - 394 - - - - Xcode3ProjectEditor_Xcode3BuildPhasesEditor - Xcode3BuildSettingsEditor - - $class - - CF$UID - 43 - - NS.keys - - - CF$UID - 184 - - - NS.objects - - - CF$UID - 378 - - - - - $class - - CF$UID - 56 - - NS.objects - - - CF$UID - 379 - - - CF$UID - 381 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 187 - - - CF$UID - 188 - - - NS.objects - - - CF$UID - 189 - - - CF$UID - 380 - - - - 170 - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 187 - - - CF$UID - 188 - - - NS.objects - - - CF$UID - 189 - - - CF$UID - 382 - - - - 2050 - Xcode3BuildPhasesEditor - - $class - - CF$UID - 86 - - NS.objects - - - CF$UID - 385 - - - - - $class - - CF$UID - 201 - - documentURL - - CF$UID - 196 - - selection - - CF$UID - 387 - - timestamp - - CF$UID - 386 - - - 328564319.53072202 - - $class - - CF$UID - 43 - - NS.keys - CF$UID 199 @@ -4227,22 +4811,211 @@ CF$UID - 388 + 201 + + + CF$UID + 438 NS.objects CF$UID - 383 + 439 CF$UID - 145 + 440 CF$UID - 389 + 446 + + + CF$UID + 447 + + + CF$UID + 458 + + + + Xcode3ProjectEditor_Xcode3BuildPhasesEditor + Xcode3BuildSettingsEditor + + $class + + CF$UID + 48 + + NS.keys + + + CF$UID + 205 + + + NS.objects + + + CF$UID + 441 + + + + + $class + + CF$UID + 61 + + NS.objects + + + CF$UID + 442 + + + CF$UID + 444 + + + + + $class + + CF$UID + 57 + + NS.keys + + + CF$UID + 208 + + + CF$UID + 209 + + + NS.objects + + + CF$UID + 210 + + + CF$UID + 443 + + + + 170 + + $class + + CF$UID + 57 + + NS.keys + + + CF$UID + 208 + + + CF$UID + 209 + + + NS.objects + + + CF$UID + 210 + + + CF$UID + 445 + + + + 2050 + Xcode3BuildPhasesEditor + + $class + + CF$UID + 102 + + NS.objects + + + CF$UID + 448 + + + + + $class + + CF$UID + 222 + + documentURL + + CF$UID + 449 + + selection + + CF$UID + 451 + + timestamp + + CF$UID + 450 + + + file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFNetworkingExample/AFNetworkingExample.xcodeproj/ + 328564319.53072202 + + $class + + CF$UID + 48 + + NS.keys + + + CF$UID + 220 + + + CF$UID + 221 + + + CF$UID + 452 + + + NS.objects + + + CF$UID + 446 + + + CF$UID + 151 + + + CF$UID + 453 @@ -4251,13 +5024,13 @@ $class CF$UID - 86 + 102 NS.objects CF$UID - 390 + 454 @@ -4265,20 +5038,20 @@ $class CF$UID - 43 + 48 NS.keys CF$UID - 391 + 455 NS.objects CF$UID - 392 + 456 @@ -4287,13 +5060,13 @@ $class CF$UID - 86 + 102 NS.objects CF$UID - 393 + 457 @@ -4301,7 +5074,7 @@ $class CF$UID - 276 + 321 NSLength 2 @@ -4314,68 +5087,68 @@ $class CF$UID - 43 + 48 NS.keys CF$UID - 395 + 459 CF$UID - 396 + 460 CF$UID - 397 + 461 CF$UID - 398 + 462 CF$UID - 399 + 463 CF$UID - 400 + 464 CF$UID - 401 + 465 NS.objects CF$UID - 402 + 466 CF$UID - 189 + 210 CF$UID - 403 + 467 CF$UID - 404 + 468 CF$UID - 405 + 469 CF$UID - 160 + 470 CF$UID - 406 + 471 @@ -4390,7 +5163,7 @@ $class CF$UID - 43 + 48 NS.keys @@ -4401,7 +5174,7 @@ $class CF$UID - 43 + 48 NS.keys @@ -4412,7 +5185,7 @@ $class CF$UID - 43 + 48 NS.keys @@ -4423,61 +5196,62 @@ $class CF$UID - 56 + 61 NS.objects CF$UID - 391 + 455 CF$UID - 391 + 455 CF$UID - 391 + 455 CF$UID - 391 + 455 CF$UID - 391 + 455 CF$UID - 391 + 455 CF$UID - 391 + 455 CF$UID - 391 + 455 CF$UID - 391 + 455 CF$UID - 391 + 455 CF$UID - 391 + 455 + {0, 0} $class CF$UID - 43 + 48 NS.keys @@ -4488,200 +5262,14 @@ $class CF$UID - 43 + 48 NS.keys CF$UID - 177 + 198 - - CF$UID - 178 - - - CF$UID - 179 - - - CF$UID - 180 - - - CF$UID - 375 - - - NS.objects - - - CF$UID - 376 - - - CF$UID - 408 - - - CF$UID - 383 - - - CF$UID - 414 - - - CF$UID - 421 - - - - - $class - - CF$UID - 43 - - NS.keys - - - CF$UID - 184 - - - NS.objects - - - CF$UID - 409 - - - - - $class - - CF$UID - 56 - - NS.objects - - - CF$UID - 410 - - - CF$UID - 412 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 187 - - - CF$UID - 188 - - - NS.objects - - - CF$UID - 189 - - - CF$UID - 411 - - - - 170 - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 187 - - - CF$UID - 188 - - - NS.objects - - - CF$UID - 189 - - - CF$UID - 413 - - - - 2050 - - $class - - CF$UID - 86 - - NS.objects - - - CF$UID - 415 - - - - - $class - - CF$UID - 201 - - documentURL - - CF$UID - 416 - - selection - - CF$UID - 418 - - timestamp - - CF$UID - 417 - - - file://localhost/Users/mattt/Code/Objective-C/AFNetworking/Example/AFNetworking%20Example.xcodeproj/ - 328649247.27205497 - - $class - - CF$UID - 43 - - NS.keys - CF$UID 199 @@ -4692,22 +5280,34 @@ CF$UID - 388 + 201 + + + CF$UID + 202 NS.objects CF$UID - 383 + 203 CF$UID - 145 + 473 CF$UID - 419 + 214 + + + CF$UID + 479 + + + CF$UID + 483 @@ -4715,93 +5315,20 @@ $class CF$UID - 86 - - NS.objects - - - CF$UID - 420 - - - - - $class - - CF$UID - 43 - - NS.keys - - NS.objects - - - - $class - - CF$UID - 43 + 48 NS.keys CF$UID - 395 - - - CF$UID - 396 - - - CF$UID - 398 - - - CF$UID - 397 - - - CF$UID - 399 - - - CF$UID - 400 - - - CF$UID - 401 + 205 NS.objects CF$UID - 422 - - - CF$UID - 189 - - - CF$UID - 423 - - - CF$UID - 424 - - - CF$UID - 425 - - - CF$UID - 160 - - - CF$UID - 428 + 474 @@ -4809,328 +5336,46 @@ $class CF$UID - 43 - - NS.keys - - NS.objects - - - - $class - - CF$UID - 43 - - NS.keys - - NS.objects - - - - $class - - CF$UID - 43 - - NS.keys - - NS.objects - - - - $class - - CF$UID - 56 + 61 NS.objects CF$UID - 426 + 475 CF$UID - 427 - - - CF$UID - 391 - - - CF$UID - 426 - - - CF$UID - 426 - - - CF$UID - 426 - - - CF$UID - 426 - - - CF$UID - 426 - - - CF$UID - 426 - - - CF$UID - 426 - - - CF$UID - 426 - - - CF$UID - 426 - - - CF$UID - 426 - - - CF$UID - 426 - - - CF$UID - 426 - - - CF$UID - 426 - - - CF$UID - 426 - - - CF$UID - 426 - - - CF$UID - 426 - - - CF$UID - 426 - - - CF$UID - 426 - - - CF$UID - 426 - - - CF$UID - 426 - - - CF$UID - 426 - - - CF$UID - 426 - - - CF$UID - 426 - - - CF$UID - 426 - - - CF$UID - 426 - - - CF$UID - 426 - - - CF$UID - 426 - - - CF$UID - 426 - - - CF$UID - 426 - - - CF$UID - 426 - - - CF$UID - 426 - - - CF$UID - 426 - - - CF$UID - 426 - - - CF$UID - 426 - - - CF$UID - 426 + 477 - Compile Sources - Copy Bundle Resources $class CF$UID - 43 - - NS.keys - - NS.objects - - - - $class - - CF$UID - 43 + 57 NS.keys CF$UID - 177 + 208 CF$UID - 178 - - - CF$UID - 179 - - - CF$UID - 180 - - - CF$UID - 375 + 209 NS.objects CF$UID - 182 + 210 CF$UID - 430 - - - CF$UID - 383 - - - CF$UID - 436 - - - CF$UID - 445 - - - - - $class - - CF$UID - 43 - - NS.keys - - - CF$UID - 184 - - - NS.objects - - - CF$UID - 431 - - - - - $class - - CF$UID - 56 - - NS.objects - - - CF$UID - 432 - - - CF$UID - 434 - - - - - $class - - CF$UID - 52 - - NS.keys - - - CF$UID - 187 - - - CF$UID - 188 - - - NS.objects - - - CF$UID - 189 - - - CF$UID - 433 + 476 @@ -5139,28 +5384,257 @@ $class CF$UID - 52 + 57 NS.keys CF$UID - 187 + 208 CF$UID - 188 + 209 NS.objects CF$UID - 189 + 210 CF$UID - 435 + 478 + + + + 942 + + $class + + CF$UID + 102 + + NS.objects + + + CF$UID + 480 + + + + + $class + + CF$UID + 222 + + documentURL + + CF$UID + 217 + + selection + + CF$UID + 482 + + timestamp + + CF$UID + 481 + + + 332371428.80542803 + + $class + + CF$UID + 48 + + NS.keys + + + CF$UID + 220 + + + CF$UID + 221 + + + NS.objects + + + CF$UID + 214 + + + CF$UID + 151 + + + + + $class + + CF$UID + 48 + + NS.keys + + NS.objects + + + + $class + + CF$UID + 48 + + NS.keys + + + CF$UID + 198 + + + CF$UID + 199 + + + CF$UID + 200 + + + CF$UID + 201 + + + CF$UID + 438 + + + NS.objects + + + CF$UID + 203 + + + CF$UID + 485 + + + CF$UID + 446 + + + CF$UID + 491 + + + CF$UID + 500 + + + + + $class + + CF$UID + 48 + + NS.keys + + + CF$UID + 205 + + + NS.objects + + + CF$UID + 486 + + + + + $class + + CF$UID + 61 + + NS.objects + + + CF$UID + 487 + + + CF$UID + 489 + + + + + $class + + CF$UID + 57 + + NS.keys + + + CF$UID + 208 + + + CF$UID + 209 + + + NS.objects + + + CF$UID + 210 + + + CF$UID + 488 + + + + 170 + + $class + + CF$UID + 57 + + NS.keys + + + CF$UID + 208 + + + CF$UID + 209 + + + NS.objects + + + CF$UID + 210 + + + CF$UID + 490 @@ -5169,13 +5643,13 @@ $class CF$UID - 86 + 102 NS.objects CF$UID - 437 + 492 @@ -5183,22 +5657,22 @@ $class CF$UID - 201 + 222 documentURL CF$UID - 438 + 493 selection CF$UID - 440 + 495 timestamp CF$UID - 439 + 494 file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFNetworkingExample.xcodeproj/ @@ -5207,36 +5681,36 @@ $class CF$UID - 43 + 48 NS.keys CF$UID - 199 + 220 CF$UID - 200 + 221 CF$UID - 388 + 452 NS.objects CF$UID - 383 + 446 CF$UID - 145 + 151 CF$UID - 441 + 496 @@ -5244,13 +5718,13 @@ $class CF$UID - 86 + 102 NS.objects CF$UID - 442 + 497 @@ -5258,20 +5732,20 @@ $class CF$UID - 43 + 48 NS.keys CF$UID - 391 + 455 NS.objects CF$UID - 443 + 498 @@ -5279,13 +5753,13 @@ $class CF$UID - 86 + 102 NS.objects CF$UID - 444 + 499 @@ -5293,7 +5767,7 @@ $class CF$UID - 276 + 321 NSLength 1 @@ -5306,148 +5780,21 @@ $class CF$UID - 43 + 48 NS.keys CF$UID - 400 + 464 CF$UID - 399 + 463 CF$UID - 401 - - - CF$UID - 395 - - - CF$UID - 398 - - - CF$UID - 397 - - - NS.objects - - - CF$UID - 160 - - - CF$UID - 446 - - - CF$UID - 447 - - - CF$UID - 448 - - - CF$UID - 449 - - - CF$UID - 450 - - - - - $class - - CF$UID - 56 - - NS.objects - - - CF$UID - 391 - - - - - $class - - CF$UID - 43 - - NS.keys - - NS.objects - - - - $class - - CF$UID - 43 - - NS.keys - - NS.objects - - - - $class - - CF$UID - 43 - - NS.keys - - NS.objects - - - - $class - - CF$UID - 43 - - NS.keys - - NS.objects - - - - $class - - CF$UID - 43 - - NS.keys - - - CF$UID - 452 - - - CF$UID - 454 - - - CF$UID - 456 - - - CF$UID - 458 - - - CF$UID - 460 + 465 CF$UID @@ -5455,319 +5802,343 @@ CF$UID - 464 + 461 CF$UID - 466 - - - CF$UID - 468 + 459 + + NS.objects + CF$UID 470 CF$UID - 472 - - - CF$UID - 474 - - - CF$UID - 476 - - - CF$UID - 478 - - - CF$UID - 480 - - - CF$UID - 482 - - - CF$UID - 484 - - - CF$UID - 486 - - - CF$UID - 488 - - - CF$UID - 490 - - - CF$UID - 492 - - - CF$UID - 494 - - - CF$UID - 496 - - - CF$UID - 498 - - - CF$UID - 500 + 501 CF$UID 502 + + CF$UID + 503 + CF$UID 504 CF$UID - 506 - - - CF$UID - 508 - - - CF$UID - 510 - - - CF$UID - 512 - - - CF$UID - 514 - - - CF$UID - 516 - - - CF$UID - 518 - - - CF$UID - 520 - - - CF$UID - 522 - - - CF$UID - 524 - - - CF$UID - 526 - - - CF$UID - 528 - - - CF$UID - 530 - - - CF$UID - 532 - - - CF$UID - 534 - - - CF$UID - 536 - - - CF$UID - 538 - - - CF$UID - 540 - - - CF$UID - 542 - - - CF$UID - 544 - - - CF$UID - 546 - - - CF$UID - 548 - - - CF$UID - 550 - - - CF$UID - 552 - - - CF$UID - 554 - - - CF$UID - 556 - - - CF$UID - 558 - - - CF$UID - 560 - - - CF$UID - 562 - - - CF$UID - 564 - - - CF$UID - 566 - - - CF$UID - 568 - - - CF$UID - 570 - - - CF$UID - 572 - - - CF$UID - 574 - - - CF$UID - 576 - - - CF$UID - 578 - - - CF$UID - 580 - - - CF$UID - 582 - - - CF$UID - 584 - - - CF$UID - 586 - - - CF$UID - 588 - - - CF$UID - 590 - - - CF$UID - 592 - - - CF$UID - 594 - - - CF$UID - 596 - - - CF$UID - 598 - - - CF$UID - 600 - - - CF$UID - 602 - - - CF$UID - 604 - - - CF$UID - 606 - - - CF$UID - 608 - - - CF$UID - 610 - - - CF$UID - 612 + 505 + + + $class + + CF$UID + 61 + NS.objects CF$UID - 614 + 455 + + + + + $class + + CF$UID + 48 + + NS.keys + + NS.objects + + + + $class + + CF$UID + 48 + + NS.keys + + NS.objects + + + + $class + + CF$UID + 48 + + NS.keys + + NS.objects + + + + $class + + CF$UID + 48 + + NS.keys + + NS.objects + + + + $class + + CF$UID + 48 + + NS.keys + + + CF$UID + 507 + + + CF$UID + 509 + + + CF$UID + 511 + + + CF$UID + 513 + + + CF$UID + 515 + + + CF$UID + 517 + + + CF$UID + 519 + + + CF$UID + 521 + + + CF$UID + 523 + + + CF$UID + 525 + + + CF$UID + 527 + + + CF$UID + 529 + + + CF$UID + 531 + + + CF$UID + 533 + + + CF$UID + 535 + + + CF$UID + 537 + + + CF$UID + 539 + + + CF$UID + 541 + + + CF$UID + 543 + + + CF$UID + 545 + + + CF$UID + 547 + + + CF$UID + 549 + + + CF$UID + 551 + + + CF$UID + 553 + + + CF$UID + 555 + + + CF$UID + 557 + + + CF$UID + 559 + + + CF$UID + 561 + + + CF$UID + 563 + + + CF$UID + 565 + + + CF$UID + 567 + + + CF$UID + 569 + + + CF$UID + 571 + + + CF$UID + 573 + + + CF$UID + 575 + + + CF$UID + 577 + + + CF$UID + 579 + + + CF$UID + 581 + + + CF$UID + 583 + + + CF$UID + 585 + + + CF$UID + 587 + + + CF$UID + 589 + + + CF$UID + 591 + + + CF$UID + 593 + + + CF$UID + 595 + + + CF$UID + 597 + + + CF$UID + 599 + + + CF$UID + 601 + + + CF$UID + 603 + + + CF$UID + 605 + + + CF$UID + 607 + + + CF$UID + 609 + + + CF$UID + 611 + + + CF$UID + 613 + + + CF$UID + 615 CF$UID 617 + + CF$UID + 619 + CF$UID 621 + + CF$UID + 623 + CF$UID 625 @@ -5778,52 +6149,108 @@ CF$UID - 630 + 629 CF$UID - 638 + 631 CF$UID - 642 + 633 CF$UID - 646 + 635 + + + CF$UID + 637 + + + CF$UID + 639 + + + CF$UID + 641 + + + CF$UID + 643 + + + CF$UID + 645 + + + CF$UID + 647 CF$UID 649 + + CF$UID + 651 + CF$UID 653 + + CF$UID + 655 + CF$UID 657 + + CF$UID + 659 + CF$UID 661 + + CF$UID + 663 + CF$UID 665 + + CF$UID + 667 + CF$UID 669 + + CF$UID + 671 + CF$UID 673 + + CF$UID + 675 + CF$UID 677 + + CF$UID + 679 + CF$UID 681 @@ -5834,63 +6261,102 @@ CF$UID - 686 + 685 CF$UID - 688 + 687 CF$UID - 692 + 689 CF$UID - 696 + 691 CF$UID - 700 + 693 CF$UID - 704 + 695 CF$UID - 708 + 697 CF$UID - 712 + 699 + + + CF$UID + 701 + + + CF$UID + 703 + + + CF$UID + 705 + + + CF$UID + 707 + + + CF$UID + 709 + + + CF$UID + 711 + + + CF$UID + 713 CF$UID 715 + + CF$UID + 717 + CF$UID 719 + + CF$UID + 721 + CF$UID 723 + + NS.objects + CF$UID - 727 + 725 CF$UID - 731 + 729 CF$UID - 734 + 733 CF$UID - 738 + 737 CF$UID @@ -5914,27 +6380,27 @@ CF$UID - 759 + 758 CF$UID - 763 + 762 CF$UID - 767 + 766 CF$UID - 771 + 770 CF$UID - 773 + 774 CF$UID - 777 + 778 CF$UID @@ -5942,47 +6408,47 @@ CF$UID - 785 + 784 CF$UID - 789 + 787 CF$UID - 793 + 791 CF$UID - 797 + 795 CF$UID - 801 + 798 CF$UID - 804 + 802 CF$UID - 807 + 805 CF$UID - 811 + 809 CF$UID - 815 + 813 CF$UID - 819 + 816 CF$UID - 822 + 820 CF$UID @@ -5990,23 +6456,19 @@ CF$UID - 826 + 828 CF$UID - 830 + 832 CF$UID - 834 + 836 CF$UID - 838 - - - CF$UID - 841 + 840 CF$UID @@ -6014,11 +6476,11 @@ CF$UID - 847 + 848 CF$UID - 851 + 852 CF$UID @@ -6026,11 +6488,11 @@ CF$UID - 859 + 857 CF$UID - 863 + 861 CF$UID @@ -6042,31 +6504,27 @@ CF$UID - 872 + 873 CF$UID - 876 + 877 CF$UID - 880 + 881 CF$UID - 883 + 885 CF$UID - 887 + 889 CF$UID - 891 - - - CF$UID - 895 + 893 CF$UID @@ -6074,11 +6532,251 @@ CF$UID - 899 + 901 CF$UID - 903 + 905 + + + CF$UID + 909 + + + CF$UID + 913 + + + CF$UID + 917 + + + CF$UID + 920 + + + CF$UID + 924 + + + CF$UID + 926 + + + CF$UID + 930 + + + CF$UID + 934 + + + CF$UID + 938 + + + CF$UID + 940 + + + CF$UID + 944 + + + CF$UID + 948 + + + CF$UID + 952 + + + CF$UID + 956 + + + CF$UID + 960 + + + CF$UID + 963 + + + CF$UID + 966 + + + CF$UID + 969 + + + CF$UID + 971 + + + CF$UID + 975 + + + CF$UID + 979 + + + CF$UID + 983 + + + CF$UID + 987 + + + CF$UID + 991 + + + CF$UID + 995 + + + CF$UID + 998 + + + CF$UID + 1002 + + + CF$UID + 1006 + + + CF$UID + 1010 + + + CF$UID + 1014 + + + CF$UID + 1016 + + + CF$UID + 1018 + + + CF$UID + 1021 + + + CF$UID + 1023 + + + CF$UID + 1027 + + + CF$UID + 1031 + + + CF$UID + 1035 + + + CF$UID + 1038 + + + CF$UID + 1042 + + + CF$UID + 1046 + + + CF$UID + 1050 + + + CF$UID + 1053 + + + CF$UID + 1057 + + + CF$UID + 1060 + + + CF$UID + 1064 + + + CF$UID + 1068 + + + CF$UID + 1072 + + + CF$UID + 1076 + + + CF$UID + 1080 + + + CF$UID + 1084 + + + CF$UID + 1088 + + + CF$UID + 1091 + + + CF$UID + 1095 + + + CF$UID + 1098 + + + CF$UID + 1102 + + + CF$UID + 1105 + + + CF$UID + 1108 + + + CF$UID + 1112 + + + CF$UID + 1114 + + + CF$UID + 1118 @@ -6086,7 +6784,7 @@ $class CF$UID - 99 + 119 NS.base @@ -6096,1158 +6794,14 @@ NS.relative CF$UID - 453 + 508 $class CF$UID - 151 - - NS.string - file://localhost/Users/mattt/Code/Objective-C/AFNetworking/Example/main.m - - - $class - - CF$UID - 99 - - NS.base - - CF$UID - 0 - - NS.relative - - CF$UID - 455 - - - - $class - - CF$UID - 151 - - NS.string - file://localhost/Users/mattt/Code/Objective-C/AFNetworking/QHTTPOperation/QHTTPOperation.m - - - $class - - CF$UID - 99 - - NS.base - - CF$UID - 0 - - NS.relative - - CF$UID - 457 - - - - $class - - CF$UID - 151 - - NS.string - file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFNetworkingExample/AFNetworkingExample/Vendor/TTT/TTTArrayFormatter.h - - - $class - - CF$UID - 99 - - NS.base - - CF$UID - 0 - - NS.relative - - CF$UID - 459 - - - - $class - - CF$UID - 151 - - NS.string - file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFNetworkingExample/AFNetworkingExample/AFNetworkingExample-Prefix.pch - - - $class - - CF$UID - 99 - - NS.base - - CF$UID - 0 - - NS.relative - - CF$UID - 461 - - - - $class - - CF$UID - 151 - - NS.string - file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFNetworkingExample/AFNetworkingExample/AppDelegate.m - - - $class - - CF$UID - 99 - - NS.base - - CF$UID - 0 - - NS.relative - - CF$UID - 463 - - - - $class - - CF$UID - 151 - - NS.string - file://localhost/Users/mattt/Code/Objective-C/AFNetworking/Example/AppDelegate.m - - - $class - - CF$UID - 99 - - NS.base - - CF$UID - 0 - - NS.relative - - CF$UID - 465 - - - - $class - - CF$UID - 151 - - NS.string - file://localhost/Users/mattt/Code/Objective-C/AFNetworking/Example/Classes/AFImageRequest.m - - - $class - - CF$UID - 99 - - NS.base - - CF$UID - 0 - - NS.relative - - CF$UID - 467 - - - - $class - - CF$UID - 151 - - NS.string - file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFImageRequest.m - - - $class - - CF$UID - 99 - - NS.base - - CF$UID - 0 - - NS.relative - - CF$UID - 469 - - - - $class - - CF$UID - 151 - - NS.string - file://localhost/Users/mattt/Code/Objective-C/AFNetworking/QHTTPOperation/QHTTPOperation.h - - - $class - - CF$UID - 99 - - NS.base - - CF$UID - 0 - - NS.relative - - CF$UID - 471 - - - - $class - - CF$UID - 151 - - NS.string - file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFNetworkingExample/Classes/AFImageRequest.m - - - $class - - CF$UID - 99 - - NS.base - - CF$UID - 0 - - NS.relative - - CF$UID - 473 - - - - $class - - CF$UID - 151 - - NS.string - file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFNetworkingExample/AFImageRequest.m - - - $class - - CF$UID - 99 - - NS.base - - CF$UID - 0 - - NS.relative - - CF$UID - 475 - - - - $class - - CF$UID - 151 - - NS.string - file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFNetworkingExample/AFNetworkingExample/AFNetworkingExampleAppDelegate.h - - - $class - - CF$UID - 99 - - NS.base - - CF$UID - 0 - - NS.relative - - CF$UID - 477 - - - - $class - - CF$UID - 151 - - NS.string - file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFNetworkingExample/AFNetworkingExample/Classes/Controllers/NearbySpotsViewController.m - - - $class - - CF$UID - 99 - - NS.base - - CF$UID - 0 - - NS.relative - - CF$UID - 479 - - - - $class - - CF$UID - 151 - - NS.string - file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFNetworkingExample/Classes/Controllers/NearbySpotsViewController.m - - - $class - - CF$UID - 99 - - NS.base - - CF$UID - 0 - - NS.relative - - CF$UID - 481 - - - - $class - - CF$UID - 151 - - NS.string - file://localhost/Users/mattt/Code/Objective-C/AFNetworking/QHTTPOperation/QRunLoopOperation.h - - - $class - - CF$UID - 99 - - NS.base - - CF$UID - 0 - - NS.relative - - CF$UID - 483 - - - - $class - - CF$UID - 151 - - NS.string - file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFNetworkingExample/AFImageRequest.h - - - $class - - CF$UID - 99 - - NS.base - - CF$UID - 0 - - NS.relative - - CF$UID - 485 - - - - $class - - CF$UID - 151 - - NS.string - file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFImageRequest.h - - - $class - - CF$UID - 99 - - NS.base - - CF$UID - 0 - - NS.relative - - CF$UID - 487 - - - - $class - - CF$UID - 151 - - NS.string - file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFNetworkingExample/Classes/AFImageRequest.h - - - $class - - CF$UID - 99 - - NS.base - - CF$UID - 0 - - NS.relative - - CF$UID - 489 - - - - $class - - CF$UID - 151 - - NS.string - file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFNetworkingExample/AFNetworkingExample/AppDelegate.h - - - $class - - CF$UID - 99 - - NS.base - - CF$UID - 0 - - NS.relative - - CF$UID - 491 - - - - $class - - CF$UID - 151 - - NS.string - file://localhost/Users/mattt/Code/Objective-C/AFNetworking/Example/AppDelegate.h - - - $class - - CF$UID - 99 - - NS.base - - CF$UID - 0 - - NS.relative - - CF$UID - 493 - - - - $class - - CF$UID - 151 - - NS.string - file://localhost/Users/mattt/Code/Objective-C/AFNetworking/Example/Classes/AFGowallaAPIClient.m - - - $class - - CF$UID - 99 - - NS.base - - CF$UID - 0 - - NS.relative - - CF$UID - 495 - - - - $class - - CF$UID - 151 - - NS.string - file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFNetworkingExample/AFURLCache.m - - - $class - - CF$UID - 99 - - NS.base - - CF$UID - 0 - - NS.relative - - CF$UID - 497 - - - - $class - - CF$UID - 151 - - NS.string - file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFURLCache.m - - - $class - - CF$UID - 99 - - NS.base - - CF$UID - 0 - - NS.relative - - CF$UID - 499 - - - - $class - - CF$UID - 151 - - NS.string - file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFNetworkingExample/AFNetworkingExample/Classes/Models/Spot.m - - - $class - - CF$UID - 99 - - NS.base - - CF$UID - 0 - - NS.relative - - CF$UID - 501 - - - - $class - - CF$UID - 151 - - NS.string - file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFNetworkingExample/Classes/Models/Spot.m - - - $class - - CF$UID - 99 - - NS.base - - CF$UID - 0 - - NS.relative - - CF$UID - 503 - - - - $class - - CF$UID - 151 - - NS.string - file://localhost/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSThread.h - - - $class - - CF$UID - 99 - - NS.base - - CF$UID - 0 - - NS.relative - - CF$UID - 505 - - - - $class - - CF$UID - 151 - - NS.string - file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFNetworkingExample/AFGowallaAPI.m - - - $class - - CF$UID - 99 - - NS.base - - CF$UID - 0 - - NS.relative - - CF$UID - 507 - - - - $class - - CF$UID - 151 - - NS.string - file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFGowallaAPI.m - - - $class - - CF$UID - 99 - - NS.base - - CF$UID - 0 - - NS.relative - - CF$UID - 509 - - - - $class - - CF$UID - 151 - - NS.string - file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFNetworkingExample/AFNetworkingExample/Classes/Controllers/SpotsViewController.m - - - $class - - CF$UID - 99 - - NS.base - - CF$UID - 0 - - NS.relative - - CF$UID - 511 - - - - $class - - CF$UID - 151 - - NS.string - file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFNetworkingExample/Classes/AFGowallaAPI.m - - - $class - - CF$UID - 99 - - NS.base - - CF$UID - 0 - - NS.relative - - CF$UID - 513 - - - - $class - - CF$UID - 151 - - NS.string - file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFNetworkingExample/AFNetworkingExample/Classes/Controllers/SpotsViewController.h - - - $class - - CF$UID - 99 - - NS.base - - CF$UID - 0 - - NS.relative - - CF$UID - 515 - - - - $class - - CF$UID - 151 - - NS.string - file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFNetworkingExample/AFCallback.m - - - $class - - CF$UID - 99 - - NS.base - - CF$UID - 0 - - NS.relative - - CF$UID - 517 - - - - $class - - CF$UID - 151 - - NS.string - file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFCallback.m - - - $class - - CF$UID - 99 - - NS.base - - CF$UID - 0 - - NS.relative - - CF$UID - 519 - - - - $class - - CF$UID - 151 - - NS.string - file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFNetworkingExample/AFNetworkingExample/en.lproj/InfoPlist.strings - - - $class - - CF$UID - 99 - - NS.base - - CF$UID - 0 - - NS.relative - - CF$UID - 521 - - - - $class - - CF$UID - 151 - - NS.string - file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFNetworking/AFURLCache.m - - - $class - - CF$UID - 99 - - NS.base - - CF$UID - 0 - - NS.relative - - CF$UID - 523 - - - - $class - - CF$UID - 151 - - NS.string - file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFNetworkingExample/AFNetworkingExample/Classes/Controllers/RootViewController.h - - - $class - - CF$UID - 99 - - NS.base - - CF$UID - 0 - - NS.relative - - CF$UID - 525 - - - - $class - - CF$UID - 151 - - NS.string - file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFNetworkingExample/AFNetworkingExample/Classes/RootViewController.h - - - $class - - CF$UID - 99 - - NS.base - - CF$UID - 0 - - NS.relative - - CF$UID - 527 - - - - $class - - CF$UID - 151 - - NS.string - file://localhost/Users/mattt/Code/Objective-C/AFNetworking/QHTTPOperation/QReachabilityOperation.h - - - $class - - CF$UID - 99 - - NS.base - - CF$UID - 0 - - NS.relative - - CF$UID - 529 - - - - $class - - CF$UID - 151 - - NS.string - file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFNetworkingExample/AFNetworkingExample/AFNetworkingExampleAppDelegate.m - - - $class - - CF$UID - 99 - - NS.base - - CF$UID - 0 - - NS.relative - - CF$UID - 531 - - - - $class - - CF$UID - 151 - - NS.string - file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFNetworkingExample/AFImageRequestOperation.h - - - $class - - CF$UID - 99 - - NS.base - - CF$UID - 0 - - NS.relative - - CF$UID - 533 - - - - $class - - CF$UID - 151 - - NS.string - file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFImageRequestOperation.h - - - $class - - CF$UID - 99 - - NS.base - - CF$UID - 0 - - NS.relative - - CF$UID - 535 - - - - $class - - CF$UID - 151 - - NS.string - file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFNetworkingExample/AFURLCache.h - - - $class - - CF$UID - 99 - - NS.base - - CF$UID - 0 - - NS.relative - - CF$UID - 537 - - - - $class - - CF$UID - 151 - - NS.string - file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFURLCache.h - - - $class - - CF$UID - 99 - - NS.base - - CF$UID - 0 - - NS.relative - - CF$UID - 539 - - - - $class - - CF$UID - 151 - - NS.string - file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFNetworkingExample/AFHTTPOperation.h - - - $class - - CF$UID - 99 - - NS.base - - CF$UID - 0 - - NS.relative - - CF$UID - 541 - - - - $class - - CF$UID - 151 + 105 NS.string file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFNetworkingExample/AFHTTPOperation.m @@ -7256,7 +6810,7 @@ $class CF$UID - 99 + 119 NS.base @@ -7266,14 +6820,14 @@ NS.relative CF$UID - 543 + 510 $class CF$UID - 151 + 105 NS.string file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFHTTPOperation.m @@ -7282,7 +6836,7 @@ $class CF$UID - 99 + 119 NS.base @@ -7292,23 +6846,23 @@ NS.relative CF$UID - 545 + 512 $class CF$UID - 151 + 105 NS.string - file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFHTTPOperation.h + file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFNetworking/AFHTTPOperation.m $class CF$UID - 99 + 119 NS.base @@ -7318,23 +6872,23 @@ NS.relative CF$UID - 547 + 514 $class CF$UID - 151 + 105 NS.string - file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFNetworkingExample/AFNetworkingExample/Classes/Views/SpotTableViewCell.m + file://localhost/Users/mattt/Code/Objective-C/AFNetworking/Example/AFImageCache.h $class CF$UID - 99 + 119 NS.base @@ -7344,820 +6898,14 @@ NS.relative CF$UID - 549 + 516 $class CF$UID - 151 - - NS.string - file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFNetworkingExample/Classes/Views/SpotTableViewCell.m - - - $class - - CF$UID - 99 - - NS.base - - CF$UID - 0 - - NS.relative - - CF$UID - 551 - - - - $class - - CF$UID - 151 - - NS.string - file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFNetworkingExample/UIImage+AFNetworking.m - - - $class - - CF$UID - 99 - - NS.base - - CF$UID - 0 - - NS.relative - - CF$UID - 553 - - - - $class - - CF$UID - 151 - - NS.string - file://localhost/Users/mattt/Code/Objective-C/AFNetworking/UIImage+AFNetworking.m - - - $class - - CF$UID - 99 - - NS.base - - CF$UID - 0 - - NS.relative - - CF$UID - 555 - - - - $class - - CF$UID - 151 - - NS.string - file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFNetworkingExample/UIImage+AFNetworking.h - - - $class - - CF$UID - 99 - - NS.base - - CF$UID - 0 - - NS.relative - - CF$UID - 557 - - - - $class - - CF$UID - 151 - - NS.string - file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFNetworkingExample/Classes/AFGowallaAPI.h - - - $class - - CF$UID - 99 - - NS.base - - CF$UID - 0 - - NS.relative - - CF$UID - 559 - - - - $class - - CF$UID - 151 - - NS.string - file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFNetworkingExample/AFGowallaAPI.h - - - $class - - CF$UID - 99 - - NS.base - - CF$UID - 0 - - NS.relative - - CF$UID - 561 - - - - $class - - CF$UID - 151 - - NS.string - file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFNetworkingExample/AFCallback.h - - - $class - - CF$UID - 99 - - NS.base - - CF$UID - 0 - - NS.relative - - CF$UID - 563 - - - - $class - - CF$UID - 151 - - NS.string - file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFCallback.h - - - $class - - CF$UID - 99 - - NS.base - - CF$UID - 0 - - NS.relative - - CF$UID - 565 - - - - $class - - CF$UID - 151 - - NS.string - file://localhost/Users/mattt/Code/Objective-C/AFNetworking/UIImage+AFNetworking.h - - - $class - - CF$UID - 99 - - NS.base - - CF$UID - 0 - - NS.relative - - CF$UID - 567 - - - - $class - - CF$UID - 151 - - NS.string - file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFGowallaAPI.h - - - $class - - CF$UID - 99 - - NS.base - - CF$UID - 0 - - NS.relative - - CF$UID - 569 - - - - $class - - CF$UID - 151 - - NS.string - file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFRestClient.m - - - $class - - CF$UID - 99 - - NS.base - - CF$UID - 0 - - NS.relative - - CF$UID - 571 - - - - $class - - CF$UID - 151 - - NS.string - file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFRestClient.h - - - $class - - CF$UID - 99 - - NS.base - - CF$UID - 0 - - NS.relative - - CF$UID - 573 - - - - $class - - CF$UID - 151 - - NS.string - file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFNetworking/AFRestClient.h - - - $class - - CF$UID - 99 - - NS.base - - CF$UID - 0 - - NS.relative - - CF$UID - 575 - - - - $class - - CF$UID - 151 - - NS.string - file://localhost/Users/mattt/Code/Objective-C/AFNetworking/Example/Classes/Views/SpotTableViewCell.m - - - $class - - CF$UID - 99 - - NS.base - - CF$UID - 0 - - NS.relative - - CF$UID - 577 - - - - $class - - CF$UID - 151 - - NS.string - file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFNetworking/UIImage+AFNetworking.m - - - $class - - CF$UID - 99 - - NS.base - - CF$UID - 0 - - NS.relative - - CF$UID - 579 - - - - $class - - CF$UID - 151 - - NS.string - file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFNetworking/AFURLCache.h - - - $class - - CF$UID - 99 - - NS.base - - CF$UID - 0 - - NS.relative - - CF$UID - 581 - - - - $class - - CF$UID - 151 - - NS.string - file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFNetworking/AFRestClient.m - - - $class - - CF$UID - 99 - - NS.base - - CF$UID - 0 - - NS.relative - - CF$UID - 583 - - - - $class - - CF$UID - 151 - - NS.string - file://localhost/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSPathUtilities.h - - - $class - - CF$UID - 99 - - NS.base - - CF$UID - 0 - - NS.relative - - CF$UID - 585 - - - - $class - - CF$UID - 151 - - NS.string - file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFNetworkingExample/AFNetworkingExample/Classes/Views/SpotTableViewCell.h - - - $class - - CF$UID - 99 - - NS.base - - CF$UID - 0 - - NS.relative - - CF$UID - 587 - - - - $class - - CF$UID - 151 - - NS.string - file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFNetworkingExample/AFNetworkingExample/Classes/Models/Spot.h - - - $class - - CF$UID - 99 - - NS.base - - CF$UID - 0 - - NS.relative - - CF$UID - 589 - - - - $class - - CF$UID - 151 - - NS.string - file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFNetworkingExample/Classes/Models/Spot.h - - - $class - - CF$UID - 99 - - NS.base - - CF$UID - 0 - - NS.relative - - CF$UID - 591 - - - - $class - - CF$UID - 151 - - NS.string - file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFNetworkingExample/AFNetworkingExample/Classes/Controllers/NearbySpotsViewController.h - - - $class - - CF$UID - 99 - - NS.base - - CF$UID - 0 - - NS.relative - - CF$UID - 593 - - - - $class - - CF$UID - 151 - - NS.string - file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFNetworkingExample/AFNetworkingExample/Vendor/TTT/TTTArrayFormatter.m - - - $class - - CF$UID - 99 - - NS.base - - CF$UID - 0 - - NS.relative - - CF$UID - 595 - - - - $class - - CF$UID - 151 - - NS.string - file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFNetworkingExample/Classes/AFGowallaAPIClient.h - - - $class - - CF$UID - 99 - - NS.base - - CF$UID - 0 - - NS.relative - - CF$UID - 597 - - - - $class - - CF$UID - 151 - - NS.string - file://localhost/Users/mattt/Code/Objective-C/AFNetworking/Example/Classes/AFGowallaAPIClient.h - - - $class - - CF$UID - 99 - - NS.base - - CF$UID - 0 - - NS.relative - - CF$UID - 599 - - - - $class - - CF$UID - 151 - - NS.string - file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFNetworkingExample/AFNetworkingExample/Prefix.pch - - - $class - - CF$UID - 99 - - NS.base - - CF$UID - 0 - - NS.relative - - CF$UID - 601 - - - - $class - - CF$UID - 151 - - NS.string - file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFNetworking/AFImageRequestOperation.m - - - $class - - CF$UID - 99 - - NS.base - - CF$UID - 0 - - NS.relative - - CF$UID - 603 - - - - $class - - CF$UID - 151 - - NS.string - file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFNetworkingExample/AFImageRequestOperation.m - - - $class - - CF$UID - 99 - - NS.base - - CF$UID - 0 - - NS.relative - - CF$UID - 605 - - - - $class - - CF$UID - 151 - - NS.string - file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFImageRequestOperation.m - - - $class - - CF$UID - 99 - - NS.base - - CF$UID - 0 - - NS.relative - - CF$UID - 607 - - - - $class - - CF$UID - 151 - - NS.string - file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFNetworkingExample/AFNetworkingExample/main.m - - - $class - - CF$UID - 99 - - NS.base - - CF$UID - 0 - - NS.relative - - CF$UID - 609 - - - - $class - - CF$UID - 151 - - NS.string - file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFNetworkingExample/main.m - - - $class - - CF$UID - 99 - - NS.base - - CF$UID - 0 - - NS.relative - - CF$UID - 611 - - - - $class - - CF$UID - 151 + 105 NS.string file://localhost/Users/mattt/Code/Objective-C/AFNetworking/QHTTPOperation/QRunLoopOperation.m @@ -8166,7 +6914,7 @@ $class CF$UID - 99 + 119 NS.base @@ -8176,14 +6924,560 @@ NS.relative CF$UID - 613 + 518 $class CF$UID - 151 + 105 + + NS.string + file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFNetworkingExample/AFNetworkingExample/Classes/Models/Spot.h + + + $class + + CF$UID + 119 + + NS.base + + CF$UID + 0 + + NS.relative + + CF$UID + 520 + + + + $class + + CF$UID + 105 + + NS.string + file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFNetworkingExample/Classes/Models/Spot.h + + + $class + + CF$UID + 119 + + NS.base + + CF$UID + 0 + + NS.relative + + CF$UID + 522 + + + + $class + + CF$UID + 105 + + NS.string + file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFNetworkingExample/AFNetworkingExample/Classes/Controllers/NearbySpotsViewController.h + + + $class + + CF$UID + 119 + + NS.base + + CF$UID + 0 + + NS.relative + + CF$UID + 524 + + + + $class + + CF$UID + 105 + + NS.string + file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFNetworkingExample/AFNetworkingExample/AppDelegate.m + + + $class + + CF$UID + 119 + + NS.base + + CF$UID + 0 + + NS.relative + + CF$UID + 526 + + + + $class + + CF$UID + 105 + + NS.string + file://localhost/Users/mattt/Code/Objective-C/AFNetworking/Example/AppDelegate.m + + + $class + + CF$UID + 119 + + NS.base + + CF$UID + 0 + + NS.relative + + CF$UID + 528 + + + + $class + + CF$UID + 105 + + NS.string + file://localhost/Users/mattt/Code/Objective-C/AFNetworking/Example/Classes/AFGowallaAPIClient.m + + + $class + + CF$UID + 119 + + NS.base + + CF$UID + 0 + + NS.relative + + CF$UID + 530 + + + + $class + + CF$UID + 105 + + NS.string + file://localhost/Users/mattt/Code/Objective-C/AFNetworking/Example/AFNetworkActivityIndicatorManager.h + + + $class + + CF$UID + 119 + + NS.base + + CF$UID + 0 + + NS.relative + + CF$UID + 532 + + + + $class + + CF$UID + 105 + + NS.string + file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFNetworkingExample/AFNetworkingExample/Vendor/TTT/TTTArrayFormatter.h + + + $class + + CF$UID + 119 + + NS.base + + CF$UID + 0 + + NS.relative + + CF$UID + 534 + + + + $class + + CF$UID + 105 + + NS.string + file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFNetworkingExample/AFCallback.h + + + $class + + CF$UID + 119 + + NS.base + + CF$UID + 0 + + NS.relative + + CF$UID + 536 + + + + $class + + CF$UID + 105 + + NS.string + file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFCallback.h + + + $class + + CF$UID + 119 + + NS.base + + CF$UID + 0 + + NS.relative + + CF$UID + 538 + + + + $class + + CF$UID + 105 + + NS.string + file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFNetworking/AFCallback.h + + + $class + + CF$UID + 119 + + NS.base + + CF$UID + 0 + + NS.relative + + CF$UID + 540 + + + + $class + + CF$UID + 105 + + NS.string + file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFNetworking/QHTTPOperation/QHTTPOperation.m + + + $class + + CF$UID + 119 + + NS.base + + CF$UID + 0 + + NS.relative + + CF$UID + 542 + + + + $class + + CF$UID + 105 + + NS.string + file://localhost/Users/mattt/Code/Objective-C/AFNetworking/QHTTPOperation/QHTTPOperation.m + + + $class + + CF$UID + 119 + + NS.base + + CF$UID + 0 + + NS.relative + + CF$UID + 544 + + + + $class + + CF$UID + 105 + + NS.string + file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFNetworkingExample/AFNetworkingExample/AFNetworkingExampleAppDelegate.h + + + $class + + CF$UID + 119 + + NS.base + + CF$UID + 0 + + NS.relative + + CF$UID + 546 + + + + $class + + CF$UID + 105 + + NS.string + file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFNetworkingExample/AFCallback.m + + + $class + + CF$UID + 119 + + NS.base + + CF$UID + 0 + + NS.relative + + CF$UID + 548 + + + + $class + + CF$UID + 105 + + NS.string + file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFCallback.m + + + $class + + CF$UID + 119 + + NS.base + + CF$UID + 0 + + NS.relative + + CF$UID + 550 + + + + $class + + CF$UID + 105 + + NS.string + file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFNetworking/AFCallback.m + + + $class + + CF$UID + 119 + + NS.base + + CF$UID + 0 + + NS.relative + + CF$UID + 552 + + + + $class + + CF$UID + 105 + + NS.string + file://localhost/Users/mattt/Code/Objective-C/AFNetworking/Example/AFImageCache.m + + + $class + + CF$UID + 119 + + NS.base + + CF$UID + 0 + + NS.relative + + CF$UID + 554 + + + + $class + + CF$UID + 105 + + NS.string + file://localhost/Users/mattt/Code/Objective-C/AFNetworking/Example/UIImageView+AFNetworking.m + + + $class + + CF$UID + 119 + + NS.base + + CF$UID + 0 + + NS.relative + + CF$UID + 556 + + + + $class + + CF$UID + 105 + + NS.string + file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFNetworkingExample/AFNetworkingExample/en.lproj/InfoPlist.strings + + + $class + + CF$UID + 119 + + NS.base + + CF$UID + 0 + + NS.relative + + CF$UID + 558 + + + + $class + + CF$UID + 105 + + NS.string + file://localhost/Users/mattt/Code/Objective-C/AFNetworking/Example/AFNetworkActivityIndicatorManager.m + + + $class + + CF$UID + 119 + + NS.base + + CF$UID + 0 + + NS.relative + + CF$UID + 560 + + + + $class + + CF$UID + 105 NS.string file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFNetworkingExample/AFNetworkingExample/Vendor/TTT/TTTLocationFormatter.h @@ -8192,161 +7486,2142 @@ $class CF$UID - 43 + 119 + + NS.base + + CF$UID + 0 + + NS.relative + + CF$UID + 562 - NS.keys - - - CF$UID - 153 - - - CF$UID - 154 - - - CF$UID - 155 - - - CF$UID - 156 - - - NS.objects - - - CF$UID - 615 - - - CF$UID - 616 - - - CF$UID - 159 - - - CF$UID - 160 - - - 328641535.94684303 - {0, 1391} $class CF$UID - 43 + 105 - NS.keys - - - CF$UID - 153 - - - CF$UID - 154 - - - CF$UID - 155 - - - CF$UID - 156 - - - NS.objects - - - CF$UID - 618 - - - CF$UID - 619 - - - CF$UID - 159 - - - CF$UID - 620 - - + NS.string + file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFNetworkingExample/AFImageRequestOperation.h - 328634329.19562602 - {5924, 1875} - {3623, 31} $class CF$UID - 43 + 119 + + NS.base + + CF$UID + 0 + + NS.relative + + CF$UID + 564 - NS.keys - - - CF$UID - 153 - - - CF$UID - 154 - - - CF$UID - 155 - - - CF$UID - 156 - - - NS.objects - - - CF$UID - 622 - - - CF$UID - 623 - - - CF$UID - 159 - - - CF$UID - 624 - - - 328564633.34488499 - {0, 2360} - {539, 0} $class CF$UID - 43 + 105 + + NS.string + file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFImageRequestOperation.h + + + $class + + CF$UID + 119 + + NS.base + + CF$UID + 0 + + NS.relative + + CF$UID + 566 + + + + $class + + CF$UID + 105 + + NS.string + file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFNetworking/AFImageRequestOperation.h + + + $class + + CF$UID + 119 + + NS.base + + CF$UID + 0 + + NS.relative + + CF$UID + 568 + + + + $class + + CF$UID + 105 + + NS.string + file://localhost/Users/mattt/Code/Objective-C/AFNetworking/Example/AFImageRequestOperation.h + + + $class + + CF$UID + 119 + + NS.base + + CF$UID + 0 + + NS.relative + + CF$UID + 570 + + + + $class + + CF$UID + 105 + + NS.string + file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFNetworkingExample/AFNetworkingExample/Classes/Controllers/SpotsViewController.m + + + $class + + CF$UID + 119 + + NS.base + + CF$UID + 0 + + NS.relative + + CF$UID + 572 + + + + $class + + CF$UID + 105 + + NS.string + file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFNetworkingExample/Classes/AFGowallaAPIClient.h + + + $class + + CF$UID + 119 + + NS.base + + CF$UID + 0 + + NS.relative + + CF$UID + 574 + + + + $class + + CF$UID + 105 + + NS.string + file://localhost/Users/mattt/Code/Objective-C/AFNetworking/Example/Classes/AFGowallaAPIClient.h + + + $class + + CF$UID + 119 + + NS.base + + CF$UID + 0 + + NS.relative + + CF$UID + 576 + + + + $class + + CF$UID + 105 + + NS.string + file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFNetworkingExample/UIImage+AFNetworking.h + + + $class + + CF$UID + 119 + + NS.base + + CF$UID + 0 + + NS.relative + + CF$UID + 578 + + + + $class + + CF$UID + 105 + + NS.string + file://localhost/Users/mattt/Code/Objective-C/AFNetworking/UIImage+AFNetworking.h + + + $class + + CF$UID + 119 + + NS.base + + CF$UID + 0 + + NS.relative + + CF$UID + 580 + + + + $class + + CF$UID + 105 + + NS.string + file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFRestClient.h + + + $class + + CF$UID + 119 + + NS.base + + CF$UID + 0 + + NS.relative + + CF$UID + 582 + + + + $class + + CF$UID + 105 + + NS.string + file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFNetworkingExample/AFHTTPOperation.h + + + $class + + CF$UID + 119 + + NS.base + + CF$UID + 0 + + NS.relative + + CF$UID + 584 + + + + $class + + CF$UID + 105 + + NS.string + file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFHTTPOperation.h + + + $class + + CF$UID + 119 + + NS.base + + CF$UID + 0 + + NS.relative + + CF$UID + 586 + + + + $class + + CF$UID + 105 + + NS.string + file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFNetworking/AFRestClient.h + + + $class + + CF$UID + 119 + + NS.base + + CF$UID + 0 + + NS.relative + + CF$UID + 588 + + + + $class + + CF$UID + 105 + + NS.string + file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFNetworking/AFHTTPOperation.h + + + $class + + CF$UID + 119 + + NS.base + + CF$UID + 0 + + NS.relative + + CF$UID + 590 + + + + $class + + CF$UID + 105 + + NS.string + file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFNetworkingExample/AFURLCache.m + + + $class + + CF$UID + 119 + + NS.base + + CF$UID + 0 + + NS.relative + + CF$UID + 592 + + + + $class + + CF$UID + 105 + + NS.string + file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFURLCache.m + + + $class + + CF$UID + 119 + + NS.base + + CF$UID + 0 + + NS.relative + + CF$UID + 594 + + + + $class + + CF$UID + 105 + + NS.string + file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFNetworking/AFURLCache.m + + + $class + + CF$UID + 119 + + NS.base + + CF$UID + 0 + + NS.relative + + CF$UID + 596 + + + + $class + + CF$UID + 105 + + NS.string + file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFNetworkingExample/AFGowallaAPI.m + + + $class + + CF$UID + 119 + + NS.base + + CF$UID + 0 + + NS.relative + + CF$UID + 598 + + + + $class + + CF$UID + 105 + + NS.string + file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFGowallaAPI.m + + + $class + + CF$UID + 119 + + NS.base + + CF$UID + 0 + + NS.relative + + CF$UID + 600 + + + + $class + + CF$UID + 105 + + NS.string + file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFNetworkingExample/AFImageRequest.m + + + $class + + CF$UID + 119 + + NS.base + + CF$UID + 0 + + NS.relative + + CF$UID + 602 + + + + $class + + CF$UID + 105 + + NS.string + file://localhost/Users/mattt/Code/Objective-C/AFNetworking/Example/Classes/AFImageRequest.m + + + $class + + CF$UID + 119 + + NS.base + + CF$UID + 0 + + NS.relative + + CF$UID + 604 + + + + $class + + CF$UID + 105 + + NS.string + file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFImageRequest.m + + + $class + + CF$UID + 119 + + NS.base + + CF$UID + 0 + + NS.relative + + CF$UID + 606 + + + + $class + + CF$UID + 105 + + NS.string + file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFNetworkingExample/Classes/AFImageRequest.m + + + $class + + CF$UID + 119 + + NS.base + + CF$UID + 0 + + NS.relative + + CF$UID + 608 + + + + $class + + CF$UID + 105 + + NS.string + file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFNetworkingExample/Classes/AFGowallaAPI.m + + + $class + + CF$UID + 119 + + NS.base + + CF$UID + 0 + + NS.relative + + CF$UID + 610 + + + + $class + + CF$UID + 105 + + NS.string + file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFNetworkingExample/AFNetworkingExample/AFNetworkingExample-Prefix.pch + + + $class + + CF$UID + 119 + + NS.base + + CF$UID + 0 + + NS.relative + + CF$UID + 612 + + + + $class + + CF$UID + 105 + + NS.string + file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFNetworkingExample/AFNetworkingExample/Classes/Controllers/RootViewController.h + + + $class + + CF$UID + 119 + + NS.base + + CF$UID + 0 + + NS.relative + + CF$UID + 614 + + + + $class + + CF$UID + 105 + + NS.string + file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFNetworkingExample/AFNetworkingExample/Classes/RootViewController.h + + + $class + + CF$UID + 119 + + NS.base + + CF$UID + 0 + + NS.relative + + CF$UID + 616 + + + + $class + + CF$UID + 105 + + NS.string + file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFNetworkingExample/AFNetworkingExample/AFNetworkingExampleAppDelegate.m + + + $class + + CF$UID + 119 + + NS.base + + CF$UID + 0 + + NS.relative + + CF$UID + 618 + + + + $class + + CF$UID + 105 + + NS.string + file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFNetworkingExample/Classes/AFGowallaAPI.h + + + $class + + CF$UID + 119 + + NS.base + + CF$UID + 0 + + NS.relative + + CF$UID + 620 + + + + $class + + CF$UID + 105 + + NS.string + file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFNetworkingExample/AFGowallaAPI.h + + + $class + + CF$UID + 119 + + NS.base + + CF$UID + 0 + + NS.relative + + CF$UID + 622 + + + + $class + + CF$UID + 105 + + NS.string + file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFGowallaAPI.h + + + $class + + CF$UID + 119 + + NS.base + + CF$UID + 0 + + NS.relative + + CF$UID + 624 + + + + $class + + CF$UID + 105 + + NS.string + file://localhost/Users/mattt/Code/Objective-C/AFNetworking/Example/AFRestClient.h + + + $class + + CF$UID + 119 + + NS.base + + CF$UID + 0 + + NS.relative + + CF$UID + 626 + + + + $class + + CF$UID + 105 + + NS.string + file://localhost/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSPathUtilities.h + + + $class + + CF$UID + 119 + + NS.base + + CF$UID + 0 + + NS.relative + + CF$UID + 628 + + + + $class + + CF$UID + 105 + + NS.string + file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFRestClient.m + + + $class + + CF$UID + 119 + + NS.base + + CF$UID + 0 + + NS.relative + + CF$UID + 630 + + + + $class + + CF$UID + 105 + + NS.string + file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFNetworking/AFRestClient.m + + + $class + + CF$UID + 119 + + NS.base + + CF$UID + 0 + + NS.relative + + CF$UID + 632 + + + + $class + + CF$UID + 105 + + NS.string + file://localhost/Users/mattt/Code/Objective-C/AFNetworking/Example/AFRestClient.m + + + $class + + CF$UID + 119 + + NS.base + + CF$UID + 0 + + NS.relative + + CF$UID + 634 + + + + $class + + CF$UID + 105 + + NS.string + file://localhost/Users/mattt/Code/Objective-C/AFNetworking/Example/UIImage+AFNetworking.h + + + $class + + CF$UID + 119 + + NS.base + + CF$UID + 0 + + NS.relative + + CF$UID + 636 + + + + $class + + CF$UID + 105 + + NS.string + file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFNetworkingExample/AFNetworkingExample/Prefix.pch + + + $class + + CF$UID + 119 + + NS.base + + CF$UID + 0 + + NS.relative + + CF$UID + 638 + + + + $class + + CF$UID + 105 + + NS.string + file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFNetworkingExample/AFNetworkingExample/main.m + + + $class + + CF$UID + 119 + + NS.base + + CF$UID + 0 + + NS.relative + + CF$UID + 640 + + + + $class + + CF$UID + 105 + + NS.string + file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFNetworkingExample/main.m + + + $class + + CF$UID + 119 + + NS.base + + CF$UID + 0 + + NS.relative + + CF$UID + 642 + + + + $class + + CF$UID + 105 + + NS.string + file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFImageRequestOperation.m + + + $class + + CF$UID + 119 + + NS.base + + CF$UID + 0 + + NS.relative + + CF$UID + 644 + + + + $class + + CF$UID + 105 + + NS.string + file://localhost/Users/mattt/Code/Objective-C/AFNetworking/Example/AFImageRequestOperation.m + + + $class + + CF$UID + 119 + + NS.base + + CF$UID + 0 + + NS.relative + + CF$UID + 646 + + + + $class + + CF$UID + 105 + + NS.string + file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFNetworkingExample/AFNetworkingExample/Classes/Views/SpotTableViewCell.h + + + $class + + CF$UID + 119 + + NS.base + + CF$UID + 0 + + NS.relative + + CF$UID + 648 + + + + $class + + CF$UID + 105 + + NS.string + file://localhost/Users/mattt/Code/Objective-C/AFNetworking/Example/Classes/Views/SpotTableViewCell.h + + + $class + + CF$UID + 119 + + NS.base + + CF$UID + 0 + + NS.relative + + CF$UID + 650 + + + + $class + + CF$UID + 105 + + NS.string + file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFNetworking/AFImageRequestOperation.m + + + $class + + CF$UID + 119 + + NS.base + + CF$UID + 0 + + NS.relative + + CF$UID + 652 + + + + $class + + CF$UID + 105 + + NS.string + file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFNetworkingExample/AFImageRequestOperation.m + + + $class + + CF$UID + 119 + + NS.base + + CF$UID + 0 + + NS.relative + + CF$UID + 654 + + + + $class + + CF$UID + 105 + + NS.string + file://localhost/Users/mattt/Code/Objective-C/AFNetworking/Example/main.m + + + $class + + CF$UID + 119 + + NS.base + + CF$UID + 0 + + NS.relative + + CF$UID + 656 + + + + $class + + CF$UID + 105 + + NS.string + file://localhost/Users/mattt/Code/Objective-C/AFNetworking/Example/AFJSONRequestOperation.m + + + $class + + CF$UID + 119 + + NS.base + + CF$UID + 0 + + NS.relative + + CF$UID + 658 + + + + $class + + CF$UID + 105 + + NS.string + file://localhost/Users/mattt/Code/Objective-C/AFNetworking/QHTTPOperation/QReachabilityOperation.h + + + $class + + CF$UID + 119 + + NS.base + + CF$UID + 0 + + NS.relative + + CF$UID + 660 + + + + $class + + CF$UID + 105 + + NS.string + file://localhost/Users/mattt/Code/Objective-C/AFNetworking/QHTTPOperation/QRunLoopOperation.h + + + $class + + CF$UID + 119 + + NS.base + + CF$UID + 0 + + NS.relative + + CF$UID + 662 + + + + $class + + CF$UID + 105 + + NS.string + file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFNetworkingExample/AFURLCache.h + + + $class + + CF$UID + 119 + + NS.base + + CF$UID + 0 + + NS.relative + + CF$UID + 664 + + + + $class + + CF$UID + 105 + + NS.string + file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFURLCache.h + + + $class + + CF$UID + 119 + + NS.base + + CF$UID + 0 + + NS.relative + + CF$UID + 666 + + + + $class + + CF$UID + 105 + + NS.string + file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFNetworking/AFURLCache.h + + + $class + + CF$UID + 119 + + NS.base + + CF$UID + 0 + + NS.relative + + CF$UID + 668 + + + + $class + + CF$UID + 105 + + NS.string + file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFNetworkingExample/AFNetworkingExample/AppDelegate.h + + + $class + + CF$UID + 119 + + NS.base + + CF$UID + 0 + + NS.relative + + CF$UID + 670 + + + + $class + + CF$UID + 105 + + NS.string + file://localhost/Users/mattt/Code/Objective-C/AFNetworking/Example/AppDelegate.h + + + $class + + CF$UID + 119 + + NS.base + + CF$UID + 0 + + NS.relative + + CF$UID + 672 + + + + $class + + CF$UID + 105 + + NS.string + file://localhost/Users/mattt/Code/Objective-C/AFNetworking/Example/UIImageView+AFNetworking.h + + + $class + + CF$UID + 119 + + NS.base + + CF$UID + 0 + + NS.relative + + CF$UID + 674 + + + + $class + + CF$UID + 105 + + NS.string + file://localhost/Users/mattt/Code/Objective-C/AFNetworking/Example/AFHTTPRequestOperation.h + + + $class + + CF$UID + 119 + + NS.base + + CF$UID + 0 + + NS.relative + + CF$UID + 676 + + + + $class + + CF$UID + 105 + + NS.string + file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFNetworkingExample/AFNetworkingExample/Classes/Controllers/SpotsViewController.h + + + $class + + CF$UID + 119 + + NS.base + + CF$UID + 0 + + NS.relative + + CF$UID + 678 + + + + $class + + CF$UID + 105 + + NS.string + file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFNetworkingExample/AFNetworkingExample/Vendor/TTT/TTTArrayFormatter.m + + + $class + + CF$UID + 119 + + NS.base + + CF$UID + 0 + + NS.relative + + CF$UID + 680 + + + + $class + + CF$UID + 105 + + NS.string + file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFNetworkingExample/Classes/Controllers/NearbySpotsViewController.m + + + $class + + CF$UID + 119 + + NS.base + + CF$UID + 0 + + NS.relative + + CF$UID + 682 + + + + $class + + CF$UID + 105 + + NS.string + file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFNetworkingExample/AFNetworkingExample/Classes/Controllers/NearbySpotsViewController.m + + + $class + + CF$UID + 119 + + NS.base + + CF$UID + 0 + + NS.relative + + CF$UID + 684 + + + + $class + + CF$UID + 105 + + NS.string + file://localhost/Users/mattt/Code/Objective-C/AFNetworking/Example/Classes/Controllers/NearbySpotsViewController.m + + + $class + + CF$UID + 119 + + NS.base + + CF$UID + 0 + + NS.relative + + CF$UID + 686 + + + + $class + + CF$UID + 105 + + NS.string + file://localhost/Users/mattt/Code/Objective-C/AFNetworking/QHTTPOperation/QHTTPOperation.h + + + $class + + CF$UID + 119 + + NS.base + + CF$UID + 0 + + NS.relative + + CF$UID + 688 + + + + $class + + CF$UID + 105 + + NS.string + file://localhost/Users/mattt/Code/Objective-C/AFNetworking/Example/Vendor/JSONKit/JSONKit.m + + + $class + + CF$UID + 119 + + NS.base + + CF$UID + 0 + + NS.relative + + CF$UID + 690 + + + + $class + + CF$UID + 105 + + NS.string + file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFNetworking/QHTTPOperation/QHTTPOperation.h + + + $class + + CF$UID + 119 + + NS.base + + CF$UID + 0 + + NS.relative + + CF$UID + 692 + + + + $class + + CF$UID + 105 + + NS.string + file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFNetworkingExample/AFNetworkingExample/Classes/Models/Spot.m + + + $class + + CF$UID + 119 + + NS.base + + CF$UID + 0 + + NS.relative + + CF$UID + 694 + + + + $class + + CF$UID + 105 + + NS.string + file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFNetworkingExample/Classes/Models/Spot.m + + + $class + + CF$UID + 119 + + NS.base + + CF$UID + 0 + + NS.relative + + CF$UID + 696 + + + + $class + + CF$UID + 105 + + NS.string + file://localhost/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSThread.h + + + $class + + CF$UID + 119 + + NS.base + + CF$UID + 0 + + NS.relative + + CF$UID + 698 + + + + $class + + CF$UID + 105 + + NS.string + file://localhost/Users/mattt/Code/Objective-C/AFNetworking/Example/Classes/Models/Spot.m + + + $class + + CF$UID + 119 + + NS.base + + CF$UID + 0 + + NS.relative + + CF$UID + 700 + + + + $class + + CF$UID + 105 + + NS.string + file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFNetworkingExample/AFNetworkingExample/Classes/Views/SpotTableViewCell.m + + + $class + + CF$UID + 119 + + NS.base + + CF$UID + 0 + + NS.relative + + CF$UID + 702 + + + + $class + + CF$UID + 105 + + NS.string + file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFNetworkingExample/Classes/Views/SpotTableViewCell.m + + + $class + + CF$UID + 119 + + NS.base + + CF$UID + 0 + + NS.relative + + CF$UID + 704 + + + + $class + + CF$UID + 105 + + NS.string + file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFNetworkingExample/UIImage+AFNetworking.m + + + $class + + CF$UID + 119 + + NS.base + + CF$UID + 0 + + NS.relative + + CF$UID + 706 + + + + $class + + CF$UID + 105 + + NS.string + file://localhost/Users/mattt/Code/Objective-C/AFNetworking/UIImage+AFNetworking.m + + + $class + + CF$UID + 119 + + NS.base + + CF$UID + 0 + + NS.relative + + CF$UID + 708 + + + + $class + + CF$UID + 105 + + NS.string + file://localhost/Users/mattt/Code/Objective-C/AFNetworking/Example/Classes/Views/SpotTableViewCell.m + + + $class + + CF$UID + 119 + + NS.base + + CF$UID + 0 + + NS.relative + + CF$UID + 710 + + + + $class + + CF$UID + 105 + + NS.string + file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFNetworking/UIImage+AFNetworking.m + + + $class + + CF$UID + 119 + + NS.base + + CF$UID + 0 + + NS.relative + + CF$UID + 712 + + + + $class + + CF$UID + 105 + + NS.string + file://localhost/Users/mattt/Code/Objective-C/AFNetworking/Example/AFHTTPRequestOperation.m + + + $class + + CF$UID + 119 + + NS.base + + CF$UID + 0 + + NS.relative + + CF$UID + 714 + + + + $class + + CF$UID + 105 + + NS.string + file://localhost/Users/mattt/Code/Objective-C/AFNetworking/Example/UIImage+AFNetworking.m + + + $class + + CF$UID + 119 + + NS.base + + CF$UID + 0 + + NS.relative + + CF$UID + 716 + + + + $class + + CF$UID + 105 + + NS.string + file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFNetworkingExample/AFImageRequest.h + + + $class + + CF$UID + 119 + + NS.base + + CF$UID + 0 + + NS.relative + + CF$UID + 718 + + + + $class + + CF$UID + 105 + + NS.string + file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFImageRequest.h + + + $class + + CF$UID + 119 + + NS.base + + CF$UID + 0 + + NS.relative + + CF$UID + 720 + + + + $class + + CF$UID + 105 + + NS.string + file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFNetworkingExample/Classes/AFImageRequest.h + + + $class + + CF$UID + 119 + + NS.base + + CF$UID + 0 + + NS.relative + + CF$UID + 722 + + + + $class + + CF$UID + 105 + + NS.string + file://localhost/Users/mattt/Code/Objective-C/AFNetworking/Example/AFJSONRequestOperation.h + + + $class + + CF$UID + 119 + + NS.base + + CF$UID + 0 + + NS.relative + + CF$UID + 724 + + + + $class + + CF$UID + 105 + + NS.string + file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFNetworking/QHTTPOperation/QRunLoopOperation.m + + + $class + + CF$UID + 48 NS.keys - - CF$UID - 153 - - - CF$UID - 154 - CF$UID 155 @@ -8355,1383 +9630,94 @@ CF$UID 156 - - NS.objects - CF$UID - 626 + 157 CF$UID 158 - - CF$UID - 159 - - - CF$UID - 160 - - - - 328564080.43520099 - - $class - - CF$UID - 43 - - NS.keys - - - CF$UID - 153 - - - CF$UID - 154 - - - CF$UID - 155 - - - CF$UID - 156 - NS.objects - - CF$UID - 628 - - - CF$UID - 629 - - - CF$UID - 159 - - - CF$UID - 160 - - - - 328568917.82865 - {0, 2305} - - $class - - CF$UID - 43 - - NS.keys - - - CF$UID - 631 - - - CF$UID - 632 - - - CF$UID - 633 - - - CF$UID - 634 - - - NS.objects - - - CF$UID - 635 - - - CF$UID - 636 - - - CF$UID - 159 - - - CF$UID - 637 - - - - PrimaryDocumentTimestamp - PrimaryDocumentVisibleCharacterRange - HideAllIssues - PrimaryDocumentSelectedCharacterRange - 328738287.23037899 - {486, 1771} - {1168, 0} - - $class - - CF$UID - 43 - - NS.keys - - - CF$UID - 631 - - - CF$UID - 632 - - - CF$UID - 633 - - - CF$UID - 634 - - - NS.objects - - - CF$UID - 639 - - - CF$UID - 640 - - - CF$UID - 159 - - - CF$UID - 641 - - - - 328738310.57136297 - {0, 1885} - {2801, 0} - - $class - - CF$UID - 43 - - NS.keys - - - CF$UID - 153 - - - CF$UID - 154 - - - CF$UID - 155 - - - CF$UID - 156 - - - NS.objects - - - CF$UID - 643 - - - CF$UID - 644 - - - CF$UID - 159 - - - CF$UID - 645 - - - - 328635201.53501302 - {0, 2992} - {3955, 0} - - $class - - CF$UID - 43 - - NS.keys - - - CF$UID - 153 - - - CF$UID - 154 - - - CF$UID - 155 - - - CF$UID - 156 - - - NS.objects - - - CF$UID - 647 - - - CF$UID - 648 - - - CF$UID - 159 - - - CF$UID - 160 - - - - 328635033.90532798 - {8795, 2975} - - $class - - CF$UID - 43 - - NS.keys - - - CF$UID - 153 - - - CF$UID - 154 - - - CF$UID - 155 - - - CF$UID - 156 - - - NS.objects - - - CF$UID - 650 - - - CF$UID - 651 - - - CF$UID - 159 - - - CF$UID - 652 - - - - 328640018.72804803 - {320, 2811} - {1971, 0} - - $class - - CF$UID - 43 - - NS.keys - - - CF$UID - 153 - - - CF$UID - 154 - - - CF$UID - 155 - - - CF$UID - 156 - - - NS.objects - - - CF$UID - 654 - - - CF$UID - 655 - - - CF$UID - 159 - - - CF$UID - 656 - - - - 328569433.09656501 - {470, 2550} - {1150, 0} - - $class - - CF$UID - 43 - - NS.keys - - - CF$UID - 153 - - - CF$UID - 154 - - - CF$UID - 155 - - - CF$UID - 156 - - - NS.objects - - - CF$UID - 658 - - - CF$UID - 659 - - - CF$UID - 159 - - - CF$UID - 660 - - - - 328563929.35566801 - {0, 420} - {199, 30} - - $class - - CF$UID - 43 - - NS.keys - - - CF$UID - 153 - - - CF$UID - 154 - - - CF$UID - 155 - - - CF$UID - 156 - - - NS.objects - - - CF$UID - 662 - - - CF$UID - 663 - - - CF$UID - 159 - - - CF$UID - 664 - - - - 328569441.889938 - {1898, 1930} - {3529, 0} - - $class - - CF$UID - 43 - - NS.keys - - - CF$UID - 153 - - - CF$UID - 154 - - - CF$UID - 155 - - - CF$UID - 156 - - - NS.objects - - - CF$UID - 666 - - - CF$UID - 667 - - - CF$UID - 159 - - - CF$UID - 668 - - - - 328631846.80683702 - {2109, 2363} - {3612, 0} - - $class - - CF$UID - 43 - - NS.keys - - - CF$UID - 153 - - - CF$UID - 154 - - - CF$UID - 155 - - - CF$UID - 156 - - - NS.objects - - - CF$UID - 670 - - - CF$UID - 671 - - - CF$UID - 159 - - - CF$UID - 672 - - - - 328629720.49516702 - {2904, 1325} - {3197, 39} - - $class - - CF$UID - 43 - - NS.keys - - - CF$UID - 153 - - - CF$UID - 154 - - - CF$UID - 155 - - - CF$UID - 156 - - - NS.objects - - - CF$UID - 674 - - - CF$UID - 675 - - - CF$UID - 159 - - - CF$UID - 676 - - - - 328568954.44763798 - {0, 1770} - {17, 0} - - $class - - CF$UID - 43 - - NS.keys - - - CF$UID - 153 - - - CF$UID - 154 - - - CF$UID - 155 - - - CF$UID - 156 - - - NS.objects - - - CF$UID - 678 - - - CF$UID - 679 - - - CF$UID - 159 - - - CF$UID - 680 - - - - 328634321.92628098 - {0, 1882} - {1836, 41} - - $class - - CF$UID - 43 - - NS.keys - - - CF$UID - 153 - - - CF$UID - 154 - - - CF$UID - 155 - - - CF$UID - 156 - - - NS.objects - - - CF$UID - 682 - - - CF$UID - 679 - - - CF$UID - 159 - - - CF$UID - 160 - - - - 328637263.87395501 - - $class - - CF$UID - 43 - - NS.keys - - - CF$UID - 153 - - - CF$UID - 154 - - - CF$UID - 155 - - - CF$UID - 156 - - - NS.objects - - - CF$UID - 684 - - - CF$UID - 685 - - - CF$UID - 159 - - - CF$UID - 160 - - - - 328568925.573183 - {0, 1389} - - $class - - CF$UID - 43 - - NS.keys - - - CF$UID - 153 - - - CF$UID - 154 - - - CF$UID - 155 - - - CF$UID - 156 - - - NS.objects - - - CF$UID - 687 - - - CF$UID - 685 - - - CF$UID - 159 - - - CF$UID - 160 - - - - 328641204.26085901 - - $class - - CF$UID - 43 - - NS.keys - - - CF$UID - 631 - - - CF$UID - 632 - - - CF$UID - 633 - - - CF$UID - 634 - - - NS.objects - - - CF$UID - 689 - - - CF$UID - 690 - - - CF$UID - 159 - - - CF$UID - 691 - - - - 328737419.820023 - {976, 1215} - {1655, 0} - - $class - - CF$UID - 43 - - NS.keys - - - CF$UID - 153 - - - CF$UID - 154 - - - CF$UID - 155 - - - CF$UID - 156 - - - NS.objects - - - CF$UID - 693 - - - CF$UID - 694 - - - CF$UID - 159 - - - CF$UID - 695 - - - - 328569504.05768299 - {0, 2770} - {1491, 0} - - $class - - CF$UID - 43 - - NS.keys - - - CF$UID - 153 - - - CF$UID - 154 - - - CF$UID - 155 - - - CF$UID - 156 - - - NS.objects - - - CF$UID - 697 - - - CF$UID - 698 - - - CF$UID - 159 - - - CF$UID - 699 - - - - 328636539.616377 - {0, 2936} - {1211, 0} - - $class - - CF$UID - 43 - - NS.keys - - - CF$UID - 153 - - - CF$UID - 154 - - - CF$UID - 155 - - - CF$UID - 156 - - - NS.objects - - - CF$UID - 701 - - - CF$UID - 702 - - - CF$UID - 159 - - - CF$UID - 703 - - - - 328569459.30297899 - {1143, 2029} - {2083, 0} - - $class - - CF$UID - 43 - - NS.keys - - - CF$UID - 153 - - - CF$UID - 154 - - - CF$UID - 155 - - - CF$UID - 156 - - - NS.objects - - - CF$UID - 705 - - - CF$UID - 706 - - - CF$UID - 159 - - - CF$UID - 707 - - - - 328640229.76242298 - {968, 2219} - {3178, 0} - - $class - - CF$UID - 43 - - NS.keys - - - CF$UID - 153 - - - CF$UID - 154 - - - CF$UID - 155 - - - CF$UID - 156 - - - NS.objects - - - CF$UID - 709 - - - CF$UID - 710 - - - CF$UID - 159 - - - CF$UID - 711 - - - - 328629655.52122098 - {840, 908} - {1410, 6} - - $class - - CF$UID - 43 - - NS.keys - - - CF$UID - 153 - - - CF$UID - 154 - - - CF$UID - 155 - - - CF$UID - 156 - - - NS.objects - - - CF$UID - 713 - - - CF$UID - 714 - - - CF$UID - 159 - - - CF$UID - 676 - - - - 328568956.32660103 - {0, 2996} - - $class - - CF$UID - 43 - - NS.keys - - - CF$UID - 153 - - - CF$UID - 154 - - - CF$UID - 155 - - - CF$UID - 156 - - - NS.objects - - - CF$UID - 716 - - - CF$UID - 717 - - - CF$UID - 159 - - - CF$UID - 718 - - - - 328633204.87030399 - {4827, 2613} - {7270, 0} - - $class - - CF$UID - 43 - - NS.keys - - - CF$UID - 153 - - - CF$UID - 154 - - - CF$UID - 155 - - - CF$UID - 156 - - - NS.objects - - - CF$UID - 720 - - - CF$UID - 721 - - - CF$UID - 159 - - - CF$UID - 722 - - - - 328562932.42907399 - {0, 1192} - {587, 0} - - $class - - CF$UID - 43 - - NS.keys - - - CF$UID - 153 - - - CF$UID - 154 - - - CF$UID - 155 - - - CF$UID - 156 - - - NS.objects - - - CF$UID - 724 - - - CF$UID - 725 - - - CF$UID - 159 - CF$UID 726 - - - 328639741.45060402 - {0, 2036} - {1338, 0} - - $class - - CF$UID - 43 - - NS.keys - CF$UID - 153 + 727 CF$UID - 154 + 36 - - CF$UID - 155 - - - CF$UID - 156 - - - NS.objects - CF$UID 728 + + + 328569464.60332 + {2028, 2097} + {3133, 0} + + $class + + CF$UID + 48 + + NS.keys + CF$UID - 729 + 155 CF$UID - 159 + 156 + + CF$UID + 157 + + + CF$UID + 158 + + + NS.objects + CF$UID 730 - - - 328562784.29455298 - {0, 284} - {284, 0} - - $class - - CF$UID - 43 - - NS.keys - CF$UID - 153 + 731 CF$UID - 154 + 36 - - CF$UID - 155 - - - CF$UID - 156 - - - NS.objects - CF$UID 732 - - CF$UID - 733 - - - CF$UID - 159 - - - CF$UID - 160 - - 328569462.49987203 - {0, 2022} + 328639711.22346902 + {2036, 2223} + {4259, 0} $class CF$UID - 43 + 48 NS.keys - - CF$UID - 153 - - - CF$UID - 154 - CF$UID 155 @@ -9740,46 +9726,94 @@ CF$UID 156 + + CF$UID + 157 + + + CF$UID + 158 + NS.objects + + CF$UID + 734 + CF$UID 735 + + CF$UID + 36 + CF$UID 736 - - CF$UID - 159 - - - CF$UID - 737 - - 328638425.23551297 - {0, 2027} - {1733, 197} + 333484898.92139798 + {2338, 839} + {7234, 0} $class CF$UID - 43 + 48 NS.keys CF$UID - 153 + 109 CF$UID - 154 + 110 + + CF$UID + 111 + + + CF$UID + 112 + + + NS.objects + + + CF$UID + 738 + + + CF$UID + 739 + + + CF$UID + 36 + + + CF$UID + 740 + + + + 333490229.005265 + {0, 1642} + {1257, 0} + + $class + + CF$UID + 48 + + NS.keys + CF$UID 155 @@ -9788,52 +9822,13 @@ CF$UID 156 - - NS.objects - CF$UID - 739 + 157 CF$UID - 740 - - - CF$UID - 159 - - - CF$UID - 160 - - - - 328564054.60792202 - {0, 45} - - $class - - CF$UID - 43 - - NS.keys - - - CF$UID - 631 - - - CF$UID - 632 - - - CF$UID - 633 - - - CF$UID - 634 + 158 NS.objects @@ -9848,7 +9843,7 @@ CF$UID - 159 + 36 CF$UID @@ -9856,25 +9851,17 @@ - 328738267.78939998 - {5369, 1514} - {2846, 0} + 328629805.99687099 + {12666, 1409} + {10264, 0} $class CF$UID - 43 + 48 NS.keys - - CF$UID - 153 - - - CF$UID - 154 - CF$UID 155 @@ -9883,6 +9870,14 @@ CF$UID 156 + + CF$UID + 157 + + + CF$UID + 158 + NS.objects @@ -9896,7 +9891,7 @@ CF$UID - 159 + 36 CF$UID @@ -9904,25 +9899,17 @@ - 328562716.033566 - {0, 242} - {187, 18} + 328569452.326361 + {0, 1866} + {1143, 0} $class CF$UID - 43 + 48 NS.keys - - CF$UID - 153 - - - CF$UID - 154 - CF$UID 155 @@ -9931,6 +9918,14 @@ CF$UID 156 + + CF$UID + 157 + + + CF$UID + 158 + NS.objects @@ -9944,31 +9939,23 @@ CF$UID - 159 + 36 CF$UID - 160 + 470 - 328562654.93471301 + 328640019.14058203 $class CF$UID - 43 + 48 NS.keys - - CF$UID - 153 - - - CF$UID - 154 - CF$UID 155 @@ -9977,6 +9964,14 @@ CF$UID 156 + + CF$UID + 157 + + + CF$UID + 158 + NS.objects @@ -9990,7 +9985,7 @@ CF$UID - 159 + 36 CF$UID @@ -9998,25 +9993,17 @@ - 328635028.79369003 - {0, 1206} - {95, 22} + 328568942.82172298 + {0, 1519} + {1375, 138} $class CF$UID - 43 + 48 NS.keys - - CF$UID - 153 - - - CF$UID - 154 - CF$UID 155 @@ -10025,6 +10012,14 @@ CF$UID 156 + + CF$UID + 157 + + + CF$UID + 158 + NS.objects @@ -10038,33 +10033,24 @@ CF$UID - 159 + 36 CF$UID - 758 + 470 - 328562134.45606798 - {0, 1661} - {472, 0} + 328568917.82865 + {0, 2305} $class CF$UID - 43 + 48 NS.keys - - CF$UID - 153 - - - CF$UID - 154 - CF$UID 155 @@ -10073,142 +10059,142 @@ CF$UID 156 + + CF$UID + 157 + + + CF$UID + 158 + NS.objects + + CF$UID + 759 + CF$UID 760 + + CF$UID + 36 + CF$UID 761 - - CF$UID - 159 - - - CF$UID - 762 - - 328568900.79838699 - {0, 2291} - {2093, 0} + 328738287.23037899 + {486, 1771} + {1168, 0} $class CF$UID - 43 + 48 NS.keys CF$UID - 153 + 109 CF$UID - 154 + 110 CF$UID - 155 + 111 CF$UID - 156 + 112 NS.objects + + CF$UID + 763 + CF$UID 764 + + CF$UID + 36 + CF$UID 765 - - CF$UID - 159 - - - CF$UID - 766 - - 328639697.255916 - {543, 2465} - {3008, 0} + 333490149.648996 + {1057, 1222} + {1770, 0} $class CF$UID - 43 + 48 NS.keys CF$UID - 153 + 109 CF$UID - 154 + 110 CF$UID - 155 + 111 CF$UID - 156 + 112 NS.objects + + CF$UID + 767 + CF$UID 768 + + CF$UID + 36 + CF$UID 769 - - CF$UID - 159 - - - CF$UID - 770 - - 328569616.782251 - {0, 1572} - {1320, 0} + 333490238.14058298 + {0, 1414} + {685, 0} $class CF$UID - 43 + 48 NS.keys - - CF$UID - 153 - - - CF$UID - 154 - CF$UID 155 @@ -10217,44 +10203,46 @@ CF$UID 156 + + CF$UID + 157 + + + CF$UID + 158 + NS.objects + + CF$UID + 771 + CF$UID 772 CF$UID - 769 + 36 CF$UID - 159 - - - CF$UID - 160 + 773 - 328639720.65704298 + 328564633.34488499 + {0, 2360} + {539, 0} $class CF$UID - 43 + 48 NS.keys - - CF$UID - 153 - - - CF$UID - 154 - CF$UID 155 @@ -10263,46 +10251,46 @@ CF$UID 156 + + CF$UID + 157 + + + CF$UID + 158 + NS.objects - - CF$UID - 774 - CF$UID 775 CF$UID - 159 + 776 CF$UID - 776 + 36 + + + CF$UID + 777 - 328568901.80959499 - {160, 2627} - {2619, 0} + 328569621.79128498 + {0, 1417} + {16, 1132} $class CF$UID - 43 + 48 NS.keys - - CF$UID - 153 - - - CF$UID - 154 - CF$UID 155 @@ -10311,20 +10299,28 @@ CF$UID 156 + + CF$UID + 157 + + + CF$UID + 158 + NS.objects - - CF$UID - 778 - CF$UID 779 CF$UID - 159 + 776 + + + CF$UID + 36 CF$UID @@ -10332,25 +10328,16 @@ - 328569464.60332 - {2028, 2097} - {3133, 0} + 328638426.72525901 + {942, 0} $class CF$UID - 43 + 48 NS.keys - - CF$UID - 153 - - - CF$UID - 154 - CF$UID 155 @@ -10359,6 +10346,14 @@ CF$UID 156 + + CF$UID + 157 + + + CF$UID + 158 + NS.objects @@ -10372,33 +10367,24 @@ CF$UID - 159 + 36 CF$UID - 784 + 470 - 328639711.22346902 - {2036, 2223} - {4259, 0} + 333484897.95255202 + {0, 1256} $class CF$UID - 43 + 48 NS.keys - - CF$UID - 153 - - - CF$UID - 154 - CF$UID 155 @@ -10407,142 +10393,141 @@ CF$UID 156 + + CF$UID + 157 + + + CF$UID + 158 + NS.objects + + CF$UID + 785 + CF$UID 786 CF$UID - 787 + 36 CF$UID - 159 + 470 + + + 329669736.91211098 + {3655, 1376} + + $class + + CF$UID + 48 + + NS.keys + + + CF$UID + 155 + + + CF$UID + 156 + + + CF$UID + 157 + + + CF$UID + 158 + + + NS.objects + CF$UID 788 - - - 328639702.90566498 - {0, 2662} - {2662, 0} - - $class - - CF$UID - 43 - - NS.keys - CF$UID - 153 + 789 CF$UID - 154 + 36 - - CF$UID - 155 - - - CF$UID - 156 - - - NS.objects - CF$UID 790 + + + 328634329.19562602 + {5924, 1875} + {3623, 31} + + $class + + CF$UID + 48 + + NS.keys + CF$UID - 791 + 155 CF$UID - 159 + 156 + + CF$UID + 157 + + + CF$UID + 158 + + + NS.objects + CF$UID 792 - - - 328568945.21344799 - {0, 2160} - {1894, 0} - - $class - - CF$UID - 43 - - NS.keys - CF$UID - 153 + 793 CF$UID - 154 + 36 - - CF$UID - 155 - - - CF$UID - 156 - - - NS.objects - CF$UID 794 - - CF$UID - 795 - - - CF$UID - 159 - - - CF$UID - 796 - - 328631014.645944 - {0, 2313} - {2415, 14} + 328563929.35566801 + {0, 420} + {199, 30} $class CF$UID - 43 + 48 NS.keys - - CF$UID - 153 - - - CF$UID - 154 - CF$UID 155 @@ -10551,46 +10536,93 @@ CF$UID 156 + + CF$UID + 157 + + + CF$UID + 158 + NS.objects CF$UID - 798 + 796 + + CF$UID + 797 + + + CF$UID + 36 + + + CF$UID + 470 + + + + 328569462.49987203 + {0, 2022} + + $class + + CF$UID + 48 + + NS.keys + + + CF$UID + 155 + + + CF$UID + 156 + + + CF$UID + 157 + + + CF$UID + 158 + + + NS.objects + CF$UID 799 CF$UID - 159 + 800 CF$UID - 800 + 36 + + + CF$UID + 801 - 328569476.86600798 - {1160, 2169} - {2087, 0} + 328638425.23551297 + {0, 2027} + {1733, 197} $class CF$UID - 43 + 48 NS.keys - - CF$UID - 153 - - - CF$UID - 154 - CF$UID 155 @@ -10599,188 +10631,141 @@ CF$UID 156 + + CF$UID + 157 + + + CF$UID + 158 + NS.objects - - CF$UID - 802 - CF$UID 803 CF$UID - 159 + 804 CF$UID - 160 + 36 + + + CF$UID + 470 - 328639707.23263699 - {1065, 2269} + 329551845.86902702 + {900, 1123} $class CF$UID - 43 + 48 NS.keys CF$UID - 153 + 109 CF$UID - 154 + 110 CF$UID - 155 + 111 CF$UID - 156 + 112 NS.objects - - CF$UID - 805 - CF$UID 806 CF$UID - 159 + 807 CF$UID - 160 + 36 - - - 328568899.47802299 - {0, 1398} - - $class - - CF$UID - 43 - - NS.keys - - - CF$UID - 153 - - - CF$UID - 154 - - - CF$UID - 155 - - - CF$UID - 156 - - - NS.objects - CF$UID 808 + + + 333490226.353791 + {0, 1958} + {1177, 0} + + $class + + CF$UID + 48 + + NS.keys + CF$UID - 809 + 109 CF$UID - 159 + 110 + + CF$UID + 111 + + + CF$UID + 112 + + + NS.objects + CF$UID 810 - - - 328640237.80255002 - {0, 1350} - {1317, 12} - - $class - - CF$UID - 43 - - NS.keys - CF$UID - 153 + 811 CF$UID - 154 + 36 - - CF$UID - 155 - - - CF$UID - 156 - - - NS.objects - CF$UID 812 - - CF$UID - 813 - - - CF$UID - 159 - - - CF$UID - 814 - - 328568958.07031602 - {0, 2517} - {15, 0} + 333490281.45101601 + {2146, 1708} + {1441, 0} $class CF$UID - 43 + 48 NS.keys - - CF$UID - 153 - - - CF$UID - 154 - CF$UID 155 @@ -10789,46 +10774,93 @@ CF$UID 156 + + CF$UID + 157 + + + CF$UID + 158 + NS.objects CF$UID - 816 + 814 + + CF$UID + 815 + + + CF$UID + 36 + + + CF$UID + 470 + + + + 328564054.60792202 + {0, 45} + + $class + + CF$UID + 48 + + NS.keys + + + CF$UID + 109 + + + CF$UID + 110 + + + CF$UID + 111 + + + CF$UID + 112 + + + NS.objects + CF$UID 817 - - CF$UID - 159 - CF$UID 818 + + CF$UID + 36 + + + CF$UID + 819 + - 328569621.79128498 - {0, 1417} - {16, 1132} + 333490247.14434803 + {0, 2003} + {738, 0} $class CF$UID - 43 + 48 NS.keys - - CF$UID - 153 - - - CF$UID - 154 - CF$UID 155 @@ -10837,91 +10869,46 @@ CF$UID 156 + + CF$UID + 157 + + + CF$UID + 158 + NS.objects - - CF$UID - 820 - - - CF$UID - 817 - - - CF$UID - 159 - CF$UID 821 - - - 328638426.72525901 - {942, 0} - - $class - - CF$UID - 43 - - NS.keys - CF$UID - 153 + 822 CF$UID - 154 + 36 - - CF$UID - 155 - - - CF$UID - 156 - - - NS.objects - CF$UID 823 - - CF$UID - 806 - - - CF$UID - 159 - - - CF$UID - 160 - - 328639704.97709 + 328564689.54627103 + {0, 2259} + {1952, 20} $class CF$UID - 43 + 48 NS.keys - - CF$UID - 153 - - - CF$UID - 154 - CF$UID 155 @@ -10930,6 +10917,14 @@ CF$UID 156 + + CF$UID + 157 + + + CF$UID + 158 + NS.objects @@ -10939,226 +10934,173 @@ CF$UID - 813 + 826 CF$UID - 159 + 36 - - CF$UID - 160 - - - - 328633198.94233501 - - $class - - CF$UID - 43 - - NS.keys - - - CF$UID - 153 - - - CF$UID - 154 - - - CF$UID - 155 - - - CF$UID - 156 - - - NS.objects - CF$UID 827 + + + 328568900.79838699 + {0, 2291} + {2093, 0} + + $class + + CF$UID + 48 + + NS.keys + CF$UID - 828 + 155 CF$UID - 159 + 156 + + CF$UID + 157 + + + CF$UID + 158 + + + NS.objects + CF$UID 829 - - - 328639723.21112299 - {5972, 2273} - {2726, 0} - - $class - - CF$UID - 43 - - NS.keys - CF$UID - 153 + 830 CF$UID - 154 + 36 - - CF$UID - 155 - - - CF$UID - 156 - - - NS.objects - CF$UID 831 + + + 328639697.255916 + {543, 2465} + {3008, 0} + + $class + + CF$UID + 48 + + NS.keys + CF$UID - 832 + 155 CF$UID - 159 + 156 + + CF$UID + 157 + + + CF$UID + 158 + + + NS.objects + CF$UID 833 - - - 328639728.49085099 - {0, 2529} - {2529, 0} - - $class - - CF$UID - 43 - - NS.keys - CF$UID - 631 + 834 CF$UID - 632 + 36 - - CF$UID - 633 - - - CF$UID - 634 - - - NS.objects - CF$UID 835 + + + 332436876.03263402 + {1197, 1087} + {0, 3032} + + $class + + CF$UID + 48 + + NS.keys + CF$UID - 836 + 109 CF$UID - 159 + 110 + + CF$UID + 111 + + + CF$UID + 112 + + + NS.objects + CF$UID 837 - - - 328737377.86666799 - {0, 2150} - {1304, 0} - - $class - - CF$UID - 43 - - NS.keys - CF$UID - 153 + 838 CF$UID - 154 + 36 - - CF$UID - 155 - - - CF$UID - 156 - - - NS.objects - CF$UID 839 - - CF$UID - 840 - - - CF$UID - 159 - - - CF$UID - 160 - - 328641378.22269201 - {0, 2355} + 333490197.44021398 + {0, 1805} + {0, 1161} $class CF$UID - 43 + 48 NS.keys - - CF$UID - 153 - - - CF$UID - 154 - CF$UID 155 @@ -11167,52 +11109,61 @@ CF$UID 156 + + CF$UID + 157 + + + CF$UID + 158 + NS.objects + + CF$UID + 841 + CF$UID 842 + + CF$UID + 36 + CF$UID 843 - - CF$UID - 159 - - - CF$UID - 160 - - 328651236.25767601 - {0, 1902} + 328562932.42907399 + {0, 1192} + {587, 0} $class CF$UID - 43 + 48 NS.keys CF$UID - 631 + 155 CF$UID - 632 + 156 CF$UID - 633 + 157 CF$UID - 634 + 158 NS.objects @@ -11227,128 +11178,25 @@ CF$UID - 159 + 36 CF$UID - 160 + 847 - 328738267.94867897 - {0, 1572} + 328640838.63388097 + {0, 1356} + {1255, 0} $class CF$UID - 43 + 48 NS.keys - - CF$UID - 631 - - - CF$UID - 632 - - - CF$UID - 633 - - - CF$UID - 634 - - - NS.objects - - - CF$UID - 848 - - - CF$UID - 849 - - - CF$UID - 159 - - - CF$UID - 850 - - - - 328738280.37983203 - {610, 1689} - {1288, 0} - - $class - - CF$UID - 43 - - NS.keys - - - CF$UID - 631 - - - CF$UID - 632 - - - CF$UID - 633 - - - CF$UID - 634 - - - NS.objects - - - CF$UID - 852 - - - CF$UID - 853 - - - CF$UID - 159 - - - CF$UID - 854 - - - - 328737474.75504899 - {1773, 3399} - {3277, 100} - - $class - - CF$UID - 43 - - NS.keys - - - CF$UID - 153 - - - CF$UID - 154 - CF$UID 155 @@ -11357,6 +11205,109 @@ CF$UID 156 + + CF$UID + 157 + + + CF$UID + 158 + + + NS.objects + + + CF$UID + 849 + + + CF$UID + 850 + + + CF$UID + 36 + + + CF$UID + 851 + + + + 333484989.27985603 + {0, 1376} + {1375, 0} + + $class + + CF$UID + 48 + + NS.keys + + + CF$UID + 155 + + + CF$UID + 156 + + + CF$UID + 157 + + + CF$UID + 158 + + + NS.objects + + + CF$UID + 853 + + + CF$UID + 854 + + + CF$UID + 36 + + + CF$UID + 470 + + + + 328568899.47802299 + {0, 1398} + + $class + + CF$UID + 48 + + NS.keys + + + CF$UID + 155 + + + CF$UID + 156 + + + CF$UID + 157 + + + CF$UID + 158 + NS.objects @@ -11366,85 +11317,75 @@ CF$UID - 857 + 854 CF$UID - 159 + 36 + + CF$UID + 470 + + + + 328639704.97709 + + $class + + CF$UID + 48 + + NS.keys + + + CF$UID + 155 + + + CF$UID + 156 + + + CF$UID + 157 + + + CF$UID + 158 + + + NS.objects + CF$UID 858 - - - 328568946.85565799 - {0, 1316} - {0, 1155} - - $class - - CF$UID - 43 - - NS.keys - CF$UID - 153 + 859 CF$UID - 154 + 36 - - CF$UID - 155 - - - CF$UID - 156 - - - NS.objects - CF$UID 860 - - CF$UID - 861 - - - CF$UID - 159 - - - CF$UID - 862 - - 328569452.326361 - {0, 1866} - {1143, 0} + 328639728.49085099 + {0, 2529} + {2529, 0} $class CF$UID - 43 + 48 NS.keys - - CF$UID - 153 - - - CF$UID - 154 - CF$UID 155 @@ -11453,44 +11394,46 @@ CF$UID 156 + + CF$UID + 157 + + + CF$UID + 158 + NS.objects + + CF$UID + 862 + + + CF$UID + 863 + + + CF$UID + 36 + CF$UID 864 - - CF$UID - 861 - - - CF$UID - 159 - - - CF$UID - 160 - - 328640019.14058203 + 328568901.80959499 + {160, 2627} + {2619, 0} $class CF$UID - 43 + 48 NS.keys - - CF$UID - 153 - - - CF$UID - 154 - CF$UID 155 @@ -11499,6 +11442,14 @@ CF$UID 156 + + CF$UID + 157 + + + CF$UID + 158 + NS.objects @@ -11512,7 +11463,7 @@ CF$UID - 159 + 36 CF$UID @@ -11520,25 +11471,17 @@ - 328568942.82172298 - {0, 1519} - {1375, 138} + 328639702.90566498 + {0, 2662} + {2662, 0} $class CF$UID - 43 + 48 NS.keys - - CF$UID - 153 - - - CF$UID - 154 - CF$UID 155 @@ -11547,6 +11490,14 @@ CF$UID 156 + + CF$UID + 157 + + + CF$UID + 158 + NS.objects @@ -11560,32 +11511,25 @@ CF$UID - 159 + 36 CF$UID - 160 + 872 - 328564665.45652199 - {0, 2412} + 328737377.86666799 + {0, 2150} + {1304, 0} $class CF$UID - 43 + 48 NS.keys - - CF$UID - 153 - - - CF$UID - 154 - CF$UID 155 @@ -11594,94 +11538,94 @@ CF$UID 156 + + CF$UID + 157 + + + CF$UID + 158 + NS.objects - - CF$UID - 873 - CF$UID 874 CF$UID - 159 + 875 CF$UID - 875 + 36 + + + CF$UID + 876 - 328640838.63388097 - {0, 1356} - {1255, 0} + 332373425.21764898 + {1844, 1121} + {0, 3659} $class CF$UID - 43 + 48 NS.keys CF$UID - 631 + 155 CF$UID - 632 + 156 CF$UID - 633 + 157 CF$UID - 634 + 158 NS.objects - - CF$UID - 877 - CF$UID 878 CF$UID - 159 + 879 CF$UID - 879 + 36 + + + CF$UID + 880 - 328737376.54692 - {0, 1376} - {1370, 0} + 328569504.05768299 + {0, 2770} + {1491, 0} $class CF$UID - 43 + 48 NS.keys - - CF$UID - 153 - - - CF$UID - 154 - CF$UID 155 @@ -11690,189 +11634,142 @@ CF$UID 156 + + CF$UID + 157 + + + CF$UID + 158 + NS.objects - - CF$UID - 881 - CF$UID 882 CF$UID - 159 + 883 CF$UID - 160 + 36 - - - 328568931.12116998 - {0, 226} - - $class - - CF$UID - 43 - - NS.keys - - - CF$UID - 631 - - - CF$UID - 632 - - - CF$UID - 633 - - - CF$UID - 634 - - - NS.objects - CF$UID 884 + + + 328636539.616377 + {0, 2936} + {1211, 0} + + $class + + CF$UID + 48 + + NS.keys + CF$UID - 885 + 155 CF$UID - 159 + 156 + + CF$UID + 157 + + + CF$UID + 158 + + + NS.objects + CF$UID 886 - - - 328738337.61542702 - {4391, 1662} - {5427, 0} - - $class - - CF$UID - 43 - - NS.keys - CF$UID - 153 + 887 CF$UID - 154 + 36 - - CF$UID - 155 - - - CF$UID - 156 - - - NS.objects - CF$UID 888 + + + 328738267.78939998 + {5369, 1514} + {2846, 0} + + $class + + CF$UID + 48 + + NS.keys + CF$UID - 889 + 155 CF$UID - 159 + 156 + + CF$UID + 157 + + + CF$UID + 158 + + + NS.objects + CF$UID 890 - - - 328569472.30021399 - {3002, 2370} - {4212, 0} - - $class - - CF$UID - 43 - - NS.keys - CF$UID - 153 + 891 CF$UID - 154 + 36 - - CF$UID - 155 - - - CF$UID - 156 - - - NS.objects - CF$UID 892 - - CF$UID - 893 - - - CF$UID - 159 - - - CF$UID - 894 - - 328639720.18629599 - {0, 2587} - {6076, 0} + 328568956.32660103 + {0, 2996} + {17, 0} $class CF$UID - 43 + 48 NS.keys - - CF$UID - 153 - - - CF$UID - 154 - CF$UID 155 @@ -11881,44 +11778,46 @@ CF$UID 156 + + CF$UID + 157 + + + CF$UID + 158 + NS.objects + + CF$UID + 894 + + + CF$UID + 895 + + + CF$UID + 36 + CF$UID 896 - - CF$UID - 616 - - - CF$UID - 159 - - - CF$UID - 160 - - 328568938.20444399 + 328633204.87030399 + {4827, 2613} + {7270, 0} $class CF$UID - 43 + 48 NS.keys - - CF$UID - 153 - - - CF$UID - 154 - CF$UID 155 @@ -11927,6 +11826,14 @@ CF$UID 156 + + CF$UID + 157 + + + CF$UID + 158 + NS.objects @@ -11936,83 +11843,29 @@ CF$UID - 616 + 899 CF$UID - 159 + 36 - - CF$UID - 862 - - - - 328627593.06353903 - - $class - - CF$UID - 43 - - NS.keys - - - CF$UID - 153 - - - CF$UID - 154 - - - CF$UID - 155 - - - CF$UID - 156 - - - NS.objects - CF$UID 900 - - CF$UID - 901 - - - CF$UID - 159 - - - CF$UID - 902 - - 328629805.99687099 - {12666, 1409} - {10264, 0} + 328569433.09656501 + {470, 2550} + {1150, 0} $class CF$UID - 43 + 48 NS.keys - - CF$UID - 153 - - - CF$UID - 154 - CF$UID 155 @@ -12021,58 +11874,209 @@ CF$UID 156 + + CF$UID + 157 + + + CF$UID + 158 + NS.objects + + CF$UID + 902 + + + CF$UID + 903 + + + CF$UID + 36 + CF$UID 904 - - CF$UID - 905 - - - CF$UID - 159 - - - CF$UID - 906 - - 328564689.54627103 - {0, 2259} - {1952, 20} + 333485031.68864602 + {1136, 1610} + {2031, 0} $class CF$UID - 43 + 48 NS.keys + + CF$UID + 155 + + + CF$UID + 156 + + + CF$UID + 157 + + + CF$UID + 158 + + + NS.objects + + + CF$UID + 906 + + + CF$UID + 907 + + + CF$UID + 36 + CF$UID 908 + + + 328635201.53501302 + {0, 2992} + {3955, 0} + + $class + + CF$UID + 48 + + NS.keys + + + CF$UID + 155 + + + CF$UID + 156 + + + CF$UID + 157 + + + CF$UID + 158 + + + NS.objects + CF$UID 910 + + CF$UID + 911 + + + CF$UID + 36 + CF$UID 912 + + + 328640018.72804803 + {320, 2811} + {1971, 0} + + $class + + CF$UID + 48 + + NS.keys + + + CF$UID + 155 + + + CF$UID + 156 + + + CF$UID + 157 + + + CF$UID + 158 + + + NS.objects + CF$UID 914 + + CF$UID + 915 + + + CF$UID + 36 + CF$UID 916 + + + 328639741.45060402 + {0, 2036} + {1338, 0} + + $class + + CF$UID + 48 + + NS.keys + + + CF$UID + 155 + + + CF$UID + 156 + + + CF$UID + 157 + + + CF$UID + 158 + + + NS.objects + CF$UID 918 @@ -12083,58 +12087,664 @@ CF$UID - 921 + 36 CF$UID - 923 + 470 + + + + 328564080.43520099 + {0, 344} + + $class + + CF$UID + 48 + + NS.keys + + + CF$UID + 155 CF$UID - 925 + 156 CF$UID - 927 + 157 CF$UID - 929 - - - CF$UID - 931 + 158 NS.objects + + CF$UID + 921 + + + CF$UID + 922 + + + CF$UID + 36 + + + CF$UID + 923 + + + + 328562716.033566 + {0, 242} + {187, 18} + + $class + + CF$UID + 48 + + NS.keys + + + CF$UID + 155 + + + CF$UID + 156 + + + CF$UID + 157 + + + CF$UID + 158 + + + NS.objects + + + CF$UID + 925 + + + CF$UID + 922 + + + CF$UID + 36 + + + CF$UID + 470 + + + + 328562654.93471301 + + $class + + CF$UID + 48 + + NS.keys + + + CF$UID + 155 + + + CF$UID + 156 + + + CF$UID + 157 + + + CF$UID + 158 + + + NS.objects + + + CF$UID + 927 + + + CF$UID + 928 + + + CF$UID + 36 + + + CF$UID + 929 + + + + 328562134.45606798 + {0, 1661} + {472, 0} + + $class + + CF$UID + 48 + + NS.keys + + + CF$UID + 155 + + + CF$UID + 156 + + + CF$UID + 157 + + + CF$UID + 158 + + + NS.objects + + + CF$UID + 931 + + + CF$UID + 932 + + + CF$UID + 36 + CF$UID 933 + + + 328640237.80255002 + {0, 1350} + {1317, 12} + + $class + + CF$UID + 48 + + NS.keys + + + CF$UID + 155 + + + CF$UID + 156 + + + CF$UID + 157 + + + CF$UID + 158 + + + NS.objects + + + CF$UID + 935 + + + CF$UID + 936 + + + CF$UID + 36 + + + CF$UID + 937 + + + + 328568958.07031602 + {0, 2517} + {15, 0} + + $class + + CF$UID + 48 + + NS.keys + + + CF$UID + 155 + + + CF$UID + 156 + + + CF$UID + 157 + + + CF$UID + 158 + + + NS.objects + + + CF$UID + 939 + + + CF$UID + 936 + + + CF$UID + 36 + + + CF$UID + 470 + + + + 328633198.94233501 + + $class + + CF$UID + 48 + + NS.keys + + + CF$UID + 109 + + + CF$UID + 110 + + + CF$UID + 111 + + + CF$UID + 112 + + + NS.objects + + + CF$UID + 941 + CF$UID 942 CF$UID - 947 + 36 CF$UID - 952 + 943 + + + 333490189.23406601 + {0, 2216} + {1428, 0} + + $class + + CF$UID + 48 + + NS.keys + + + CF$UID + 155 + + + CF$UID + 156 + + + CF$UID + 157 + + + CF$UID + 158 + + + NS.objects + + + CF$UID + 945 + + + CF$UID + 946 + + + CF$UID + 36 + + + CF$UID + 947 + + + + 328737474.75504899 + {1773, 3399} + {3277, 100} + + $class + + CF$UID + 48 + + NS.keys + + + CF$UID + 155 + + + CF$UID + 156 + + + CF$UID + 157 + + + CF$UID + 158 + + + NS.objects + + + CF$UID + 949 + + + CF$UID + 950 + + + CF$UID + 36 + + + CF$UID + 951 + + + + 328639723.21112299 + {5972, 2273} + {2726, 0} + + $class + + CF$UID + 48 + + NS.keys + + + CF$UID + 155 + + + CF$UID + 156 + + + CF$UID + 157 + + + CF$UID + 158 + + + NS.objects + + + CF$UID + 953 + + + CF$UID + 954 + + + CF$UID + 36 + + + CF$UID + 955 + + + + 329552187.177127 + {1635, 1945} + {1288, 0} + + $class + + CF$UID + 48 + + NS.keys + + + CF$UID + 109 + + + CF$UID + 110 + + + CF$UID + 111 + + + CF$UID + 112 + + + NS.objects + CF$UID 957 + + CF$UID + 958 + + + CF$UID + 36 + + + CF$UID + 959 + + + + 333490189.84004301 + {0, 1980} + {1669, 0} + + $class + + CF$UID + 48 + + NS.keys + + + CF$UID + 109 + + + CF$UID + 110 + + + CF$UID + 111 + + + CF$UID + 112 + + + NS.objects + + + CF$UID + 961 + CF$UID 962 CF$UID - 963 + 36 + + + CF$UID + 470 + + + + 333490249.24517697 + {0, 1398} + + $class + + CF$UID + 48 + + NS.keys + + + CF$UID + 155 + + + CF$UID + 156 + + + CF$UID + 157 + + + CF$UID + 158 + + + NS.objects + + + CF$UID + 964 + + + CF$UID + 965 + + + CF$UID + 36 + + + CF$UID + 470 + + + + 328568931.12116998 + {0, 226} + + $class + + CF$UID + 48 + + NS.keys + + + CF$UID + 155 + + + CF$UID + 156 + + + CF$UID + 157 + + + CF$UID + 158 + + + NS.objects + + + CF$UID + 967 CF$UID @@ -12142,8 +12752,137 @@ CF$UID - 971 + 36 + + CF$UID + 470 + + + + 328568938.20444399 + {0, 1391} + + $class + + CF$UID + 48 + + NS.keys + + + CF$UID + 155 + + + CF$UID + 156 + + + CF$UID + 157 + + + CF$UID + 158 + + + NS.objects + + + CF$UID + 970 + + + CF$UID + 968 + + + CF$UID + 36 + + + CF$UID + 748 + + + + 328627593.06353903 + + $class + + CF$UID + 48 + + NS.keys + + + CF$UID + 155 + + + CF$UID + 156 + + + CF$UID + 157 + + + CF$UID + 158 + + + NS.objects + + + CF$UID + 972 + + + CF$UID + 973 + + + CF$UID + 36 + + + CF$UID + 974 + + + + 328639720.18629599 + {0, 2587} + {6076, 0} + + $class + + CF$UID + 48 + + NS.keys + + + CF$UID + 109 + + + CF$UID + 110 + + + CF$UID + 111 + + + CF$UID + 112 + + + NS.objects + CF$UID 976 @@ -12152,21 +12891,2060 @@ CF$UID 977 + + CF$UID + 36 + + + CF$UID + 978 + + + + 333490191.01169401 + {0, 2110} + {2109, 0} + + $class + + CF$UID + 48 + + NS.keys + + + CF$UID + 155 + + + CF$UID + 156 + + + CF$UID + 157 + + + CF$UID + 158 + + + NS.objects + CF$UID 980 + + CF$UID + 981 + + + CF$UID + 36 + + + CF$UID + 982 + + + + 328568946.85565799 + {0, 1316} + {0, 1155} + + $class + + CF$UID + 48 + + NS.keys + + + CF$UID + 155 + + + CF$UID + 156 + + + CF$UID + 157 + + + CF$UID + 158 + + + NS.objects + + + CF$UID + 984 + CF$UID 985 + + CF$UID + 36 + + + CF$UID + 986 + + + + 333485333.59824401 + {0, 1235} + {1234, 0} + + $class + + CF$UID + 48 + + NS.keys + + + CF$UID + 155 + + + CF$UID + 156 + + + CF$UID + 157 + + + CF$UID + 158 + + + NS.objects + + + CF$UID + 988 + + + CF$UID + 989 + + + CF$UID + 36 + + + CF$UID + 990 + + + + 332374718.74303299 + {621, 1184} + {0, 6368} + + $class + + CF$UID + 48 + + NS.keys + + + CF$UID + 155 + + + CF$UID + 156 + + + CF$UID + 157 + + + CF$UID + 158 + + + NS.objects + + + CF$UID + 992 + + + CF$UID + 993 + + + CF$UID + 36 + + + CF$UID + 994 + + + + 328569472.30021399 + {3002, 2370} + {4212, 0} + + $class + + CF$UID + 48 + + NS.keys + + + CF$UID + 155 + + + CF$UID + 156 + + + CF$UID + 157 + + + CF$UID + 158 + + + NS.objects + + + CF$UID + 996 + + + CF$UID + 968 + + + CF$UID + 36 + + + CF$UID + 997 + + + + 332372957.14673102 + {1390, 0} + + $class + + CF$UID + 48 + + NS.keys + + + CF$UID + 109 + + + CF$UID + 110 + + + CF$UID + 111 + + + CF$UID + 112 + + + NS.objects + + + CF$UID + 999 + + + CF$UID + 1000 + + + CF$UID + 36 + + + CF$UID + 1001 + + + + 333490186.98897898 + {0, 2307} + {2202, 0} + + $class + + CF$UID + 48 + + NS.keys + + + CF$UID + 155 + + + CF$UID + 156 + + + CF$UID + 157 + + + CF$UID + 158 + + + NS.objects + + + CF$UID + 1003 + + + CF$UID + 1004 + + + CF$UID + 36 + + + CF$UID + 1005 + + + + 328635028.79369003 + {0, 1206} + {95, 22} + + $class + + CF$UID + 48 + + NS.keys + + + CF$UID + 155 + + + CF$UID + 156 + + + CF$UID + 157 + + + CF$UID + 158 + + + NS.objects + + + CF$UID + 1007 + + + CF$UID + 1008 + + + CF$UID + 36 + + + CF$UID + 1009 + + + + 328629720.49516702 + {2904, 1325} + {3197, 39} + + $class + + CF$UID + 48 + + NS.keys + + + CF$UID + 155 + + + CF$UID + 156 + + + CF$UID + 157 + + + CF$UID + 158 + + + NS.objects + + + CF$UID + 1011 + + + CF$UID + 1012 + + + CF$UID + 36 + + + CF$UID + 1013 + + + + 328569616.782251 + {0, 1572} + {1320, 0} + + $class + + CF$UID + 48 + + NS.keys + + + CF$UID + 155 + + + CF$UID + 156 + + + CF$UID + 157 + + + CF$UID + 158 + + + NS.objects + + + CF$UID + 1015 + + + CF$UID + 1012 + + + CF$UID + 36 + + + CF$UID + 470 + + + + 328639720.65704298 + + $class + + CF$UID + 48 + + NS.keys + + + CF$UID + 155 + + + CF$UID + 156 + + + CF$UID + 157 + + + CF$UID + 158 + + + NS.objects + + + CF$UID + 1017 + + + CF$UID + 1012 + + + CF$UID + 36 + + + CF$UID + 470 + + + + 328738267.94867897 + + $class + + CF$UID + 48 + + NS.keys + + + CF$UID + 155 + + + CF$UID + 156 + + + CF$UID + 157 + + + CF$UID + 158 + + + NS.objects + + + CF$UID + 1019 + + + CF$UID + 1020 + + + CF$UID + 36 + + + CF$UID + 470 + + + + 328568925.573183 + {0, 1389} + + $class + + CF$UID + 48 + + NS.keys + + + CF$UID + 155 + + + CF$UID + 156 + + + CF$UID + 157 + + + CF$UID + 158 + + + NS.objects + + + CF$UID + 1022 + + + CF$UID + 1020 + + + CF$UID + 36 + + + CF$UID + 470 + + + + 328641204.26085901 + + $class + + CF$UID + 48 + + NS.keys + + + CF$UID + 109 + + + CF$UID + 110 + + + CF$UID + 111 + + + CF$UID + 112 + + + NS.objects + + + CF$UID + 1024 + + + CF$UID + 1025 + + + CF$UID + 36 + + + CF$UID + 1026 + + + + 333490344.00552398 + {0, 1541} + {693, 0} + + $class + + CF$UID + 48 + + NS.keys + + + CF$UID + 109 + + + CF$UID + 110 + + + CF$UID + 111 + + + CF$UID + 112 + + + NS.objects + + + CF$UID + 1028 + + + CF$UID + 1029 + + + CF$UID + 36 + + + CF$UID + 1030 + + + + 333490181.51879299 + {398, 1865} + {1646, 0} + + $class + + CF$UID + 48 + + NS.keys + + + CF$UID + 155 + + + CF$UID + 156 + + + CF$UID + 157 + + + CF$UID + 158 + + + NS.objects + + + CF$UID + 1032 + + + CF$UID + 1033 + + + CF$UID + 36 + + + CF$UID + 1034 + + + + 328562784.29455298 + {0, 284} + {284, 0} + + $class + + CF$UID + 48 + + NS.keys + + + CF$UID + 155 + + + CF$UID + 156 + + + CF$UID + 157 + + + CF$UID + 158 + + + NS.objects + + + CF$UID + 1036 + + + CF$UID + 1037 + + + CF$UID + 36 + + + CF$UID + 470 + + + + 328564665.45652199 + {0, 2412} + + $class + + CF$UID + 48 + + NS.keys + + + CF$UID + 155 + + + CF$UID + 156 + + + CF$UID + 157 + + + CF$UID + 158 + + + NS.objects + + + CF$UID + 1039 + + + CF$UID + 1040 + + + CF$UID + 36 + + + CF$UID + 1041 + + + + 328631846.80683702 + {2109, 2363} + {3612, 0} + + $class + + CF$UID + 48 + + NS.keys + + + CF$UID + 155 + + + CF$UID + 156 + + + CF$UID + 157 + + + CF$UID + 158 + + + NS.objects + + + CF$UID + 1043 + + + CF$UID + 1044 + + + CF$UID + 36 + + + CF$UID + 1045 + + + + 328569441.889938 + {1898, 1930} + {3529, 0} + + $class + + CF$UID + 48 + + NS.keys + + + CF$UID + 109 + + + CF$UID + 110 + + + CF$UID + 111 + + + CF$UID + 112 + + + NS.objects + + + CF$UID + 1047 + + + CF$UID + 1048 + + + CF$UID + 36 + + + CF$UID + 1049 + + + + 333488455.17764503 + {2389, 1691} + {5204, 0} + + $class + + CF$UID + 48 + + NS.keys + + + CF$UID + 155 + + + CF$UID + 156 + + + CF$UID + 157 + + + CF$UID + 158 + + + NS.objects + + + CF$UID + 1051 + + + CF$UID + 1052 + + + CF$UID + 36 + + + CF$UID + 470 + + + + 328635033.90532798 + {8795, 2975} + + $class + + CF$UID + 48 + + NS.keys + + + CF$UID + 155 + + + CF$UID + 156 + + + CF$UID + 157 + + + CF$UID + 158 + + + NS.objects + + + CF$UID + 1054 + + + CF$UID + 1055 + + + CF$UID + 36 + + + CF$UID + 1056 + + + + 328896885.37811899 + {28134, 2142} + {33734, 0} + + $class + + CF$UID + 48 + + NS.keys + + + CF$UID + 155 + + + CF$UID + 156 + + + CF$UID + 157 + + + CF$UID + 158 + + + NS.objects + + + CF$UID + 1058 + + + CF$UID + 1059 + + + CF$UID + 36 + + + CF$UID + 470 + + + + 329552429.74822003 + {4886, 1636} + + $class + + CF$UID + 48 + + NS.keys + + + CF$UID + 155 + + + CF$UID + 156 + + + CF$UID + 157 + + + CF$UID + 158 + + + NS.objects + + + CF$UID + 1061 + + + CF$UID + 1062 + + + CF$UID + 36 + + + CF$UID + 1063 + + + + 328569459.30297899 + {1143, 2029} + {2083, 0} + + $class + + CF$UID + 48 + + NS.keys + + + CF$UID + 155 + + + CF$UID + 156 + + + CF$UID + 157 + + + CF$UID + 158 + + + NS.objects + + + CF$UID + 1065 + + + CF$UID + 1066 + + + CF$UID + 36 + + + CF$UID + 1067 + + + + 328640229.76242298 + {968, 2219} + {3178, 0} + + $class + + CF$UID + 48 + + NS.keys + + + CF$UID + 155 + + + CF$UID + 156 + + + CF$UID + 157 + + + CF$UID + 158 + + + NS.objects + + + CF$UID + 1069 + + + CF$UID + 1070 + + + CF$UID + 36 + + + CF$UID + 1071 + + + + 328629655.52122098 + {840, 908} + {1410, 6} + + $class + + CF$UID + 48 + + NS.keys + + + CF$UID + 109 + + + CF$UID + 110 + + + CF$UID + 111 + + + CF$UID + 112 + + + NS.objects + + + CF$UID + 1073 + + + CF$UID + 1074 + + + CF$UID + 36 + + + CF$UID + 1075 + + + + 333488056.16469401 + {1498, 1692} + {3002, 0} + + $class + + CF$UID + 48 + + NS.keys + + + CF$UID + 155 + + + CF$UID + 156 + + + CF$UID + 157 + + + CF$UID + 158 + + + NS.objects + + + CF$UID + 1077 + + + CF$UID + 1078 + + + CF$UID + 36 + + + CF$UID + 1079 + + + + 328568945.21344799 + {0, 2160} + {1894, 0} + + $class + + CF$UID + 48 + + NS.keys + + + CF$UID + 155 + + + CF$UID + 156 + + + CF$UID + 157 + + + CF$UID + 158 + + + NS.objects + + + CF$UID + 1081 + + + CF$UID + 1082 + + + CF$UID + 36 + + + CF$UID + 1083 + + + + 328631014.645944 + {0, 2313} + {2415, 14} + + $class + + CF$UID + 48 + + NS.keys + + + CF$UID + 155 + + + CF$UID + 156 + + + CF$UID + 157 + + + CF$UID + 158 + + + NS.objects + + + CF$UID + 1085 + + + CF$UID + 1086 + + + CF$UID + 36 + + + CF$UID + 1087 + + + + 328569476.86600798 + {1160, 2169} + {2087, 0} + + $class + + CF$UID + 48 + + NS.keys + + + CF$UID + 155 + + + CF$UID + 156 + + + CF$UID + 157 + + + CF$UID + 158 + + + NS.objects + + + CF$UID + 1089 + + + CF$UID + 1090 + + + CF$UID + 36 + + + CF$UID + 470 + + + + 328639707.23263699 + {1065, 2269} + + $class + + CF$UID + 48 + + NS.keys + + + CF$UID + 109 + + + CF$UID + 110 + + + CF$UID + 111 + + + CF$UID + 112 + + + NS.objects + + + CF$UID + 1092 + + + CF$UID + 1093 + + + CF$UID + 36 + + + CF$UID + 1094 + + + + 333488056.91049099 + {1139, 1261} + {1520, 0} + + $class + + CF$UID + 48 + + NS.keys + + + CF$UID + 155 + + + CF$UID + 156 + + + CF$UID + 157 + + + CF$UID + 158 + + + NS.objects + + + CF$UID + 1096 + + + CF$UID + 1097 + + + CF$UID + 36 + + + CF$UID + 470 + + + + 328651236.25767601 + {0, 1902} + + $class + + CF$UID + 48 + + NS.keys + + + CF$UID + 109 + + + CF$UID + 110 + + + CF$UID + 111 + + + CF$UID + 112 + + + NS.objects + + + CF$UID + 1099 + + + CF$UID + 1100 + + + CF$UID + 36 + + + CF$UID + 1101 + + + + 333490185.731457 + {0, 2191} + {2382, 0} + + $class + + CF$UID + 48 + + NS.keys + + + CF$UID + 109 + + + CF$UID + 110 + + + CF$UID + 111 + + + CF$UID + 112 + + + NS.objects + + + CF$UID + 1103 + + + CF$UID + 1104 + + + CF$UID + 36 + + + CF$UID + 470 + + + + 333490158.02233797 + {1511, 1822} + + $class + + CF$UID + 48 + + NS.keys + + + CF$UID + 155 + + + CF$UID + 156 + + + CF$UID + 157 + + + CF$UID + 158 + + + NS.objects + + + CF$UID + 1106 + + + CF$UID + 1107 + + + CF$UID + 36 + + + CF$UID + 892 + + + + 328568954.44763798 + {0, 1770} + + $class + + CF$UID + 48 + + NS.keys + + + CF$UID + 155 + + + CF$UID + 156 + + + CF$UID + 157 + + + CF$UID + 158 + + + NS.objects + + + CF$UID + 1109 + + + CF$UID + 1110 + + + CF$UID + 36 + + + CF$UID + 1111 + + + + 328634321.92628098 + {0, 1882} + {1836, 41} + + $class + + CF$UID + 48 + + NS.keys + + + CF$UID + 155 + + + CF$UID + 156 + + + CF$UID + 157 + + + CF$UID + 158 + + + NS.objects + + + CF$UID + 1113 + + + CF$UID + 1110 + + + CF$UID + 36 + + + CF$UID + 470 + + + + 328637263.87395501 + + $class + + CF$UID + 48 + + NS.keys + + + CF$UID + 109 + + + CF$UID + 110 + + + CF$UID + 111 + + + CF$UID + 112 + + + NS.objects + + + CF$UID + 1115 + + + CF$UID + 1116 + + + CF$UID + 36 + + + CF$UID + 1117 + + + + 333490186.41433001 + {0, 1887} + {1257, 0} + + $class + + CF$UID + 48 + + NS.keys + + + CF$UID + 155 + + + CF$UID + 156 + + + CF$UID + 157 + + + CF$UID + 158 + + + NS.objects + + + CF$UID + 1119 + + + CF$UID + 1120 + + + CF$UID + 36 + + + CF$UID + 1121 + + + + 329552386.201837 + {3092, 2044} + {4235, 6} + + $class + + CF$UID + 48 + + NS.keys + + + CF$UID + 1123 + + + CF$UID + 1125 + + + CF$UID + 1127 + + + CF$UID + 1129 + + + CF$UID + 1131 + + + CF$UID + 1133 + + + CF$UID + 1135 + + + CF$UID + 1137 + + + CF$UID + 1139 + + + CF$UID + 1141 + + + CF$UID + 1143 + + + CF$UID + 1145 + + + CF$UID + 1147 + + + CF$UID + 1149 + + + CF$UID + 1151 + + + NS.objects + + + CF$UID + 1153 + + + CF$UID + 1160 + + + CF$UID + 1167 + + + CF$UID + 1172 + + + CF$UID + 1177 + + + CF$UID + 1182 + + + CF$UID + 1187 + + + CF$UID + 1192 + + + CF$UID + 1193 + + + CF$UID + 1198 + + + CF$UID + 1201 + + + CF$UID + 1204 + + + CF$UID + 1205 + + + CF$UID + 1208 + + + CF$UID + 1213 + $class CF$UID - 99 + 119 NS.base @@ -12176,7 +14954,25 @@ NS.relative CF$UID - 909 + 1124 + + + x-xcode-log://2550D4E8-EB03-4E16-B1AC-3F5AD67FF86E + + $class + + CF$UID + 119 + + NS.base + + CF$UID + 0 + + NS.relative + + CF$UID + 1126 x-xcode-log://03813013-719D-479A-8136-7272BFDF4A69 @@ -12184,7 +14980,7 @@ $class CF$UID - 99 + 119 NS.base @@ -12194,7 +14990,7 @@ NS.relative CF$UID - 911 + 1128 x-xcode-log://A80D8CBF-3921-4FD6-9A91-F26DA3430A17 @@ -12202,7 +14998,7 @@ $class CF$UID - 99 + 119 NS.base @@ -12212,7 +15008,7 @@ NS.relative CF$UID - 913 + 1130 x-xcode-log://60DD6657-65FC-4D91-BD31-231DAA49339D @@ -12220,7 +15016,7 @@ $class CF$UID - 99 + 119 NS.base @@ -12230,7 +15026,7 @@ NS.relative CF$UID - 915 + 1132 x-xcode-log://DC803908-D7CE-42AE-AC67-87C6CD0918EF @@ -12238,7 +15034,7 @@ $class CF$UID - 99 + 119 NS.base @@ -12248,7 +15044,7 @@ NS.relative CF$UID - 917 + 1134 x-xcode-log://4A9EC972-4209-4C15-B25D-2EAA5FD8FF68 @@ -12256,7 +15052,7 @@ $class CF$UID - 99 + 119 NS.base @@ -12266,14 +15062,15 @@ NS.relative CF$UID - 89 + 1136 + x-xcode-log://140885A1-2936-4C3F-8492-0E7E9F69D924 $class CF$UID - 99 + 119 NS.base @@ -12283,7 +15080,25 @@ NS.relative CF$UID - 920 + 1138 + + + x-xcode-log://CEB352F9-1C85-4BD4-BA9F-87C4EFFED35A + + $class + + CF$UID + 119 + + NS.base + + CF$UID + 0 + + NS.relative + + CF$UID + 1140 x-xcode-log://E5CA60D6-2D4A-43DF-82C4-144BDA826E3F @@ -12291,7 +15106,7 @@ $class CF$UID - 99 + 119 NS.base @@ -12301,7 +15116,7 @@ NS.relative CF$UID - 922 + 1142 x-xcode-log://172F2581-B75E-46AE-977B-15FBF67D56DF @@ -12309,7 +15124,7 @@ $class CF$UID - 99 + 119 NS.base @@ -12319,7 +15134,7 @@ NS.relative CF$UID - 924 + 1144 x-xcode-log://AC42E47F-2C7F-419E-9081-940F38443D2C @@ -12327,7 +15142,7 @@ $class CF$UID - 99 + 119 NS.base @@ -12337,7 +15152,7 @@ NS.relative CF$UID - 926 + 1146 x-xcode-log://32AE9614-23BA-4F4F-A769-69E3EE7FEAE7 @@ -12345,7 +15160,7 @@ $class CF$UID - 99 + 119 NS.base @@ -12355,7 +15170,7 @@ NS.relative CF$UID - 928 + 1148 x-xcode-log://1A2CE66F-E44B-4EE6-9253-3CF03B039DB6 @@ -12363,7 +15178,7 @@ $class CF$UID - 99 + 119 NS.base @@ -12373,7 +15188,7 @@ NS.relative CF$UID - 930 + 1150 x-xcode-log://C6B8D3DD-C212-4E7D-BBB2-F4EFFBB59B9A @@ -12381,7 +15196,7 @@ $class CF$UID - 99 + 119 NS.base @@ -12391,7 +15206,7 @@ NS.relative CF$UID - 932 + 1152 x-xcode-log://023ABC51-7C79-476F-B5F8-63C20F2CB931 @@ -12399,20 +15214,20 @@ $class CF$UID - 43 + 48 NS.keys CF$UID - 934 + 1154 NS.objects CF$UID - 935 + 1155 @@ -12421,13 +15236,13 @@ $class CF$UID - 86 + 102 NS.objects CF$UID - 936 + 1156 @@ -12435,19 +15250,19 @@ $class CF$UID - 941 + 1159 documentURL CF$UID - 909 + 1124 expandTranscript indexPath CF$UID - 937 + 1157 timestamp @@ -12459,36 +15274,12 @@ $class CF$UID - 940 - - NSIndexPathData - - CF$UID - 938 + 1158 NSIndexPathLength - 2 - - - $class - - CF$UID - 939 - - NS.data - - ABM= - - - - $classes - - NSMutableData - NSData - NSObject - - $classname - NSMutableData + 1 + NSIndexPathValue + 0 $classes @@ -12513,34 +15304,35 @@ $class CF$UID - 43 + 48 NS.keys CF$UID - 934 + 1161 NS.objects CF$UID - 943 + 1162 + SelectedDocumentLocations $class CF$UID - 86 + 102 NS.objects CF$UID - 944 + 1163 @@ -12548,19 +15340,19 @@ $class CF$UID - 941 + 1159 documentURL CF$UID - 911 + 1126 expandTranscript indexPath CF$UID - 945 + 1164 timestamp @@ -12572,12 +15364,12 @@ $class CF$UID - 940 + 1158 NSIndexPathData CF$UID - 946 + 1165 NSIndexPathLength 2 @@ -12586,7 +15378,101 @@ $class CF$UID - 939 + 1166 + + NS.data + + ABM= + + + + $classes + + NSMutableData + NSData + NSObject + + $classname + NSMutableData + + + $class + + CF$UID + 48 + + NS.keys + + + CF$UID + 1161 + + + NS.objects + + + CF$UID + 1168 + + + + + $class + + CF$UID + 102 + + NS.objects + + + CF$UID + 1169 + + + + + $class + + CF$UID + 1159 + + documentURL + + CF$UID + 1128 + + expandTranscript + + indexPath + + CF$UID + 1170 + + timestamp + + CF$UID + 0 + + + + $class + + CF$UID + 1158 + + NSIndexPathData + + CF$UID + 1171 + + NSIndexPathLength + 2 + + + $class + + CF$UID + 1166 NS.data @@ -12597,20 +15483,20 @@ $class CF$UID - 43 + 48 NS.keys CF$UID - 93 + 1161 NS.objects CF$UID - 948 + 1173 @@ -12618,13 +15504,13 @@ $class CF$UID - 86 + 102 NS.objects CF$UID - 949 + 1174 @@ -12632,19 +15518,19 @@ $class CF$UID - 941 + 1159 documentURL CF$UID - 913 + 1130 expandTranscript indexPath CF$UID - 950 + 1175 timestamp @@ -12656,12 +15542,12 @@ $class CF$UID - 940 + 1158 NSIndexPathData CF$UID - 951 + 1176 NSIndexPathLength 2 @@ -12670,7 +15556,7 @@ $class CF$UID - 939 + 1166 NS.data @@ -12681,20 +15567,20 @@ $class CF$UID - 43 + 48 NS.keys CF$UID - 934 + 1161 NS.objects CF$UID - 953 + 1178 @@ -12702,13 +15588,13 @@ $class CF$UID - 86 + 102 NS.objects CF$UID - 954 + 1179 @@ -12716,19 +15602,19 @@ $class CF$UID - 941 + 1159 documentURL CF$UID - 915 + 1132 expandTranscript indexPath CF$UID - 955 + 1180 timestamp @@ -12740,12 +15626,12 @@ $class CF$UID - 940 + 1158 NSIndexPathData CF$UID - 956 + 1181 NSIndexPathLength 2 @@ -12754,7 +15640,7 @@ $class CF$UID - 939 + 1166 NS.data @@ -12765,20 +15651,20 @@ $class CF$UID - 43 + 48 NS.keys CF$UID - 934 + 1161 NS.objects CF$UID - 958 + 1183 @@ -12786,13 +15672,13 @@ $class CF$UID - 86 + 102 NS.objects CF$UID - 959 + 1184 @@ -12800,19 +15686,19 @@ $class CF$UID - 941 + 1159 documentURL CF$UID - 917 + 1134 expandTranscript indexPath CF$UID - 960 + 1185 timestamp @@ -12824,12 +15710,12 @@ $class CF$UID - 940 + 1158 NSIndexPathData CF$UID - 961 + 1186 NSIndexPathLength 2 @@ -12838,7 +15724,7 @@ $class CF$UID - 939 + 1166 NS.data @@ -12849,20 +15735,20 @@ $class CF$UID - 43 + 48 NS.keys CF$UID - 93 + 1161 NS.objects CF$UID - 94 + 1188 @@ -12870,34 +15756,13 @@ $class CF$UID - 43 - - NS.keys - - - CF$UID - 934 - - - NS.objects - - - CF$UID - 964 - - - - - $class - - CF$UID - 86 + 102 NS.objects CF$UID - 965 + 1189 @@ -12905,19 +15770,19 @@ $class CF$UID - 941 + 1159 documentURL CF$UID - 920 + 1136 expandTranscript indexPath CF$UID - 966 + 1190 timestamp @@ -12929,12 +15794,12 @@ $class CF$UID - 940 + 1158 NSIndexPathData CF$UID - 967 + 1191 NSIndexPathLength 2 @@ -12943,150 +15808,7 @@ $class CF$UID - 939 - - NS.data - - AAg= - - - - $class - - CF$UID - 43 - - NS.keys - - - CF$UID - 934 - - - NS.objects - - - CF$UID - 969 - - - - - $class - - CF$UID - 86 - - NS.objects - - - CF$UID - 970 - - - - - $class - - CF$UID - 941 - - documentURL - - CF$UID - 922 - - expandTranscript - - indexPath - - CF$UID - 937 - - timestamp - - CF$UID - 0 - - - - $class - - CF$UID - 43 - - NS.keys - - - CF$UID - 93 - - - NS.objects - - - CF$UID - 972 - - - - - $class - - CF$UID - 86 - - NS.objects - - - CF$UID - 973 - - - - - $class - - CF$UID - 941 - - documentURL - - CF$UID - 924 - - expandTranscript - - indexPath - - CF$UID - 974 - - timestamp - - CF$UID - 0 - - - - $class - - CF$UID - 940 - - NSIndexPathData - - CF$UID - 975 - - NSIndexPathLength - 2 - - - $class - - CF$UID - 939 + 1166 NS.data @@ -13097,20 +15819,20 @@ $class CF$UID - 43 + 48 NS.keys CF$UID - 934 + 1161 NS.objects CF$UID - 359 + 422 @@ -13118,20 +15840,20 @@ $class CF$UID - 43 + 48 NS.keys CF$UID - 93 + 1161 NS.objects CF$UID - 978 + 1194 @@ -13139,13 +15861,13 @@ $class CF$UID - 86 + 102 NS.objects CF$UID - 979 + 1195 @@ -13153,19 +15875,19 @@ $class CF$UID - 941 + 1159 documentURL CF$UID - 928 + 1140 expandTranscript indexPath CF$UID - 950 + 1196 timestamp @@ -13177,71 +15899,294 @@ $class CF$UID - 43 - - NS.keys - - - CF$UID - 934 - - - NS.objects - - - CF$UID - 981 - - - - - $class - - CF$UID - 86 - - NS.objects - - - CF$UID - 982 - - - - - $class - - CF$UID - 941 - - documentURL - - CF$UID - 930 - - expandTranscript - - indexPath - - CF$UID - 983 - - timestamp - - CF$UID - 0 - - - - $class - - CF$UID - 940 + 1158 NSIndexPathData CF$UID - 984 + 1197 + + NSIndexPathLength + 2 + + + $class + + CF$UID + 1166 + + NS.data + + AAg= + + + + $class + + CF$UID + 48 + + NS.keys + + + CF$UID + 1161 + + + NS.objects + + + CF$UID + 1199 + + + + + $class + + CF$UID + 102 + + NS.objects + + + CF$UID + 1200 + + + + + $class + + CF$UID + 1159 + + documentURL + + CF$UID + 1142 + + expandTranscript + + indexPath + + CF$UID + 1164 + + timestamp + + CF$UID + 0 + + + + $class + + CF$UID + 48 + + NS.keys + + + CF$UID + 1161 + + + NS.objects + + + CF$UID + 1202 + + + + + $class + + CF$UID + 102 + + NS.objects + + + CF$UID + 1203 + + + + + $class + + CF$UID + 1159 + + documentURL + + CF$UID + 1144 + + expandTranscript + + indexPath + + CF$UID + 1190 + + timestamp + + CF$UID + 0 + + + + $class + + CF$UID + 48 + + NS.keys + + + CF$UID + 1161 + + + NS.objects + + + CF$UID + 422 + + + + + $class + + CF$UID + 48 + + NS.keys + + + CF$UID + 1161 + + + NS.objects + + + CF$UID + 1206 + + + + + $class + + CF$UID + 102 + + NS.objects + + + CF$UID + 1207 + + + + + $class + + CF$UID + 1159 + + documentURL + + CF$UID + 1148 + + expandTranscript + + indexPath + + CF$UID + 1175 + + timestamp + + CF$UID + 0 + + + + $class + + CF$UID + 48 + + NS.keys + + + CF$UID + 1161 + + + NS.objects + + + CF$UID + 1209 + + + + + $class + + CF$UID + 102 + + NS.objects + + + CF$UID + 1210 + + + + + $class + + CF$UID + 1159 + + documentURL + + CF$UID + 1150 + + expandTranscript + + indexPath + + CF$UID + 1211 + + timestamp + + CF$UID + 0 + + + + $class + + CF$UID + 1158 + + NSIndexPathData + + CF$UID + 1212 NSIndexPathLength 3 @@ -13250,7 +16195,7 @@ $class CF$UID - 939 + 1166 NS.data @@ -13261,20 +16206,20 @@ $class CF$UID - 43 + 48 NS.keys CF$UID - 934 + 1161 NS.objects CF$UID - 986 + 1214 @@ -13282,13 +16227,13 @@ $class CF$UID - 86 + 102 NS.objects CF$UID - 987 + 1215 @@ -13296,19 +16241,19 @@ $class CF$UID - 941 + 1159 documentURL CF$UID - 932 + 1152 expandTranscript indexPath CF$UID - 988 + 1216 timestamp @@ -13320,12 +16265,12 @@ $class CF$UID - 940 + 1158 NSIndexPathData CF$UID - 989 + 1217 NSIndexPathLength 2 @@ -13334,7 +16279,7 @@ $class CF$UID - 939 + 1166 NS.data @@ -13345,20 +16290,20 @@ $class CF$UID - 43 + 48 NS.keys CF$UID - 556 + 617 NS.objects CF$UID - 991 + 1219 @@ -13366,36 +16311,36 @@ $class CF$UID - 43 + 48 NS.keys + + CF$UID + 158 + CF$UID 156 CF$UID - 154 - - - CF$UID - 153 + 155 NS.objects CF$UID - 160 + 470 CF$UID - 874 + 846 CF$UID - 992 + 1220 @@ -13404,28 +16349,28 @@ $class CF$UID - 43 + 48 NS.keys CF$UID - 994 + 1222 CF$UID - 995 + 1223 NS.objects CF$UID - 996 + 1224 CF$UID - 997 + 1225 @@ -13437,20 +16382,20 @@ $class CF$UID - 43 + 48 NS.keys CF$UID - 999 + 1227 NS.objects CF$UID - 1000 + 1228 @@ -13460,36 +16405,36 @@ $class CF$UID - 43 + 48 NS.keys CF$UID - 1002 + 1230 CF$UID - 1003 + 1231 CF$UID - 1004 + 1232 NS.objects CF$UID - 1005 + 1233 CF$UID - 1030 + 1258 CF$UID - 1012 + 348 @@ -13500,25 +16445,25 @@ $class CF$UID - 56 + 61 NS.objects CF$UID - 1006 + 1234 CF$UID - 1013 + 1241 CF$UID - 1017 + 1245 CF$UID - 1021 + 1249 @@ -13526,36 +16471,36 @@ $class CF$UID - 43 + 48 NS.keys CF$UID - 1007 + 1235 CF$UID - 1008 + 1236 CF$UID - 1009 + 1237 NS.objects CF$UID - 1010 + 1238 CF$UID - 1011 + 1239 CF$UID - 1012 + 1240 @@ -13569,36 +16514,36 @@ $class CF$UID - 43 + 48 NS.keys CF$UID - 1007 + 1235 CF$UID - 1008 + 1236 CF$UID - 1009 + 1237 NS.objects CF$UID - 1014 + 1242 CF$UID - 1015 + 1243 CF$UID - 1016 + 1244 @@ -13609,36 +16554,36 @@ $class CF$UID - 43 + 48 NS.keys CF$UID - 1007 + 1235 CF$UID - 1008 + 1236 CF$UID - 1009 + 1237 NS.objects CF$UID - 1018 + 1246 CF$UID - 1019 + 1247 CF$UID - 1020 + 1248 @@ -13648,7 +16593,7 @@ $class CF$UID - 939 + 1166 NS.data @@ -13674,60 +16619,60 @@ $class CF$UID - 43 + 48 NS.keys CF$UID - 1007 + 1235 CF$UID - 1022 + 1250 CF$UID - 1023 + 1251 CF$UID - 1009 + 1237 CF$UID - 1024 + 1252 CF$UID - 1025 + 1253 NS.objects CF$UID - 1026 + 1254 CF$UID - 39 + 44 CF$UID - 1027 + 1255 CF$UID - 1029 + 1257 CF$UID - 39 + 44 CF$UID - 39 + 44 @@ -13740,10 +16685,10 @@ $class CF$UID - 1028 + 1256 NS.time - 328738341.15312898 + 333490339.004237 $classes @@ -13755,12 +16700,12 @@ NSDate Today at 15:12 - 106 + 234 $class CF$UID - 56 + 61 NS.objects @@ -13774,49 +16719,49 @@ $class CF$UID - 56 + 61 NS.objects CF$UID - 918 + 1261 CF$UID - 1033 + 1263 CF$UID - 927 + 1265 CF$UID - 1035 + 1267 CF$UID - 923 + 1269 CF$UID - 912 + 1271 CF$UID - 1037 + 1273 CF$UID - 1039 + 1275 CF$UID - 1041 + 1277 CF$UID - 1043 + 1279 @@ -13824,7 +16769,7 @@ $class CF$UID - 99 + 119 NS.base @@ -13834,15 +16779,15 @@ NS.relative CF$UID - 1034 + 1262 - file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFNetworking/AFImageRequestOperation.m + file://localhost/Users/mattt/Code/Objective-C/AFNetworking/Example/UIImageView+AFNetworking.h $class CF$UID - 99 + 119 NS.base @@ -13852,15 +16797,15 @@ NS.relative CF$UID - 1036 + 1264 - file://localhost/Users/mattt/Code/Objective-C/AFNetworking/Example/Classes/AFImageRequest.m + file://localhost/Users/mattt/Code/Objective-C/AFNetworking/Example/UIImageView+AFNetworking.m $class CF$UID - 99 + 119 NS.base @@ -13870,15 +16815,15 @@ NS.relative CF$UID - 1038 + 1266 - file://localhost/Users/mattt/Code/Objective-C/AFNetworking/Example/AppDelegate.m + file://localhost/Users/mattt/Code/Objective-C/AFNetworking/Example/UIImage+AFNetworking.h $class CF$UID - 99 + 119 NS.base @@ -13888,15 +16833,15 @@ NS.relative CF$UID - 1040 + 1268 - file://localhost/Users/mattt/Code/Objective-C/AFNetworking/AFNetworking/AFRestClient.m + file://localhost/Users/mattt/Code/Objective-C/AFNetworking/Example/AFNetworkActivityIndicatorManager.m $class CF$UID - 99 + 119 NS.base @@ -13906,15 +16851,15 @@ NS.relative CF$UID - 1042 + 1270 - file://localhost/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSPathUtilities.h + file://localhost/Users/mattt/Code/Objective-C/AFNetworking/Example/AFNetworkActivityIndicatorManager.h $class CF$UID - 99 + 119 NS.base @@ -13924,10 +16869,82 @@ NS.relative CF$UID - 1044 + 1272 - file://localhost/Users/mattt/Code/Objective-C/AFNetworking/Example/Classes/AFGowallaAPIClient.m + file://localhost/Users/mattt/Code/Objective-C/AFNetworking/Example/AFImageCache.h + + $class + + CF$UID + 119 + + NS.base + + CF$UID + 0 + + NS.relative + + CF$UID + 1274 + + + file://localhost/Users/mattt/Code/Objective-C/AFNetworking/Example/AFImageCache.m + + $class + + CF$UID + 119 + + NS.base + + CF$UID + 0 + + NS.relative + + CF$UID + 1276 + + + file://localhost/Users/mattt/Code/Objective-C/AFNetworking/Example/AFImageRequestOperation.h + + $class + + CF$UID + 119 + + NS.base + + CF$UID + 0 + + NS.relative + + CF$UID + 1278 + + + file://localhost/Users/mattt/Code/Objective-C/AFNetworking/Example/AFImageRequestOperation.m + + $class + + CF$UID + 119 + + NS.base + + CF$UID + 0 + + NS.relative + + CF$UID + 1280 + + + file://localhost/Users/mattt/Code/Objective-C/AFNetworking/Example/AFRestClient.m $top diff --git a/Example/AFNetworking Example.xcodeproj/xcuserdata/mattt.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist b/Example/AFNetworking Example.xcodeproj/xcuserdata/mattt.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist index 05301bc..245631b 100644 --- a/Example/AFNetworking Example.xcodeproj/xcuserdata/mattt.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist +++ b/Example/AFNetworking Example.xcodeproj/xcuserdata/mattt.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist @@ -2,4 +2,20 @@ + + + + diff --git a/AFNetworking/AFRestClient.h b/Example/AFRestClient.h similarity index 64% rename from AFNetworking/AFRestClient.h rename to Example/AFRestClient.h index f0a4e63..d586160 100644 --- a/AFNetworking/AFRestClient.h +++ b/Example/AFRestClient.h @@ -21,27 +21,37 @@ // THE SOFTWARE. #import -#import "AFHTTPOperation.h" +#import "AFHTTPRequestOperation.h" @protocol AFRestClient -@required + (NSURL *)baseURL; -- (NSMutableURLRequest *)requestWithMethod:(NSString *)method path:(NSString *)path parameters:(NSDictionary *)parameters; @end -@interface AFRestClient : NSObject +@interface AFRestClient : NSObject { +@protected + NSMutableDictionary *_defaultHeaders; + NSOperationQueue *_operationQueue; +} + - (NSString *)defaultValueForHeader:(NSString *)header; - (void)setDefaultHeader:(NSString *)header value:(NSString *)value; - (void)setAuthorizationHeaderWithToken:(NSString *)token; - (void)clearAuthorizationHeader; -- (void)getPath:(NSString *)path parameters:(NSDictionary *)parameters callback:(AFHTTPOperationCallback *)callback; -- (void)postPath:(NSString *)path parameters:(NSDictionary *)parameters callback:(AFHTTPOperationCallback *)callback; -- (void)putPath:(NSString *)path parameters:(NSDictionary *)parameters callback:(AFHTTPOperationCallback *)callback; -- (void)deletePath:(NSString *)path parameters:(NSDictionary *)parameters callback:(AFHTTPOperationCallback *)callback; +- (NSMutableURLRequest *)requestWithMethod:(NSString *)method path:(NSString *)path parameters:(NSDictionary *)parameters; +- (void)enqueueHTTPOperationWithRequest:(NSURLRequest *)request success:(void (^)(NSDictionary *response))success failure:(void (^)(NSError *error))failure; -- (void)enqueueHTTPOperationWithRequest:(NSURLRequest *)request callback:(AFHTTPOperationCallback *)callback; -- (void)enqueueHTTPOperation:(AFHTTPOperation *)operation; +- (void)getPath:(NSString *)path parameters:(NSDictionary *)parameters success:(void (^)(NSDictionary *response))success; +- (void)getPath:(NSString *)path parameters:(NSDictionary *)parameters success:(void (^)(NSDictionary *response))success failure:(void (^)(NSError *error))failure; + +- (void)postPath:(NSString *)path parameters:(NSDictionary *)parameters success:(void (^)(NSDictionary *response))success; +- (void)postPath:(NSString *)path parameters:(NSDictionary *)parameters success:(void (^)(NSDictionary *response))success failure:(void (^)(NSError *error))failure; + +- (void)putPath:(NSString *)path parameters:(NSDictionary *)parameters success:(void (^)(NSDictionary *response))success; +- (void)putPath:(NSString *)path parameters:(NSDictionary *)parameters success:(void (^)(NSDictionary *response))success failure:(void (^)(NSError *error))failure; + +- (void)deletePath:(NSString *)path parameters:(NSDictionary *)parameters success:(void (^)(NSDictionary *response))success; +- (void)deletePath:(NSString *)path parameters:(NSDictionary *)parameters success:(void (^)(NSDictionary *response))success failure:(void (^)(NSError *error))failure; @end #pragma mark - NSString + AFRestClient diff --git a/AFNetworking/AFRestClient.m b/Example/AFRestClient.m similarity index 65% rename from AFNetworking/AFRestClient.m rename to Example/AFRestClient.m index 209477b..4004df9 100644 --- a/AFNetworking/AFRestClient.m +++ b/Example/AFRestClient.m @@ -21,13 +21,15 @@ // THE SOFTWARE. #import "AFRestClient.h" -#import "AFHTTPOperation.h" +#import "AFJSONRequestOperation.h" static NSStringEncoding const kAFRestClientStringEncoding = NSUTF8StringEncoding; @interface AFRestClient () @property (readwrite, nonatomic, retain) NSMutableDictionary *defaultHeaders; @property (readwrite, nonatomic, retain) NSOperationQueue *operationQueue; + +- (void)enqueueHTTPOperationWithRequest:(NSURLRequest *)request success:(void (^)(NSDictionary *response))success failure:(void (^)(NSError *error))failure; @end @implementation AFRestClient @@ -78,36 +80,6 @@ static NSStringEncoding const kAFRestClientStringEncoding = NSUTF8StringEncoding return nil; } -- (NSMutableURLRequest *)requestWithMethod:(NSString *)method path:(NSString *)path parameters:(NSDictionary *)parameters { - NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease]; - NSMutableDictionary *headers = [NSMutableDictionary dictionaryWithDictionary:_defaultHeaders]; - NSURL *url = nil; - - NSMutableArray *mutableParameterComponents = [NSMutableArray array]; - for (id key in [parameters allKeys]) { - NSString *component = [NSString stringWithFormat:@"%@=%@", [key urlEncodedStringWithEncoding:kAFRestClientStringEncoding], [[parameters valueForKey:key] urlEncodedStringWithEncoding:kAFRestClientStringEncoding]]; - [mutableParameterComponents addObject:component]; - } - NSString *queryString = [mutableParameterComponents componentsJoinedByString:@"&"]; - - if ([method isEqualToString:@"GET"]) { - path = [path stringByAppendingFormat:[path rangeOfString:@"?"].location == NSNotFound ? @"?%@" : @"&%@", queryString]; - url = [NSURL URLWithString:path relativeToURL:[[self class] baseURL]]; - } else { - url = [NSURL URLWithString:path relativeToURL:[[self class] baseURL]]; - NSString *charset = (NSString *)CFStringConvertEncodingToIANACharSetName(CFStringConvertNSStringEncodingToEncoding(kAFRestClientStringEncoding)); - [headers setObject:[NSString stringWithFormat:@"application/x-www-form-urlencoded; charset=%@", charset] forKey:@"Content-Type"]; - [request setHTTPBody:[queryString dataUsingEncoding:NSUTF8StringEncoding]]; - } - - [request setURL:url]; - [request setHTTPMethod:method]; - [request setHTTPShouldHandleCookies:NO]; - [request setAllHTTPHeaderFields:headers]; - - return request; -} - - (NSString *)defaultValueForHeader:(NSString *)header { return [self.defaultHeaders valueForKey:header]; } @@ -124,42 +96,81 @@ static NSStringEncoding const kAFRestClientStringEncoding = NSUTF8StringEncoding [self.defaultHeaders removeObjectForKey:@"Authorization"]; } - #pragma mark - -- (void)getPath:(NSString *)path parameters:(NSDictionary *)parameters callback:(AFHTTPOperationCallback *)callback { - NSURLRequest *request = [self requestWithMethod:@"GET" path:path parameters:parameters]; - [self enqueueHTTPOperationWithRequest:request callback:callback]; +- (NSMutableURLRequest *)requestWithMethod:(NSString *)method path:(NSString *)path parameters:(NSDictionary *)parameters { + NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease]; + NSMutableDictionary *headers = [NSMutableDictionary dictionaryWithDictionary:self.defaultHeaders]; + NSURL *url = [NSURL URLWithString:path relativeToURL:[[self class] baseURL]]; + + if (parameters) { + NSMutableArray *mutableParameterComponents = [NSMutableArray array]; + for (id key in [parameters allKeys]) { + NSString *component = [NSString stringWithFormat:@"%@=%@", [key urlEncodedStringWithEncoding:kAFRestClientStringEncoding], [[parameters valueForKey:key] urlEncodedStringWithEncoding:kAFRestClientStringEncoding]]; + [mutableParameterComponents addObject:component]; + } + NSString *queryString = [mutableParameterComponents componentsJoinedByString:@"&"]; + + if ([method isEqualToString:@"GET"]) { + url = [NSURL URLWithString:[[url absoluteString] stringByAppendingFormat:[path rangeOfString:@"?"].location == NSNotFound ? @"?%@" : @"&%@", queryString]]; + } else { + NSString *charset = (NSString *)CFStringConvertEncodingToIANACharSetName(CFStringConvertNSStringEncodingToEncoding(kAFRestClientStringEncoding)); + [headers setObject:[NSString stringWithFormat:@"application/x-www-form-urlencoded; charset=%@", charset] forKey:@"Content-Type"]; + [request setHTTPBody:[queryString dataUsingEncoding:NSUTF8StringEncoding]]; + } + } + + [request setURL:url]; + [request setHTTPMethod:method]; + [request setHTTPShouldHandleCookies:NO]; + [request setAllHTTPHeaderFields:headers]; + + return request; } -- (void)postPath:(NSString *)path parameters:(NSDictionary *)parameters callback:(AFHTTPOperationCallback *)callback { - NSURLRequest *request = [self requestWithMethod:@"POST" path:path parameters:parameters]; - [self enqueueHTTPOperationWithRequest:request callback:callback]; -} - -- (void)putPath:(NSString *)path parameters:(NSDictionary *)parameters callback:(AFHTTPOperationCallback *)callback { - NSURLRequest *request = [self requestWithMethod:@"PUT" path:path parameters:parameters]; - [self enqueueHTTPOperationWithRequest:request callback:callback]; -} - -- (void)deletePath:(NSString *)path parameters:(NSDictionary *)parameters callback:(AFHTTPOperationCallback *)callback { - NSURLRequest *request = [self requestWithMethod:@"DELETE" path:path parameters:parameters]; - [self enqueueHTTPOperationWithRequest:request callback:callback]; -} - -#pragma mark - - -- (void)enqueueHTTPOperationWithRequest:(NSURLRequest *)request callback:(AFHTTPOperationCallback *)callback { +- (void)enqueueHTTPOperationWithRequest:(NSURLRequest *)request success:(void (^)(NSDictionary *response))success failure:(void (^)(NSError *error))failure { if ([request URL] == nil || [[request URL] isEqual:[NSNull null]]) { return; } - - AFHTTPOperation *operation = [[[AFHTTPOperation alloc] initWithRequest:request callback:callback] autorelease]; - [self enqueueHTTPOperation:operation]; + + AFHTTPRequestOperation *operation = [AFJSONRequestOperation operationWithRequest:request success:success failure:failure]; + [self.operationQueue addOperation:operation]; } -- (void)enqueueHTTPOperation:(AFHTTPOperation *)operation { - [self.operationQueue addOperation:operation]; +- (void)getPath:(NSString *)path parameters:(NSDictionary *)parameters success:(void (^)(NSDictionary *))success { + [self getPath:path parameters:parameters success:success failure:nil]; +} + +- (void)getPath:(NSString *)path parameters:(NSDictionary *)parameters success:(void (^)(NSDictionary *))success failure:(void (^)(NSError *error))failure { + NSURLRequest *request = [self requestWithMethod:@"GET" path:path parameters:parameters]; + [self enqueueHTTPOperationWithRequest:request success:success failure:failure]; +} + +- (void)postPath:(NSString *)path parameters:(NSDictionary *)parameters success:(void (^)(NSDictionary *))success { + [self postPath:path parameters:parameters success:success failure:nil]; +} + +- (void)postPath:(NSString *)path parameters:(NSDictionary *)parameters success:(void (^)(NSDictionary *))success failure:(void (^)(NSError *error))failure { + NSURLRequest *request = [self requestWithMethod:@"POST" path:path parameters:parameters]; + [self enqueueHTTPOperationWithRequest:request success:success failure:failure]; +} + +- (void)putPath:(NSString *)path parameters:(NSDictionary *)parameters success:(void (^)(NSDictionary *))success { + [self putPath:path parameters:parameters success:success failure:nil]; +} + +- (void)putPath:(NSString *)path parameters:(NSDictionary *)parameters success:(void (^)(NSDictionary *))success failure:(void (^)(NSError *error))failure { + NSURLRequest *request = [self requestWithMethod:@"PUT" path:path parameters:parameters]; + [self enqueueHTTPOperationWithRequest:request success:success failure:failure]; +} + +- (void)deletePath:(NSString *)path parameters:(NSDictionary *)parameters success:(void (^)(NSDictionary *))success { + [self deletePath:path parameters:parameters success:success failure:nil]; +} + +- (void)deletePath:(NSString *)path parameters:(NSDictionary *)parameters success:(void (^)(NSDictionary *))success failure:(void (^)(NSError *error))failure { + NSURLRequest *request = [self requestWithMethod:@"DELETE" path:path parameters:parameters]; + [self enqueueHTTPOperationWithRequest:request success:success failure:failure]; } @end diff --git a/Example/Classes/AFImageRequest.m b/Example/Classes/AFImageRequest.m deleted file mode 100644 index f025788..0000000 --- a/Example/Classes/AFImageRequest.m +++ /dev/null @@ -1,94 +0,0 @@ -// AFImageRequest.m -// -// Copyright (c) 2011 Gowalla (http://gowalla.com/) -// -// 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. - -#import "AFImageRequest.h" -#import "AFImageRequestOperation.h" - -static NSOperationQueue *_operationQueue = nil; -static NSMutableSet *_cachedRequests = nil; - -@implementation AFImageRequest - -+ (void)initialize { - _operationQueue = [[NSOperationQueue alloc] init]; - [_operationQueue setMaxConcurrentOperationCount:6]; - - _cachedRequests = [[NSMutableSet alloc] init]; -} - -+ (void)requestImageWithURLString:(NSString *)urlString options:(AFImageRequestOptions)options block:(void (^)(UIImage *image))block { - [self requestImageWithURLString:urlString size:CGSizeZero options:options block:block]; -} - -+ (void)requestImageWithURLString:(NSString *)urlString size:(CGSize)imageSize options:(AFImageRequestOptions)options block:(void (^)(UIImage *image))block { - // Append a hash anchor to the image URL so that unique image options get cached separately - NSString *cacheAnchor = [NSString stringWithFormat:@"%fx%f:%d", imageSize.width, imageSize.height, options]; - NSURL *url = [NSURL URLWithString:[urlString stringByAppendingString:[NSString stringWithFormat:@"#%@", cacheAnchor]]]; - if (!url) { - if (block) { - block(nil); - } - return; - } - - NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLCacheStorageAllowed timeoutInterval:30.0]; - [request setHTTPShouldHandleCookies:NO]; - - AFImageRequestOperationCallback *callback = [AFImageRequestOperationCallback callbackWithSuccess:block imageSize:imageSize options:options]; - AFImageRequestOperation *operation = [[[AFImageRequestOperation alloc] initWithRequest:request callback:callback] autorelease]; - - NSCachedURLResponse *cachedResponse = [[[[NSURLCache sharedURLCache] cachedResponseForRequest:request] retain] autorelease]; - if (cachedResponse) { - if (block) { - block([UIImage imageWithData:[cachedResponse data]]); - return; - } - } - - [_operationQueue addOperation:operation]; -} - -+ (void)cancelImageRequestOperationsForURLString:(NSString *)urlString { - if (!urlString) { - return; - } - - for (AFImageRequestOperation *operation in [_operationQueue operations]) { - NSString *requestURLString = [[[operation request] URL] absoluteString]; - NSRange anchorRange = [requestURLString rangeOfString:@"#" options:NSBackwardsSearch]; - if (anchorRange.location != NSNotFound && [[requestURLString substringToIndex:anchorRange.location] isEqualToString:urlString]) { - if (!([operation isExecuting] || [operation isCancelled])) { - [operation cancel]; - } - } - } -} - -+ (void)cancelAllImageRequestOperations { - for (AFImageRequestOperation *operation in [_operationQueue operations]) { - if (!([operation isExecuting] || [operation isCancelled])) { - [operation cancel]; - } - } -} - -@end diff --git a/Example/Classes/Controllers/NearbySpotsViewController.m b/Example/Classes/Controllers/NearbySpotsViewController.m index bb63d36..8aa67cf 100644 --- a/Example/Classes/Controllers/NearbySpotsViewController.m +++ b/Example/Classes/Controllers/NearbySpotsViewController.m @@ -21,9 +21,14 @@ // THE SOFTWARE. #import "NearbySpotsViewController.h" + #import "Spot.h" + #import "SpotTableViewCell.h" + #import "TTTLocationFormatter.h" +#import "AFImageCache.h" +#import "UIImageView+AFNetworking.h" @interface NearbySpotsViewController () @property (readwrite, nonatomic, retain) NSArray *nearbySpots; @@ -72,7 +77,7 @@ static TTTLocationFormatter *__locationFormatter; [self.activityIndicatorView startAnimating]; self.navigationItem.rightBarButtonItem.enabled = NO; - [Spot spotsWithURLString:@"/spots/advanced_search" near:location parameters:[NSDictionary dictionaryWithObject:@"128" forKey:@"per_page"] withBlock:^(NSArray *records) { + [Spot spotsWithURLString:@"/spots/advanced_search" near:location parameters:[NSDictionary dictionaryWithObject:@"128" forKey:@"per_page"] block:^(NSArray *records) { self.nearbySpots = [records sortedArrayUsingComparator:^ NSComparisonResult(id obj1, id obj2) { CLLocationDistance d1 = [[(Spot *)obj1 location] distanceFromLocation:location]; CLLocationDistance d2 = [[(Spot *)obj2 location] distanceFromLocation:location]; @@ -119,24 +124,25 @@ static TTTLocationFormatter *__locationFormatter; [self.locationManager stopUpdatingLocation]; } -#pragma mark - CLLocationManagerDelegate - -- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation { - [self loadSpotsForLocation:newLocation]; -} - #pragma mark - Actions - (void)refresh:(id)sender { self.nearbySpots = [NSArray array]; [self.tableView reloadData]; [[NSURLCache sharedURLCache] removeAllCachedResponses]; + [[AFImageCache sharedImageCache] removeAllObjects]; if (self.locationManager.location) { [self loadSpotsForLocation:self.locationManager.location]; } } +#pragma mark - CLLocationManagerDelegate + +- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation { + [self loadSpotsForLocation:newLocation]; +} + #pragma mark - UITableViewDelegate - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { @@ -160,7 +166,7 @@ static TTTLocationFormatter *__locationFormatter; if (self.locationManager.location) { cell.detailTextLabel.text = [__locationFormatter stringFromDistanceAndBearingFromLocation:self.locationManager.location toLocation:spot.location]; } - cell.imageURLString = spot.imageURLString; + [cell.imageView setImageWithURL:[NSURL URLWithString:spot.imageURLString] placeholderImage:[UIImage imageNamed:@"placeholder-stamp.png"]]; return cell; } diff --git a/Example/Classes/Models/Spot.h b/Example/Classes/Models/Spot.h index 2fa5e01..3cee711 100644 --- a/Example/Classes/Models/Spot.h +++ b/Example/Classes/Models/Spot.h @@ -40,6 +40,6 @@ typedef void (^AFRecordsBlock)(NSArray *records); @property (readonly) CLLocation *location; - (id)initWithAttributes:(NSDictionary *)attributes; -+ (void)spotsWithURLString:(NSString *)urlString near:(CLLocation *)location parameters:(NSDictionary *)parameters withBlock:(AFRecordsBlock)block; ++ (void)spotsWithURLString:(NSString *)urlString near:(CLLocation *)location parameters:(NSDictionary *)parameters block:(AFRecordsBlock)block; @end diff --git a/Example/Classes/Models/Spot.m b/Example/Classes/Models/Spot.m index e44e3f5..63e17e5 100644 --- a/Example/Classes/Models/Spot.m +++ b/Example/Classes/Models/Spot.m @@ -56,24 +56,28 @@ return [[[CLLocation alloc] initWithLatitude:[self.latitude doubleValue] longitude:[self.longitude doubleValue]] autorelease]; } -+ (void)spotsWithURLString:(NSString *)urlString near:(CLLocation *)location parameters:(NSDictionary *)parameters withBlock:(AFRecordsBlock)block { ++ (void)spotsWithURLString:(NSString *)urlString near:(CLLocation *)location parameters:(NSDictionary *)parameters block:(AFRecordsBlock)block { NSDictionary *mutableParameters = [NSMutableDictionary dictionaryWithDictionary:parameters]; if (location) { [mutableParameters setValue:[NSString stringWithFormat:@"%1.7f", location.coordinate.latitude] forKey:@"lat"]; [mutableParameters setValue:[NSString stringWithFormat:@"%1.7f", location.coordinate.longitude] forKey:@"lng"]; } - [[AFGowallaAPIClient sharedClient] getPath:urlString parameters:mutableParameters callback:[AFHTTPOperationCallback callbackWithSuccess:^(NSURLRequest *request, NSHTTPURLResponse *response, NSDictionary *data) { - if (block) { - NSMutableArray *mutableRecords = [NSMutableArray array]; - for (NSDictionary *attributes in [data valueForKeyPath:@"spots"]) { - Spot *spot = [[[Spot alloc] initWithAttributes:attributes] autorelease]; - [mutableRecords addObject:spot]; - } - + [[AFGowallaAPIClient sharedClient] getPath:urlString parameters:mutableParameters success:^(NSDictionary *response) { + NSMutableArray *mutableRecords = [NSMutableArray array]; + for (NSDictionary *attributes in [response valueForKeyPath:@"spots"]) { + Spot *spot = [[[Spot alloc] initWithAttributes:attributes] autorelease]; + [mutableRecords addObject:spot]; + } + + if (block) { block([NSArray arrayWithArray:mutableRecords]); } - }]]; + } failure:^(NSError *error) { + if (block) { + block([NSArray array]); + } + }]; } @end diff --git a/Example/Classes/Views/SpotTableViewCell.h b/Example/Classes/Views/SpotTableViewCell.h index 375f8b4..c877bab 100644 --- a/Example/Classes/Views/SpotTableViewCell.h +++ b/Example/Classes/Views/SpotTableViewCell.h @@ -21,10 +21,7 @@ // THE SOFTWARE. #import -#import "AFImageRequest.h" -@interface SpotTableViewCell : UITableViewCell { - NSString *_imageURLString; -} +@interface SpotTableViewCell : UITableViewCell @end diff --git a/Example/Classes/Views/SpotTableViewCell.m b/Example/Classes/Views/SpotTableViewCell.m index a4047e9..5ecb303 100644 --- a/Example/Classes/Views/SpotTableViewCell.m +++ b/Example/Classes/Views/SpotTableViewCell.m @@ -23,7 +23,6 @@ #import "SpotTableViewCell.h" @implementation SpotTableViewCell -@synthesize imageURLString = _imageURLString; - (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]; @@ -41,50 +40,6 @@ return self; } -- (void)dealloc { - [_imageURLString release]; - [super dealloc]; -} - -- (void)setImageURLString:(NSString *)imageURLString { - [self setImageURLString:imageURLString options:AFImageRequestResize | AFImageCacheProcessedImage]; -} - -- (void)setImageURLString:(NSString *)imageURLString options:(AFImageRequestOptions)options { - if ([self.imageURLString isEqual:imageURLString]) { - return; - } - - if (self.imageURLString) { - self.imageView.image = [UIImage imageNamed:@"placeholder-stamp.png"]; - } - - [self willChangeValueForKey:@"imageURLString"]; - [_imageURLString release]; - _imageURLString = [imageURLString copy]; - [self didChangeValueForKey:@"imageURLString"]; - - if (self.imageURLString) { - [AFImageRequest requestImageWithURLString:self.imageURLString size:CGSizeMake(50.0f, 50.0f) options:options block:^(UIImage *image) { - if ([self.imageURLString isEqualToString:imageURLString]) { - BOOL needsLayout = self.imageView.image == nil; - self.imageView.image = image; - - if (needsLayout) { - [self setNeedsLayout]; - } - } - }]; - } -} - -#pragma mark - UITableViewCell - -- (void)prepareForReuse { - [super prepareForReuse]; - [AFImageRequest cancelImageRequestOperationsForURLString:self.imageURLString]; -} - #pragma mark - UIView - (void)layoutSubviews { diff --git a/AFNetworking/UIImage+AFNetworking.h b/Example/UIImage+AFNetworking.h similarity index 100% rename from AFNetworking/UIImage+AFNetworking.h rename to Example/UIImage+AFNetworking.h diff --git a/AFNetworking/UIImage+AFNetworking.m b/Example/UIImage+AFNetworking.m similarity index 99% rename from AFNetworking/UIImage+AFNetworking.m rename to Example/UIImage+AFNetworking.m index 377ce7d..07cd308 100644 --- a/AFNetworking/UIImage+AFNetworking.m +++ b/Example/UIImage+AFNetworking.m @@ -75,7 +75,6 @@ UIGraphicsEndImageContext(); return newImage; - } @end diff --git a/Example/UIImageView+AFNetworking.h b/Example/UIImageView+AFNetworking.h new file mode 100644 index 0000000..e3679b4 --- /dev/null +++ b/Example/UIImageView+AFNetworking.h @@ -0,0 +1,32 @@ +// UIImageView+AFNetworking.h +// +// Copyright (c) 2011 Gowalla (http://gowalla.com/) +// +// 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. + +#import +#import "AFImageRequestOperation.h" + +@interface UIImageView (AFNetworking) + +- (void)setImageWithURL:(NSURL *)url; +- (void)setImageWithURL:(NSURL *)url placeholderImage:(UIImage *)placeholderImage; +- (void)setImageWithURL:(NSURL *)url placeholderImage:(UIImage *)placeholderImage imageSize:(CGSize)imageSize options:(AFImageRequestOptions)options; + +@end diff --git a/Example/UIImageView+AFNetworking.m b/Example/UIImageView+AFNetworking.m new file mode 100644 index 0000000..223abdb --- /dev/null +++ b/Example/UIImageView+AFNetworking.m @@ -0,0 +1,101 @@ +// UIImageView+AFNetworking.m +// +// Copyright (c) 2011 Gowalla (http://gowalla.com/) +// +// 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. + +#import "UIImageView+AFNetworking.h" + +#import "AFImageCache.h" + +static NSOperationQueue *_operationQueue = nil; + +static NSString * const kUIImageViewImageRequestObjectKey = @"imageRequestOperation"; + +@interface UIImageView (_AFNetworking) +@property (readwrite, nonatomic, retain) AFImageRequestOperation *imageRequestOperation; +@end + +@implementation UIImageView (_AFNetworking) +@dynamic imageRequestOperation; +@end + +#pragma mark - + +@implementation UIImageView (AFNetworking) + +- (AFHTTPRequestOperation *)imageRequestOperation { + return objc_getAssociatedObject(self, kUIImageViewImageRequestObjectKey); +} + +- (void)setImageRequestOperation:(AFImageRequestOperation *)imageRequestOperation { + objc_setAssociatedObject(self, kUIImageViewImageRequestObjectKey, imageRequestOperation, OBJC_ASSOCIATION_RETAIN_NONATOMIC); +} + ++ (void)initialize { + [super initialize]; + + _operationQueue = [[NSOperationQueue alloc] init]; + [_operationQueue setMaxConcurrentOperationCount:6]; +} + +- (void)setImageWithURL:(NSURL *)url { + [self setImageWithURL:url placeholderImage:nil]; +} + +- (void)setImageWithURL:(NSURL *)url placeholderImage:(UIImage *)placeholderImage { + [self setImageWithURL:url placeholderImage:placeholderImage imageSize:self.frame.size options:AFImageRequestDefaultOptions]; +} + +- (void)setImageWithURL:(NSURL *)url placeholderImage:(UIImage *)placeholderImage imageSize:(CGSize)imageSize options:(AFImageRequestOptions)options { + if (!url) { + return; + } + + if (self.imageRequestOperation && ([self.imageRequestOperation isReady] || [self.imageRequestOperation isExecuting])) { + if ([[[self.imageRequestOperation request] URL] isEqual:url]) { + return; + } else { + [self.imageRequestOperation cancel]; + } + } + + NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLCacheStorageAllowed timeoutInterval:30.0]; + [request setHTTPShouldHandleCookies:NO]; + + UIImage *cachedImage = [[AFImageCache sharedImageCache] cachedImageForRequest:request imageSize:imageSize options:options]; + if (cachedImage) { + self.image = cachedImage; + } else { + self.image = placeholderImage; + + self.imageRequestOperation = [AFImageRequestOperation operationWithRequest:request imageSize:imageSize options:options success:^(UIImage *image) { + if ([[request URL] isEqual:[[self.imageRequestOperation request] URL]]) { + self.image = image; + } else { + self.image = placeholderImage; + } + }]; + + [_operationQueue addOperation:self.imageRequestOperation]; + } +} + + +@end