diff --git a/AFNetworking/AFHTTPClient.h b/AFNetworking/AFHTTPClient.h index 6d11918..249eef9 100644 --- a/AFNetworking/AFHTTPClient.h +++ b/AFNetworking/AFHTTPClient.h @@ -134,7 +134,7 @@ extern NSString * AFQueryStringFromParametersWithEncoding(NSDictionary *paramete /** The url used as the base for paths specified in methods such as `getPath:parameteres:success:failure` */ -@property (readonly, nonatomic, retain) NSURL *baseURL; +@property (readonly, nonatomic) NSURL *baseURL; /** The string encoding used in constructing url requests. This is `NSUTF8StringEncoding` by default. @@ -151,7 +151,7 @@ extern NSString * AFQueryStringFromParametersWithEncoding(NSDictionary *paramete /** The operation queue which manages operations enqueued by the HTTP client. */ -@property (readonly, nonatomic, retain) NSOperationQueue *operationQueue; +@property (readonly, nonatomic) NSOperationQueue *operationQueue; /** The reachability status from the device to the current `baseURL` of the `AFHTTPClient`. diff --git a/AFNetworking/AFHTTPClient.m b/AFNetworking/AFHTTPClient.m index fa03444..5040059 100644 --- a/AFNetworking/AFHTTPClient.m +++ b/AFNetworking/AFHTTPClient.m @@ -90,25 +90,21 @@ static NSString * AFBase64EncodedStringFromString(NSString *string) { output[idx + 3] = (i + 2) < length ? kAFBase64EncodingTable[(value >> 0) & 0x3F] : '='; } - return [[[NSString alloc] initWithData:mutableData encoding:NSASCIIStringEncoding] autorelease]; + return [[NSString alloc] initWithData:mutableData encoding:NSASCIIStringEncoding]; } NSString * AFURLEncodedStringFromStringWithEncoding(NSString *string, NSStringEncoding encoding) { static NSString * const kAFLegalCharactersToBeEscaped = @"?!@#$^&%*+=,:;'\"`<>()[]{}/\\|~ "; - return [(NSString *)CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, (CFStringRef)string, NULL, (CFStringRef)kAFLegalCharactersToBeEscaped, CFStringConvertNSStringEncodingToEncoding(encoding)) autorelease]; + return (__bridge_transfer NSString *)CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, (__bridge CFStringRef)string, NULL, (__bridge CFStringRef)kAFLegalCharactersToBeEscaped, CFStringConvertNSStringEncodingToEncoding(encoding)); } #pragma mark - -@interface AFQueryStringComponent : NSObject { -@private - NSString *_key; - NSString *_value; -} +@interface AFQueryStringComponent : NSObject -@property (readwrite, nonatomic, retain) id key; -@property (readwrite, nonatomic, retain) id value; +@property (readwrite, nonatomic) id key; +@property (readwrite, nonatomic) id value; - (id)initWithKey:(id)key value:(id)value; - (NSString *)URLEncodedStringValueWithEncoding:(NSStringEncoding)stringEncoding; @@ -125,18 +121,12 @@ NSString * AFURLEncodedStringFromStringWithEncoding(NSString *string, NSStringEn return nil; } - self.key = key; - self.value = value; + _key = key; + _value = value; return self; } -- (void)dealloc { - [_key release]; - [_value release]; - [super dealloc]; -} - - (NSString *)URLEncodedStringValueWithEncoding:(NSStringEncoding)stringEncoding { return [NSString stringWithFormat:@"%@=%@", self.key, AFURLEncodedStringFromStringWithEncoding([self.value description], stringEncoding)]; } @@ -166,7 +156,7 @@ NSArray * AFQueryStringComponentsFromKeyAndValue(NSString *key, id value) { } else if([value isKindOfClass:[NSArray class]]) { [mutableQueryStringComponents addObjectsFromArray:AFQueryStringComponentsFromKeyAndArrayValue(key, value)]; } else { - [mutableQueryStringComponents addObject:[[[AFQueryStringComponent alloc] initWithKey:key value:value] autorelease]]; + [mutableQueryStringComponents addObject:[[AFQueryStringComponent alloc] initWithKey:key value:value]]; } return mutableQueryStringComponents; @@ -197,7 +187,7 @@ static NSString * AFJSONStringFromParameters(NSDictionary *parameters) { NSData *JSONData = [NSJSONSerialization dataWithJSONObject:parameters options:0 error:&error];; if (!error) { - return [[[NSString alloc] initWithData:JSONData encoding:NSUTF8StringEncoding] autorelease]; + return [[NSString alloc] initWithData:JSONData encoding:NSUTF8StringEncoding]; } else { return nil; } @@ -209,17 +199,17 @@ static NSString * AFPropertyListStringFromParameters(NSDictionary *parameters) { NSData *propertyListData = [NSPropertyListSerialization dataWithPropertyList:parameters format:NSPropertyListXMLFormat_v1_0 options:0 error:&error]; if (!error) { - propertyListString = [[[NSString alloc] initWithData:propertyListData encoding:NSUTF8StringEncoding] autorelease]; + propertyListString = [[NSString alloc] initWithData:propertyListData encoding:NSUTF8StringEncoding] ; } return propertyListString; } @interface AFHTTPClient () -@property (readwrite, nonatomic, retain) NSURL *baseURL; -@property (readwrite, nonatomic, retain) NSMutableArray *registeredHTTPOperationClassNames; -@property (readwrite, nonatomic, retain) NSMutableDictionary *defaultHeaders; -@property (readwrite, nonatomic, retain) NSOperationQueue *operationQueue; +@property (readwrite, nonatomic) NSURL *baseURL; +@property (readwrite, nonatomic) NSMutableArray *registeredHTTPOperationClassNames; +@property (readwrite, nonatomic) NSMutableDictionary *defaultHeaders; +@property (readwrite, nonatomic) NSOperationQueue *operationQueue; #ifdef _SYSTEMCONFIGURATION_H @property (readwrite, nonatomic, assign) AFNetworkReachabilityRef networkReachability; @property (readwrite, nonatomic, assign) AFNetworkReachabilityStatus networkReachabilityStatus; @@ -246,7 +236,7 @@ static NSString * AFPropertyListStringFromParameters(NSDictionary *parameters) { #endif + (AFHTTPClient *)clientWithBaseURL:(NSURL *)url { - return [[[self alloc] initWithBaseURL:url] autorelease]; + return [[self alloc] initWithBaseURL:url]; } - (id)initWithBaseURL:(NSURL *)url { @@ -283,7 +273,7 @@ static NSString * AFPropertyListStringFromParameters(NSDictionary *parameters) { [self startMonitoringNetworkReachability]; #endif - self.operationQueue = [[[NSOperationQueue alloc] init] autorelease]; + self.operationQueue = [[NSOperationQueue alloc] init]; [self.operationQueue setMaxConcurrentOperationCount:kAFHTTPClientDefaultMaxConcurrentOperationCount]; return self; @@ -292,15 +282,9 @@ static NSString * AFPropertyListStringFromParameters(NSDictionary *parameters) { - (void)dealloc { #ifdef _SYSTEMCONFIGURATION_H [self stopMonitoringNetworkReachability]; - [_networkReachabilityStatusBlock release]; #endif - [_baseURL release]; - [_registeredHTTPOperationClassNames release]; - [_defaultHeaders release]; - [_operationQueue release]; - [super dealloc]; } - (NSString *)description { @@ -340,7 +324,7 @@ static AFNetworkReachabilityStatus AFNetworkReachabilityStatusForFlags(SCNetwork static void AFNetworkReachabilityCallback(SCNetworkReachabilityRef __unused target, SCNetworkReachabilityFlags flags, void *info) { AFNetworkReachabilityStatus status = AFNetworkReachabilityStatusForFlags(flags); - AFNetworkReachabilityStatusBlock block = (AFNetworkReachabilityStatusBlock)info; + AFNetworkReachabilityStatusBlock block = (__bridge AFNetworkReachabilityStatusBlock)info; if (block) { block(status); } @@ -349,11 +333,10 @@ static void AFNetworkReachabilityCallback(SCNetworkReachabilityRef __unused targ } static const void * AFNetworkReachabilityRetainCallback(const void *info) { - return [(AFNetworkReachabilityStatusBlock)info copy]; + return (__bridge_retained const void *)([(__bridge AFNetworkReachabilityStatusBlock)info copy]); } static void AFNetworkReachabilityReleaseCallback(const void *info) { - [(AFNetworkReachabilityStatusBlock)info release]; } - (void)startMonitoringNetworkReachability { @@ -372,7 +355,7 @@ static void AFNetworkReachabilityReleaseCallback(const void *info) { } }; - SCNetworkReachabilityContext context = {0, callback, AFNetworkReachabilityRetainCallback, AFNetworkReachabilityReleaseCallback, NULL}; + SCNetworkReachabilityContext context = {0, (__bridge void *)callback, AFNetworkReachabilityRetainCallback, AFNetworkReachabilityReleaseCallback, NULL}; SCNetworkReachabilitySetCallback(self.networkReachability, AFNetworkReachabilityCallback, &context); SCNetworkReachabilityScheduleWithRunLoop(self.networkReachability, CFRunLoopGetMain(), (CFStringRef)NSRunLoopCommonModes); @@ -449,7 +432,7 @@ static void AFNetworkReachabilityReleaseCallback(const void *info) { parameters:(NSDictionary *)parameters { NSURL *url = [NSURL URLWithString:path relativeToURL:self.baseURL]; - NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] initWithURL:url] autorelease]; + NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:url]; [request setHTTPMethod:method]; [request setAllHTTPHeaderFields:self.defaultHeaders]; @@ -462,7 +445,7 @@ static void AFNetworkReachabilityReleaseCallback(const void *info) { url = [NSURL URLWithString:[[url absoluteString] stringByAppendingFormat:[path rangeOfString:@"?"].location == NSNotFound ? @"?%@" : @"&%@", AFQueryStringFromParametersWithEncoding(parameters, self.stringEncoding)]]; [request setURL:url]; } else { - NSString *charset = (NSString *)CFStringConvertEncodingToIANACharSetName(CFStringConvertNSStringEncodingToEncoding(self.stringEncoding)); + NSString *charset = (__bridge NSString *)CFStringConvertEncodingToIANACharSetName(CFStringConvertNSStringEncodingToEncoding(self.stringEncoding)); switch (self.parameterEncoding) { case AFFormURLParameterEncoding:; [request setValue:[NSString stringWithFormat:@"application/x-www-form-urlencoded; charset=%@", charset] forHTTPHeaderField:@"Content-Type"]; @@ -489,7 +472,7 @@ static void AFNetworkReachabilityReleaseCallback(const void *info) { constructingBodyWithBlock:(void (^)(id formData))block { NSMutableURLRequest *request = [self requestWithMethod:method path:path parameters:nil]; - __block AFMultipartFormData *formData = [[[AFMultipartFormData alloc] initWithURLRequest:request stringEncoding:self.stringEncoding] autorelease]; + __block AFMultipartFormData *formData = [[AFMultipartFormData alloc] initWithURLRequest:request stringEncoding:self.stringEncoding]; if (parameters) { for (AFQueryStringComponent *component in AFQueryStringComponentsFromKeyAndValue(nil, parameters)) { @@ -523,12 +506,12 @@ static void AFNetworkReachabilityReleaseCallback(const void *info) { while (!operation && (className = [enumerator nextObject])) { Class op_class = NSClassFromString(className); if (op_class && [op_class canProcessRequest:urlRequest]) { - operation = [[(AFHTTPRequestOperation *)[op_class alloc] initWithRequest:urlRequest] autorelease]; + operation = [(AFHTTPRequestOperation *)[op_class alloc] initWithRequest:urlRequest]; } } if (!operation) { - operation = [[[AFHTTPRequestOperation alloc] initWithRequest:urlRequest] autorelease]; + operation = [[AFHTTPRequestOperation alloc] initWithRequest:urlRequest]; } [operation setCompletionBlockWithSuccess:success failure:failure]; @@ -584,7 +567,7 @@ static void AFNetworkReachabilityReleaseCallback(const void *info) { NSPredicate *finishedOperationPredicate = [NSPredicate predicateWithFormat:@"isFinished == YES"]; for (AFHTTPRequestOperation *operation in operations) { - AFCompletionBlock originalCompletionBlock = [[operation.completionBlock copy] autorelease]; + AFCompletionBlock originalCompletionBlock = [operation.completionBlock copy]; operation.completionBlock = ^{ dispatch_queue_t queue = operation.successCallbackQueue ? operation.successCallbackQueue : dispatch_get_main_queue(); dispatch_group_async(dispatchGroup, queue, ^{ @@ -698,9 +681,9 @@ static inline NSString * AFMultipartFormFinalBoundary() { } @interface AFMultipartFormData () -@property (readwrite, nonatomic, retain) NSMutableURLRequest *request; +@property (readwrite, nonatomic) NSMutableURLRequest *request; @property (readwrite, nonatomic, assign) NSStringEncoding stringEncoding; -@property (readwrite, nonatomic, retain) NSOutputStream *outputStream; +@property (readwrite, nonatomic) NSOutputStream *outputStream; @property (readwrite, nonatomic, copy) NSString *temporaryFilePath; @end @@ -732,16 +715,11 @@ static inline NSString * AFMultipartFormFinalBoundary() { } - (void)dealloc { - [_request release]; if (_outputStream) { [_outputStream close]; - [_outputStream release]; - _outputStream = nil; } - [_temporaryFilePath release]; - [super dealloc]; } - (NSMutableURLRequest *)requestByFinalizingMultipartFormData { @@ -816,7 +794,7 @@ static inline NSString * AFMultipartFormFinalBoundary() { [userInfo setValue:fileURL forKey:NSURLErrorFailingURLErrorKey]; [userInfo setValue:NSLocalizedString(@"Expected URL to be a file URL", nil) forKey:NSLocalizedFailureReasonErrorKey]; if (error != NULL) { - *error = [[[NSError alloc] initWithDomain:AFNetworkingErrorDomain code:NSURLErrorBadURL userInfo:userInfo] autorelease]; + *error = [[NSError alloc] initWithDomain:AFNetworkingErrorDomain code:NSURLErrorBadURL userInfo:userInfo]; } return NO; diff --git a/AFNetworking/AFHTTPRequestOperation.h b/AFNetworking/AFHTTPRequestOperation.h index 9cab0e5..52de1f7 100644 --- a/AFNetworking/AFHTTPRequestOperation.h +++ b/AFNetworking/AFHTTPRequestOperation.h @@ -42,7 +42,7 @@ extern NSString * AFCreateIncompleteDownloadDirectoryPath(void); /** The last HTTP response received by the operation's connection. */ -@property (readonly, nonatomic, retain) NSHTTPURLResponse *response; +@property (readonly, nonatomic, strong) NSHTTPURLResponse *response; /** Set a target file for the response, will stream directly into this destination. diff --git a/AFNetworking/AFHTTPRequestOperation.m b/AFNetworking/AFHTTPRequestOperation.m index bc9b2b7..fea0235 100644 --- a/AFNetworking/AFHTTPRequestOperation.m +++ b/AFNetworking/AFHTTPRequestOperation.m @@ -29,7 +29,7 @@ NSSet * AFContentTypesFromHTTPHeader(NSString *string) { static NSCharacterSet *_skippedCharacterSet = nil; static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ - _skippedCharacterSet = [[NSCharacterSet characterSetWithCharactersInString:@" ,"] retain]; + _skippedCharacterSet = [NSCharacterSet characterSetWithCharactersInString:@" ,"]; }); if (!string) { @@ -96,14 +96,13 @@ NSString * AFCreateIncompleteDownloadDirectoryPath(void) { static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ NSString *tempDirectory = NSTemporaryDirectory(); - incompleteDownloadPath = [[tempDirectory stringByAppendingPathComponent:kAFNetworkingIncompleteDownloadDirectoryName] retain]; + incompleteDownloadPath = [tempDirectory stringByAppendingPathComponent:kAFNetworkingIncompleteDownloadDirectoryName]; NSError *error = nil; NSFileManager *fileMan = [[NSFileManager alloc] init]; if(![fileMan createDirectoryAtPath:incompleteDownloadPath withIntermediateDirectories:YES attributes:nil error:&error]) { NSLog(@"Failed to create incomplete downloads directory at %@", incompleteDownloadPath); } - [fileMan release]; }); return incompleteDownloadPath; @@ -112,9 +111,9 @@ NSString * AFCreateIncompleteDownloadDirectoryPath(void) { #pragma mark - @interface AFHTTPRequestOperation () -@property (readwrite, nonatomic, retain) NSURLRequest *request; -@property (readwrite, nonatomic, retain) NSHTTPURLResponse *response; -@property (readwrite, nonatomic, retain) NSError *HTTPError; +@property (readwrite, nonatomic, strong) NSURLRequest *request; +@property (readwrite, nonatomic, strong) NSHTTPURLResponse *response; +@property (readwrite, nonatomic, strong) NSError *HTTPError; @property (assign) long long totalContentLength; @property (assign) long long offsetContentLength; @end @@ -130,7 +129,6 @@ NSString * AFCreateIncompleteDownloadDirectoryPath(void) { @dynamic response; - (void)dealloc { - [_HTTPError release]; if (_successCallbackQueue) { dispatch_release(_successCallbackQueue); @@ -142,7 +140,6 @@ NSString * AFCreateIncompleteDownloadDirectoryPath(void) { _failureCallbackQueue = NULL; } - [super dealloc]; } - (NSError *)error { @@ -152,13 +149,13 @@ NSString * AFCreateIncompleteDownloadDirectoryPath(void) { [userInfo setValue:[NSString stringWithFormat:NSLocalizedString(@"Expected status code in (%@), got %d", nil), AFStringFromIndexSet([[self class] acceptableStatusCodes]), [self.response statusCode]] forKey:NSLocalizedDescriptionKey]; [userInfo setValue:[self.request URL] forKey:NSURLErrorFailingURLErrorKey]; - self.HTTPError = [[[NSError alloc] initWithDomain:AFNetworkingErrorDomain code:NSURLErrorBadServerResponse userInfo:userInfo] autorelease]; + self.HTTPError = [[NSError alloc] initWithDomain:AFNetworkingErrorDomain code:NSURLErrorBadServerResponse userInfo:userInfo]; } else if ([self.responseData length] > 0 && ![self hasAcceptableContentType]) { // Don't invalidate content type if there is no content NSMutableDictionary *userInfo = [NSMutableDictionary dictionary]; [userInfo setValue:[NSString stringWithFormat:NSLocalizedString(@"Expected content type %@, got %@", nil), [[self class] acceptableContentTypes], [self.response MIMEType]] forKey:NSLocalizedDescriptionKey]; [userInfo setValue:[self.request URL] forKey:NSURLErrorFailingURLErrorKey]; - self.HTTPError = [[[NSError alloc] initWithDomain:AFNetworkingErrorDomain code:NSURLErrorCannotDecodeContentData userInfo:userInfo] autorelease]; + self.HTTPError = [[NSError alloc] initWithDomain:AFNetworkingErrorDomain code:NSURLErrorCannotDecodeContentData userInfo:userInfo]; } } @@ -177,7 +174,7 @@ NSString * AFCreateIncompleteDownloadDirectoryPath(void) { offset = [[self.outputStream propertyForKey:NSStreamDataWrittenToMemoryStreamKey] length]; } - NSMutableURLRequest *mutableURLRequest = [[self.request mutableCopy] autorelease]; + NSMutableURLRequest *mutableURLRequest = [self.request mutableCopy]; if ([[self.response allHeaderFields] valueForKey:@"ETag"]) { [mutableURLRequest setValue:[[self.response allHeaderFields] valueForKey:@"ETag"] forHTTPHeaderField:@"If-Range"]; } @@ -226,21 +223,22 @@ NSString * AFCreateIncompleteDownloadDirectoryPath(void) { - (void)setCompletionBlockWithSuccess:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure { + __weak AFHTTPRequestOperation *weakSelf = self; self.completionBlock = ^ { - if ([self isCancelled]) { + if ([weakSelf isCancelled]) { return; } - if (self.error) { + if (weakSelf.error) { if (failure) { - dispatch_async(self.failureCallbackQueue ? self.failureCallbackQueue : dispatch_get_main_queue(), ^{ - failure(self, self.error); + dispatch_async(weakSelf.failureCallbackQueue ? weakSelf.failureCallbackQueue : dispatch_get_main_queue(), ^{ + failure(weakSelf, weakSelf.error); }); } } else { if (success) { - dispatch_async(self.successCallbackQueue ? self.successCallbackQueue : dispatch_get_main_queue(), ^{ - success(self, self.responseData); + dispatch_async(weakSelf.successCallbackQueue ? weakSelf.successCallbackQueue : dispatch_get_main_queue(), ^{ + success(weakSelf, weakSelf.responseData); }); } } @@ -249,8 +247,7 @@ NSString * AFCreateIncompleteDownloadDirectoryPath(void) { - (void)setResponseFilePath:(NSString *)responseFilePath { if ([self isReady] && responseFilePath != _responseFilePath) { - [_responseFilePath release]; - _responseFilePath = [responseFilePath retain]; + _responseFilePath = responseFilePath; if (responseFilePath) { self.outputStream = [NSOutputStream outputStreamToFileAtPath:responseFilePath append:NO]; @@ -271,7 +268,7 @@ static id AFStaticClassValueImplementation(id self, SEL _cmd) { } + (void)addAcceptableStatusCodes:(NSIndexSet *)statusCodes { - NSMutableIndexSet *mutableStatusCodes = [[[NSMutableIndexSet alloc] initWithIndexSet:[self acceptableStatusCodes]] autorelease]; + NSMutableIndexSet *mutableStatusCodes = [[NSMutableIndexSet alloc] initWithIndexSet:[self acceptableStatusCodes]]; [mutableStatusCodes addIndexes:statusCodes]; SEL selector = @selector(acceptableStatusCodes); AFSwizzleClassMethodWithImplementation([self class], selector, (IMP)AFStaticClassValueImplementation); @@ -283,7 +280,7 @@ static id AFStaticClassValueImplementation(id self, SEL _cmd) { } + (void)addAcceptableContentTypes:(NSSet *)contentTypes { - NSMutableSet *mutableContentTypes = [[[NSMutableSet alloc] initWithSet:[self acceptableContentTypes] copyItems:YES] autorelease]; + NSMutableSet *mutableContentTypes = [[NSMutableSet alloc] initWithSet:[self acceptableContentTypes] copyItems:YES]; [mutableContentTypes unionSet:contentTypes]; SEL selector = @selector(acceptableContentTypes); AFSwizzleClassMethodWithImplementation([self class], selector, (IMP)AFStaticClassValueImplementation); diff --git a/AFNetworking/AFImageRequestOperation.h b/AFNetworking/AFImageRequestOperation.h index f6de586..c9c5f22 100644 --- a/AFNetworking/AFImageRequestOperation.h +++ b/AFNetworking/AFImageRequestOperation.h @@ -55,7 +55,7 @@ An image constructed from the response data. If an error occurs during the request, `nil` will be returned, and the `error` property will be set to the error. */ #if __IPHONE_OS_VERSION_MIN_REQUIRED -@property (readonly, nonatomic, retain) UIImage *responseImage; +@property (readonly, nonatomic) UIImage *responseImage; #elif __MAC_OS_X_VERSION_MIN_REQUIRED @property (readonly, nonatomic, retain) NSImage *responseImage; #endif diff --git a/AFNetworking/AFImageRequestOperation.m b/AFNetworking/AFImageRequestOperation.m index beeae69..3b13463 100644 --- a/AFNetworking/AFImageRequestOperation.m +++ b/AFNetworking/AFImageRequestOperation.m @@ -33,7 +33,7 @@ static dispatch_queue_t image_request_operation_processing_queue() { @interface AFImageRequestOperation () #if __IPHONE_OS_VERSION_MIN_REQUIRED -@property (readwrite, nonatomic, retain) UIImage *responseImage; +@property (readwrite, nonatomic) UIImage *responseImage; #elif __MAC_OS_X_VERSION_MIN_REQUIRED @property (readwrite, nonatomic, retain) NSImage *responseImage; #endif @@ -74,7 +74,7 @@ static dispatch_queue_t image_request_operation_processing_queue() { success:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image))success failure:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error))failure { - AFImageRequestOperation *requestOperation = [[[AFImageRequestOperation alloc] initWithRequest:urlRequest] autorelease]; + AFImageRequestOperation *requestOperation = [[AFImageRequestOperation alloc] initWithRequest:urlRequest]; [requestOperation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) { if (success) { UIImage *image = responseObject; @@ -105,7 +105,7 @@ static dispatch_queue_t image_request_operation_processing_queue() { success:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, NSImage *image))success failure:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error))failure { - AFImageRequestOperation *requestOperation = [[[AFImageRequestOperation alloc] initWithRequest:urlRequest] autorelease]; + AFImageRequestOperation *requestOperation = [[AFImageRequestOperation alloc] initWithRequest:urlRequest]; [requestOperation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) { if (success) { NSImage *image = responseObject; @@ -144,10 +144,6 @@ static dispatch_queue_t image_request_operation_processing_queue() { return self; } -- (void)dealloc { - [_responseImage release]; - [super dealloc]; -} #if __IPHONE_OS_VERSION_MIN_REQUIRED - (UIImage *)responseImage { @@ -174,9 +170,8 @@ static dispatch_queue_t image_request_operation_processing_queue() { if (!_responseImage && [self.responseData length] > 0 && [self isFinished]) { // Ensure that the image is set to it's correct pixel width and height NSBitmapImageRep *bitimage = [[NSBitmapImageRep alloc] initWithData:self.responseData]; - self.responseImage = [[[NSImage alloc] initWithSize:NSMakeSize([bitimage pixelsWide], [bitimage pixelsHigh])] autorelease]; + self.responseImage = [[NSImage alloc] initWithSize:NSMakeSize([bitimage pixelsWide], [bitimage pixelsHigh])]; [self.responseImage addRepresentation:bitimage]; - [bitimage release]; } return _responseImage; @@ -202,16 +197,17 @@ static dispatch_queue_t image_request_operation_processing_queue() { - (void)setCompletionBlockWithSuccess:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure { + __weak AFImageRequestOperation *weakSelf = self; self.completionBlock = ^ { - if ([self isCancelled]) { + if ([weakSelf isCancelled]) { return; } dispatch_async(image_request_operation_processing_queue(), ^(void) { - if (self.error) { + if (weakSelf.error) { if (failure) { - dispatch_async(self.failureCallbackQueue ? self.failureCallbackQueue : dispatch_get_main_queue(), ^{ - failure(self, self.error); + dispatch_async(weakSelf.failureCallbackQueue ? weakSelf.failureCallbackQueue : dispatch_get_main_queue(), ^{ + failure(weakSelf, weakSelf.error); }); } } else { @@ -222,10 +218,10 @@ static dispatch_queue_t image_request_operation_processing_queue() { NSImage *image = nil; #endif - image = self.responseImage; + image = weakSelf.responseImage; - dispatch_async(self.successCallbackQueue ? self.successCallbackQueue : dispatch_get_main_queue(), ^{ - success(self, image); + dispatch_async(weakSelf.successCallbackQueue ? weakSelf.successCallbackQueue : dispatch_get_main_queue(), ^{ + success(weakSelf, image); }); } } diff --git a/AFNetworking/AFJSONRequestOperation.h b/AFNetworking/AFJSONRequestOperation.h index a1191f9..bca959c 100644 --- a/AFNetworking/AFJSONRequestOperation.h +++ b/AFNetworking/AFJSONRequestOperation.h @@ -44,7 +44,7 @@ /** A JSON object constructed from the response data. If an error occurs while parsing, `nil` will be returned, and the `error` property will be set to the error. */ -@property (readonly, nonatomic, retain) id responseJSON; +@property (readonly, nonatomic) id responseJSON; ///---------------------------------- /// @name Creating Request Operations diff --git a/AFNetworking/AFJSONRequestOperation.m b/AFNetworking/AFJSONRequestOperation.m index 133293b..e6968d9 100644 --- a/AFNetworking/AFJSONRequestOperation.m +++ b/AFNetworking/AFJSONRequestOperation.m @@ -32,8 +32,8 @@ static dispatch_queue_t json_request_operation_processing_queue() { } @interface AFJSONRequestOperation () -@property (readwrite, nonatomic, retain) id responseJSON; -@property (readwrite, nonatomic, retain) NSError *JSONError; +@property (readwrite, nonatomic) id responseJSON; +@property (readwrite, nonatomic) NSError *JSONError; @end @implementation AFJSONRequestOperation @@ -44,7 +44,7 @@ static dispatch_queue_t json_request_operation_processing_queue() { success:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, id JSON))success failure:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id JSON))failure { - AFJSONRequestOperation *requestOperation = [[[self alloc] initWithRequest:urlRequest] autorelease]; + AFJSONRequestOperation *requestOperation = [[self alloc] initWithRequest:urlRequest]; [requestOperation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) { if (success) { success(operation.request, operation.response, responseObject); @@ -58,11 +58,6 @@ static dispatch_queue_t json_request_operation_processing_queue() { return requestOperation; } -- (void)dealloc { - [_responseJSON release]; - [_JSONError release]; - [super dealloc]; -} - (id)responseJSON { if (!_responseJSON && [self.responseData length] > 0 && [self isFinished] && !self.JSONError) { @@ -101,31 +96,32 @@ static dispatch_queue_t json_request_operation_processing_queue() { - (void)setCompletionBlockWithSuccess:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure { + __weak AFJSONRequestOperation *weakSelf = self; self.completionBlock = ^ { - if ([self isCancelled]) { + if ([weakSelf isCancelled]) { return; } - if (self.error) { + if (weakSelf.error) { if (failure) { - dispatch_async(self.failureCallbackQueue ? self.failureCallbackQueue : dispatch_get_main_queue(), ^{ - failure(self, self.error); + dispatch_async(weakSelf.failureCallbackQueue ? weakSelf.failureCallbackQueue : dispatch_get_main_queue(), ^{ + failure(weakSelf, weakSelf.error); }); } } else { dispatch_async(json_request_operation_processing_queue(), ^{ - id JSON = self.responseJSON; + id JSON = weakSelf.responseJSON; if (self.JSONError) { if (failure) { - dispatch_async(self.failureCallbackQueue ? self.failureCallbackQueue : dispatch_get_main_queue(), ^{ - failure(self, self.error); + dispatch_async(weakSelf.failureCallbackQueue ? weakSelf.failureCallbackQueue : dispatch_get_main_queue(), ^{ + failure(weakSelf, weakSelf.error); }); } } else { if (success) { - dispatch_async(self.successCallbackQueue ? self.successCallbackQueue : dispatch_get_main_queue(), ^{ - success(self, JSON); + dispatch_async(weakSelf.successCallbackQueue ? weakSelf.successCallbackQueue : dispatch_get_main_queue(), ^{ + success(weakSelf, JSON); }); } } diff --git a/AFNetworking/AFNetworkActivityIndicatorManager.m b/AFNetworking/AFNetworkActivityIndicatorManager.m index b141323..dda196c 100644 --- a/AFNetworking/AFNetworkActivityIndicatorManager.m +++ b/AFNetworking/AFNetworkActivityIndicatorManager.m @@ -29,7 +29,7 @@ static NSTimeInterval const kAFNetworkActivityIndicatorInvisibilityDelay = 0.25; @interface AFNetworkActivityIndicatorManager () @property (readwrite, atomic, assign) NSInteger activityCount; -@property (readwrite, nonatomic, retain) NSTimer *activityIndicatorVisibilityTimer; +@property (readwrite, nonatomic) NSTimer *activityIndicatorVisibilityTimer; @property (readonly, getter = isNetworkActivityIndicatorVisible) BOOL networkActivityIndicatorVisible; - (void)updateNetworkActivityIndicatorVisibility; @@ -67,9 +67,7 @@ static NSTimeInterval const kAFNetworkActivityIndicatorInvisibilityDelay = 0.25; [[NSNotificationCenter defaultCenter] removeObserver:self]; [_activityIndicatorVisibilityTimer invalidate]; - [_activityIndicatorVisibilityTimer release]; _activityIndicatorVisibilityTimer = nil; - [super dealloc]; } - (void)updateNetworkActivityIndicatorVisibilityDelayed { diff --git a/AFNetworking/AFPropertyListRequestOperation.h b/AFNetworking/AFPropertyListRequestOperation.h index aa6e471..c509274 100644 --- a/AFNetworking/AFPropertyListRequestOperation.h +++ b/AFNetworking/AFPropertyListRequestOperation.h @@ -41,7 +41,7 @@ /** An object deserialized from a plist constructed using the response data. */ -@property (readonly, nonatomic, retain) id responsePropertyList; +@property (readonly, nonatomic) id responsePropertyList; ///-------------------------------------- /// @name Managing Property List Behavior diff --git a/AFNetworking/AFPropertyListRequestOperation.m b/AFNetworking/AFPropertyListRequestOperation.m index ecca1af..2cf0d9d 100644 --- a/AFNetworking/AFPropertyListRequestOperation.m +++ b/AFNetworking/AFPropertyListRequestOperation.m @@ -32,9 +32,9 @@ static dispatch_queue_t property_list_request_operation_processing_queue() { } @interface AFPropertyListRequestOperation () -@property (readwrite, nonatomic, retain) id responsePropertyList; +@property (readwrite, nonatomic) id responsePropertyList; @property (readwrite, nonatomic, assign) NSPropertyListFormat propertyListFormat; -@property (readwrite, nonatomic, retain) NSError *propertyListError; +@property (readwrite, nonatomic) NSError *propertyListError; @end @implementation AFPropertyListRequestOperation @@ -47,7 +47,7 @@ static dispatch_queue_t property_list_request_operation_processing_queue() { success:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, id propertyList))success failure:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id propertyList))failure { - AFPropertyListRequestOperation *requestOperation = [[[self alloc] initWithRequest:request] autorelease]; + AFPropertyListRequestOperation *requestOperation = [[self alloc] initWithRequest:request]; [requestOperation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) { if (success) { success(operation.request, operation.response, responseObject); @@ -72,11 +72,6 @@ static dispatch_queue_t property_list_request_operation_processing_queue() { return self; } -- (void)dealloc { - [_responsePropertyList release]; - [_propertyListError release]; - [super dealloc]; -} - (id)responsePropertyList { if (!_responsePropertyList && [self.responseData length] > 0 && [self isFinished]) { @@ -111,31 +106,32 @@ static dispatch_queue_t property_list_request_operation_processing_queue() { - (void)setCompletionBlockWithSuccess:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure { + __weak AFPropertyListRequestOperation *weakSelf = self; self.completionBlock = ^ { - if ([self isCancelled]) { + if ([weakSelf isCancelled]) { return; } - if (self.error) { + if (weakSelf.error) { if (failure) { - dispatch_async(self.failureCallbackQueue ? self.failureCallbackQueue : dispatch_get_main_queue(), ^{ - failure(self, self.error); + dispatch_async(weakSelf.failureCallbackQueue ? weakSelf.failureCallbackQueue : dispatch_get_main_queue(), ^{ + failure(weakSelf, weakSelf.error); }); } } else { dispatch_async(property_list_request_operation_processing_queue(), ^(void) { - id propertyList = self.responsePropertyList; + id propertyList = weakSelf.responsePropertyList; if (self.propertyListError) { if (failure) { - dispatch_async(self.failureCallbackQueue ? self.failureCallbackQueue : dispatch_get_main_queue(), ^{ - failure(self, self.error); + dispatch_async(weakSelf.failureCallbackQueue ? weakSelf.failureCallbackQueue : dispatch_get_main_queue(), ^{ + failure(weakSelf, weakSelf.error); }); } } else { if (success) { - dispatch_async(self.successCallbackQueue ? self.successCallbackQueue : dispatch_get_main_queue(), ^{ - success(self, propertyList); + dispatch_async(weakSelf.successCallbackQueue ? weakSelf.successCallbackQueue : dispatch_get_main_queue(), ^{ + success(weakSelf, propertyList); }); } } diff --git a/AFNetworking/AFURLConnectionOperation.h b/AFNetworking/AFURLConnectionOperation.h index 0da353a..5879526 100644 --- a/AFNetworking/AFURLConnectionOperation.h +++ b/AFNetworking/AFURLConnectionOperation.h @@ -84,7 +84,7 @@ extern NSString * const AFNetworkingOperationDidFinishNotification; /** The run loop modes in which the operation will run on the network thread. By default, this is a single-member set containing `NSRunLoopCommonModes`. */ -@property (nonatomic, retain) NSSet *runLoopModes; +@property (nonatomic) NSSet *runLoopModes; ///----------------------------------------- /// @name Getting URL Connection Information @@ -93,17 +93,17 @@ extern NSString * const AFNetworkingOperationDidFinishNotification; /** The request used by the operation's connection. */ -@property (readonly, nonatomic, retain) NSURLRequest *request; +@property (readonly, nonatomic, strong) NSURLRequest *request; /** The last response received by the operation's connection. */ -@property (readonly, nonatomic, retain) NSURLResponse *response; +@property (readonly, nonatomic, strong) NSURLResponse *response; /** The error, if any, that occured in the lifecycle of the request. */ -@property (readonly, nonatomic, retain) NSError *error; +@property (readonly, nonatomic, strong) NSError *error; ///---------------------------- /// @name Getting Response Data @@ -112,7 +112,7 @@ extern NSString * const AFNetworkingOperationDidFinishNotification; /** The data received during the request. */ -@property (readonly, nonatomic, retain) NSData *responseData; +@property (readonly, nonatomic, strong) NSData *responseData; /** The string representation of the response data. @@ -130,14 +130,14 @@ extern NSString * const AFNetworkingOperationDidFinishNotification; @discussion This property acts as a proxy to the `HTTPBodyStream` property of `request`. */ -@property (nonatomic, retain) NSInputStream *inputStream; +@property (nonatomic) NSInputStream *inputStream; /** The output stream that is used to write data received until the request is finished. @discussion By default, data is accumulated into a buffer that is stored into `responseData` upon completion of the request. When `outputStream` is set, the data will not be accumulated into an internal buffer, and as a result, the `responseData` property of the completed request will be `nil`. The output stream will be scheduled in the network thread runloop upon being set. */ -@property (nonatomic, retain) NSOutputStream *outputStream; +@property (nonatomic) NSOutputStream *outputStream; ///------------------------------------------------------ /// @name Initializing an AFURLConnectionOperation Object diff --git a/AFNetworking/AFURLConnectionOperation.m b/AFNetworking/AFURLConnectionOperation.m index 9686580..936a2d2 100644 --- a/AFNetworking/AFURLConnectionOperation.m +++ b/AFNetworking/AFURLConnectionOperation.m @@ -103,12 +103,12 @@ static inline BOOL AFStateTransitionIsValid(AFOperationState fromState, AFOperat @interface AFURLConnectionOperation () @property (readwrite, nonatomic, assign) AFOperationState state; @property (readwrite, nonatomic, assign, getter = isCancelled) BOOL cancelled; -@property (readwrite, nonatomic, retain) NSRecursiveLock *lock; -@property (readwrite, nonatomic, retain) NSURLConnection *connection; -@property (readwrite, nonatomic, retain) NSURLRequest *request; -@property (readwrite, nonatomic, retain) NSURLResponse *response; -@property (readwrite, nonatomic, retain) NSError *error; -@property (readwrite, nonatomic, retain) NSData *responseData; +@property (readwrite, nonatomic, strong) NSRecursiveLock *lock; +@property (readwrite, nonatomic, strong) NSURLConnection *connection; +@property (readwrite, nonatomic, strong) NSURLRequest *request; +@property (readwrite, nonatomic, strong) NSURLResponse *response; +@property (readwrite, nonatomic, strong) NSError *error; +@property (readwrite, nonatomic, strong) NSData *responseData; @property (readwrite, nonatomic, copy) NSString *responseString; @property (readwrite, nonatomic, assign) long long totalBytesRead; @property (readwrite, nonatomic, assign) AFBackgroundTaskIdentifier backgroundTaskIdentifier; @@ -147,9 +147,9 @@ static inline BOOL AFStateTransitionIsValid(AFOperationState fromState, AFOperat + (void)networkRequestThreadEntryPoint:(id)__unused object { do { - NSAutoreleasePool *runLoopPool = [[NSAutoreleasePool alloc] init]; - [[NSRunLoop currentRunLoop] run]; - [runLoopPool drain]; + @autoreleasepool { + [[NSRunLoop currentRunLoop] run]; + } } while (YES); } @@ -171,7 +171,7 @@ static inline BOOL AFStateTransitionIsValid(AFOperationState fromState, AFOperat return nil; } - self.lock = [[[NSRecursiveLock alloc] init] autorelease]; + self.lock = [[NSRecursiveLock alloc] init]; self.lock.name = kAFNetworkingLockName; self.runLoopModes = [NSSet setWithObject:NSRunLoopCommonModes]; @@ -186,20 +186,12 @@ static inline BOOL AFStateTransitionIsValid(AFOperationState fromState, AFOperat } - (void)dealloc { - [_lock release]; - [_runLoopModes release]; - [_request release]; - [_response release]; - [_error release]; - [_responseData release]; - [_responseString release]; if (_outputStream) { [_outputStream close]; - [_outputStream release]; _outputStream = nil; } @@ -210,16 +202,8 @@ static inline BOOL AFStateTransitionIsValid(AFOperationState fromState, AFOperat } #endif - [_uploadProgress release]; - [_downloadProgress release]; - [_authenticationChallenge release]; - [_authenticationAgainstProtectionSpace release]; - [_cacheResponse release]; - [_redirectResponse release]; - [_connection release]; - [super dealloc]; } - (NSString *)description { @@ -231,7 +215,7 @@ static inline BOOL AFStateTransitionIsValid(AFOperationState fromState, AFOperat if (!block) { [super setCompletionBlock:nil]; } else { - __block id _blockSelf = self; + __unsafe_unretained id _blockSelf = self; [super setCompletionBlock:^ { block(); [_blockSelf setCompletionBlock:nil]; @@ -246,7 +230,7 @@ static inline BOOL AFStateTransitionIsValid(AFOperationState fromState, AFOperat - (void)setInputStream:(NSInputStream *)inputStream { [self willChangeValueForKey:@"inputStream"]; - NSMutableURLRequest *mutableRequest = [[self.request mutableCopy] autorelease]; + NSMutableURLRequest *mutableRequest = [self.request mutableCopy]; mutableRequest.HTTPBodyStream = inputStream; self.request = mutableRequest; [self didChangeValueForKey:@"inputStream"]; @@ -254,11 +238,9 @@ static inline BOOL AFStateTransitionIsValid(AFOperationState fromState, AFOperat - (void)setOutputStream:(NSOutputStream *)outputStream { [self willChangeValueForKey:@"outputStream"]; - [outputStream retain]; if (_outputStream) { [_outputStream close]; - [_outputStream release]; } _outputStream = outputStream; [self didChangeValueForKey:@"outputStream"]; @@ -344,10 +326,10 @@ static inline BOOL AFStateTransitionIsValid(AFOperationState fromState, AFOperat if (!_responseString && self.response && self.responseData) { NSStringEncoding textEncoding = NSUTF8StringEncoding; if (self.response.textEncodingName) { - textEncoding = CFStringConvertEncodingToNSStringEncoding(CFStringConvertIANACharSetNameToEncoding((CFStringRef)self.response.textEncodingName)); + textEncoding = CFStringConvertEncodingToNSStringEncoding(CFStringConvertIANACharSetNameToEncoding((__bridge CFStringRef)self.response.textEncodingName)); } - self.responseString = [[[NSString alloc] initWithData:self.responseData encoding:textEncoding] autorelease]; + self.responseString = [[NSString alloc] initWithData:self.responseData encoding:textEncoding]; } [self.lock unlock]; @@ -416,7 +398,7 @@ static inline BOOL AFStateTransitionIsValid(AFOperationState fromState, AFOperat if ([self isCancelled]) { [self finish]; } else { - self.connection = [[[NSURLConnection alloc] initWithRequest:self.request delegate:self startImmediately:NO] autorelease]; + self.connection = [[NSURLConnection alloc] initWithRequest:self.request delegate:self startImmediately:NO]; NSRunLoop *runLoop = [NSRunLoop currentRunLoop]; for (NSString *runLoopMode in self.runLoopModes) { @@ -496,8 +478,8 @@ didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge if ([challenge previousFailureCount] == 0) { NSURLCredential *credential = nil; - NSString *username = [(NSString *)CFURLCopyUserName((CFURLRef)[self.request URL]) autorelease]; - NSString *password = [(NSString *)CFURLCopyPassword((CFURLRef)[self.request URL]) autorelease]; + NSString *username = (__bridge_transfer NSString *)CFURLCopyUserName((__bridge CFURLRef)[self.request URL]); + NSString *password = (__bridge_transfer NSString *)CFURLCopyPassword((__bridge CFURLRef)[self.request URL]); if (username && password) { credential = [NSURLCredential credentialWithUser:username password:password persistence:NSURLCredentialPersistenceNone]; diff --git a/AFNetworking/AFXMLRequestOperation.h b/AFNetworking/AFXMLRequestOperation.h index 0beb677..ca16d42 100644 --- a/AFNetworking/AFXMLRequestOperation.h +++ b/AFNetworking/AFXMLRequestOperation.h @@ -48,7 +48,7 @@ /** An `NSXMLParser` object constructed from the response data. */ -@property (readonly, nonatomic, retain) NSXMLParser *responseXMLParser; +@property (readonly, nonatomic) NSXMLParser *responseXMLParser; #if __MAC_OS_X_VERSION_MIN_REQUIRED /** diff --git a/AFNetworking/AFXMLRequestOperation.m b/AFNetworking/AFXMLRequestOperation.m index f40cacb..dbc62a1 100644 --- a/AFNetworking/AFXMLRequestOperation.m +++ b/AFNetworking/AFXMLRequestOperation.m @@ -34,11 +34,11 @@ static dispatch_queue_t xml_request_operation_processing_queue() { } @interface AFXMLRequestOperation () -@property (readwrite, nonatomic, retain) NSXMLParser *responseXMLParser; +@property (readwrite, nonatomic) NSXMLParser *responseXMLParser; #if __MAC_OS_X_VERSION_MIN_REQUIRED @property (readwrite, nonatomic, retain) NSXMLDocument *responseXMLDocument; #endif -@property (readwrite, nonatomic, retain) NSError *XMLError; +@property (readwrite, nonatomic) NSError *XMLError; @end @implementation AFXMLRequestOperation @@ -52,7 +52,7 @@ static dispatch_queue_t xml_request_operation_processing_queue() { success:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, NSXMLParser *XMLParser))success failure:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, NSXMLParser *XMLParser))failure { - AFXMLRequestOperation *requestOperation = [[[self alloc] initWithRequest:urlRequest] autorelease]; + AFXMLRequestOperation *requestOperation = [[self alloc] initWithRequest:urlRequest]; [requestOperation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) { if (success) { success(operation.request, operation.response, responseObject); @@ -71,7 +71,7 @@ static dispatch_queue_t xml_request_operation_processing_queue() { success:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, NSXMLDocument *document))success failure:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, NSXMLDocument *document))failure { - AFXMLRequestOperation *requestOperation = [[[self alloc] initWithRequest:urlRequest] autorelease]; + AFXMLRequestOperation *requestOperation = [[self alloc] initWithRequest:urlRequest]; [requestOperation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, __unused id responseObject) { if (success) { NSXMLDocument *XMLDocument = [(AFXMLRequestOperation *)operation responseXMLDocument]; @@ -88,21 +88,10 @@ static dispatch_queue_t xml_request_operation_processing_queue() { } #endif -- (void)dealloc { - [_responseXMLParser release]; - -#if __MAC_OS_X_VERSION_MIN_REQUIRED - [_responseXMLDocument release]; -#endif - - [_XMLError release]; - - [super dealloc]; -} - (NSXMLParser *)responseXMLParser { if (!_responseXMLParser && [self.responseData length] > 0 && [self isFinished]) { - self.responseXMLParser = [[[NSXMLParser alloc] initWithData:self.responseData] autorelease]; + self.responseXMLParser = [[NSXMLParser alloc] initWithData:self.responseData]; } return _responseXMLParser; @@ -112,7 +101,7 @@ static dispatch_queue_t xml_request_operation_processing_queue() { - (NSXMLDocument *)responseXMLDocument { if (!_responseXMLDocument && [self.responseData length] > 0 && [self isFinished]) { NSError *error = nil; - self.responseXMLDocument = [[[NSXMLDocument alloc] initWithData:self.responseData options:0 error:&error] autorelease]; + self.responseXMLDocument = [[NSXMLDocument alloc] initWithData:self.responseData options:0 error:&error]; self.XMLError = error; } @@ -149,24 +138,25 @@ static dispatch_queue_t xml_request_operation_processing_queue() { - (void)setCompletionBlockWithSuccess:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure { + __weak AFXMLRequestOperation *weakSelf = self; self.completionBlock = ^ { - if ([self isCancelled]) { + if ([weakSelf isCancelled]) { return; } dispatch_async(xml_request_operation_processing_queue(), ^(void) { - NSXMLParser *XMLParser = self.responseXMLParser; + NSXMLParser *XMLParser = weakSelf.responseXMLParser; if (self.error) { if (failure) { - dispatch_async(self.failureCallbackQueue ? self.failureCallbackQueue : dispatch_get_main_queue(), ^{ - failure(self, self.error); + dispatch_async(weakSelf.failureCallbackQueue ? weakSelf.failureCallbackQueue : dispatch_get_main_queue(), ^{ + failure(weakSelf, weakSelf.error); }); } } else { if (success) { - dispatch_async(self.successCallbackQueue ? self.successCallbackQueue : dispatch_get_main_queue(), ^{ - success(self, XMLParser); + dispatch_async(weakSelf.successCallbackQueue ? weakSelf.successCallbackQueue : dispatch_get_main_queue(), ^{ + success(weakSelf, XMLParser); }); } } diff --git a/AFNetworking/UIImageView+AFNetworking.m b/AFNetworking/UIImageView+AFNetworking.m index ac1f708..d694c35 100644 --- a/AFNetworking/UIImageView+AFNetworking.m +++ b/AFNetworking/UIImageView+AFNetworking.m @@ -111,7 +111,7 @@ static char kAFImageRequestOperationObjectKey; } else { self.image = placeholderImage; - AFImageRequestOperation *requestOperation = [[[AFImageRequestOperation alloc] initWithRequest:urlRequest] autorelease]; + AFImageRequestOperation *requestOperation = [[AFImageRequestOperation alloc] initWithRequest:urlRequest]; [requestOperation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) { if ([[urlRequest URL] isEqual:[[self.af_imageRequestOperation request] URL]]) { self.image = responseObject; diff --git a/Example/AFNetworking Mac Example.xcodeproj/project.pbxproj b/Example/AFNetworking Mac Example.xcodeproj/project.pbxproj index e537260..e3a71f2 100644 --- a/Example/AFNetworking Mac Example.xcodeproj/project.pbxproj +++ b/Example/AFNetworking Mac Example.xcodeproj/project.pbxproj @@ -11,18 +11,16 @@ F8129C321591073C009BFE23 /* AFTwitterAPIClient.m in Sources */ = {isa = PBXBuildFile; fileRef = F8129C251591073C009BFE23 /* AFTwitterAPIClient.m */; }; F8129C341591073C009BFE23 /* Tweet.m in Sources */ = {isa = PBXBuildFile; fileRef = F8129C2B1591073C009BFE23 /* Tweet.m */; }; F8129C351591073C009BFE23 /* User.m in Sources */ = {isa = PBXBuildFile; fileRef = F8129C2D1591073C009BFE23 /* User.m */; }; - F8129C631591090B009BFE23 /* AFHTTPClient.m in Sources */ = {isa = PBXBuildFile; fileRef = F8129C4F1591090B009BFE23 /* AFHTTPClient.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - F8129C641591090B009BFE23 /* AFHTTPRequestOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = F8129C511591090B009BFE23 /* AFHTTPRequestOperation.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - F8129C651591090B009BFE23 /* AFImageRequestOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = F8129C531591090B009BFE23 /* AFImageRequestOperation.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - F8129C661591090B009BFE23 /* AFJSONRequestOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = F8129C551591090B009BFE23 /* AFJSONRequestOperation.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - F8129C681591090B009BFE23 /* AFNetworkActivityIndicatorManager.m in Sources */ = {isa = PBXBuildFile; fileRef = F8129C591591090B009BFE23 /* AFNetworkActivityIndicatorManager.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - F8129C691591090B009BFE23 /* AFPropertyListRequestOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = F8129C5C1591090B009BFE23 /* AFPropertyListRequestOperation.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - F8129C6A1591090B009BFE23 /* AFURLConnectionOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = F8129C5E1591090B009BFE23 /* AFURLConnectionOperation.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - F8129C6B1591090B009BFE23 /* AFXMLRequestOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = F8129C601591090B009BFE23 /* AFXMLRequestOperation.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - F8129C6C1591090B009BFE23 /* UIImageView+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = F8129C621591090B009BFE23 /* UIImageView+AFNetworking.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; F8129C6F15910B15009BFE23 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = F8129C6E15910B15009BFE23 /* main.m */; }; F8129C7115910B3E009BFE23 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = F8129C7015910B3E009BFE23 /* MainMenu.xib */; }; F8129C7715910C40009BFE23 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = F8129C7515910C40009BFE23 /* AppDelegate.m */; }; + F82EB07C159A172000B10B56 /* AFHTTPClient.m in Sources */ = {isa = PBXBuildFile; fileRef = F82EB06E159A172000B10B56 /* AFHTTPClient.m */; }; + F82EB07D159A172000B10B56 /* AFHTTPRequestOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = F82EB070159A172000B10B56 /* AFHTTPRequestOperation.m */; }; + F82EB07E159A172000B10B56 /* AFImageRequestOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = F82EB072159A172000B10B56 /* AFImageRequestOperation.m */; }; + F82EB07F159A172000B10B56 /* AFJSONRequestOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = F82EB074159A172000B10B56 /* AFJSONRequestOperation.m */; }; + F82EB080159A172000B10B56 /* AFPropertyListRequestOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = F82EB077159A172000B10B56 /* AFPropertyListRequestOperation.m */; }; + F82EB081159A172000B10B56 /* AFURLConnectionOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = F82EB079159A172000B10B56 /* AFURLConnectionOperation.m */; }; + F82EB082159A172000B10B56 /* AFXMLRequestOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = F82EB07B159A172000B10B56 /* AFXMLRequestOperation.m */; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ @@ -37,29 +35,25 @@ F8129C2C1591073C009BFE23 /* User.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = User.h; sourceTree = ""; }; F8129C2D1591073C009BFE23 /* User.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = User.m; sourceTree = ""; }; F8129C311591073C009BFE23 /* AFTwitterAPIClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AFTwitterAPIClient.h; path = Classes/AFTwitterAPIClient.h; sourceTree = SOURCE_ROOT; }; - F8129C4E1591090B009BFE23 /* AFHTTPClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AFHTTPClient.h; path = ../AFNetworking/AFHTTPClient.h; sourceTree = ""; }; - F8129C4F1591090B009BFE23 /* AFHTTPClient.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AFHTTPClient.m; path = ../AFNetworking/AFHTTPClient.m; sourceTree = ""; }; - F8129C501591090B009BFE23 /* AFHTTPRequestOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AFHTTPRequestOperation.h; path = ../AFNetworking/AFHTTPRequestOperation.h; sourceTree = ""; }; - F8129C511591090B009BFE23 /* AFHTTPRequestOperation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AFHTTPRequestOperation.m; path = ../AFNetworking/AFHTTPRequestOperation.m; sourceTree = ""; }; - F8129C521591090B009BFE23 /* AFImageRequestOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AFImageRequestOperation.h; path = ../AFNetworking/AFImageRequestOperation.h; sourceTree = ""; }; - F8129C531591090B009BFE23 /* AFImageRequestOperation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AFImageRequestOperation.m; path = ../AFNetworking/AFImageRequestOperation.m; sourceTree = ""; }; - F8129C541591090B009BFE23 /* AFJSONRequestOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AFJSONRequestOperation.h; path = ../AFNetworking/AFJSONRequestOperation.h; sourceTree = ""; }; - F8129C551591090B009BFE23 /* AFJSONRequestOperation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AFJSONRequestOperation.m; path = ../AFNetworking/AFJSONRequestOperation.m; sourceTree = ""; }; - F8129C581591090B009BFE23 /* AFNetworkActivityIndicatorManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AFNetworkActivityIndicatorManager.h; path = ../AFNetworking/AFNetworkActivityIndicatorManager.h; sourceTree = ""; }; - F8129C591591090B009BFE23 /* AFNetworkActivityIndicatorManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AFNetworkActivityIndicatorManager.m; path = ../AFNetworking/AFNetworkActivityIndicatorManager.m; sourceTree = ""; }; - F8129C5A1591090B009BFE23 /* AFNetworking.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AFNetworking.h; path = ../AFNetworking/AFNetworking.h; sourceTree = ""; }; - F8129C5B1591090B009BFE23 /* AFPropertyListRequestOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AFPropertyListRequestOperation.h; path = ../AFNetworking/AFPropertyListRequestOperation.h; sourceTree = ""; }; - F8129C5C1591090B009BFE23 /* AFPropertyListRequestOperation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AFPropertyListRequestOperation.m; path = ../AFNetworking/AFPropertyListRequestOperation.m; sourceTree = ""; }; - F8129C5D1591090B009BFE23 /* AFURLConnectionOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AFURLConnectionOperation.h; path = ../AFNetworking/AFURLConnectionOperation.h; sourceTree = ""; }; - F8129C5E1591090B009BFE23 /* AFURLConnectionOperation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AFURLConnectionOperation.m; path = ../AFNetworking/AFURLConnectionOperation.m; sourceTree = ""; }; - F8129C5F1591090B009BFE23 /* AFXMLRequestOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AFXMLRequestOperation.h; path = ../AFNetworking/AFXMLRequestOperation.h; sourceTree = ""; }; - F8129C601591090B009BFE23 /* AFXMLRequestOperation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AFXMLRequestOperation.m; path = ../AFNetworking/AFXMLRequestOperation.m; sourceTree = ""; }; - F8129C611591090B009BFE23 /* UIImageView+AFNetworking.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "UIImageView+AFNetworking.h"; path = "../AFNetworking/UIImageView+AFNetworking.h"; sourceTree = ""; }; - F8129C621591090B009BFE23 /* UIImageView+AFNetworking.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "UIImageView+AFNetworking.m"; path = "../AFNetworking/UIImageView+AFNetworking.m"; sourceTree = ""; }; F8129C6E15910B15009BFE23 /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = SOURCE_ROOT; }; F8129C7015910B3E009BFE23 /* MainMenu.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MainMenu.xib; sourceTree = SOURCE_ROOT; }; F8129C7515910C40009BFE23 /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = SOURCE_ROOT; }; F8129C7615910C40009BFE23 /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = SOURCE_ROOT; }; + F82EB06D159A172000B10B56 /* AFHTTPClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AFHTTPClient.h; path = ../AFNetworking/AFHTTPClient.h; sourceTree = ""; }; + F82EB06E159A172000B10B56 /* AFHTTPClient.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AFHTTPClient.m; path = ../AFNetworking/AFHTTPClient.m; sourceTree = ""; }; + F82EB06F159A172000B10B56 /* AFHTTPRequestOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AFHTTPRequestOperation.h; path = ../AFNetworking/AFHTTPRequestOperation.h; sourceTree = ""; }; + F82EB070159A172000B10B56 /* AFHTTPRequestOperation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AFHTTPRequestOperation.m; path = ../AFNetworking/AFHTTPRequestOperation.m; sourceTree = ""; }; + F82EB071159A172000B10B56 /* AFImageRequestOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AFImageRequestOperation.h; path = ../AFNetworking/AFImageRequestOperation.h; sourceTree = ""; }; + F82EB072159A172000B10B56 /* AFImageRequestOperation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AFImageRequestOperation.m; path = ../AFNetworking/AFImageRequestOperation.m; sourceTree = ""; }; + F82EB073159A172000B10B56 /* AFJSONRequestOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AFJSONRequestOperation.h; path = ../AFNetworking/AFJSONRequestOperation.h; sourceTree = ""; }; + F82EB074159A172000B10B56 /* AFJSONRequestOperation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AFJSONRequestOperation.m; path = ../AFNetworking/AFJSONRequestOperation.m; sourceTree = ""; }; + F82EB075159A172000B10B56 /* AFNetworking.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AFNetworking.h; path = ../AFNetworking/AFNetworking.h; sourceTree = ""; }; + F82EB076159A172000B10B56 /* AFPropertyListRequestOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AFPropertyListRequestOperation.h; path = ../AFNetworking/AFPropertyListRequestOperation.h; sourceTree = ""; }; + F82EB077159A172000B10B56 /* AFPropertyListRequestOperation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AFPropertyListRequestOperation.m; path = ../AFNetworking/AFPropertyListRequestOperation.m; sourceTree = ""; }; + F82EB078159A172000B10B56 /* AFURLConnectionOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AFURLConnectionOperation.h; path = ../AFNetworking/AFURLConnectionOperation.h; sourceTree = ""; }; + F82EB079159A172000B10B56 /* AFURLConnectionOperation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AFURLConnectionOperation.m; path = ../AFNetworking/AFURLConnectionOperation.m; sourceTree = ""; }; + F82EB07A159A172000B10B56 /* AFXMLRequestOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AFXMLRequestOperation.h; path = ../AFNetworking/AFXMLRequestOperation.h; sourceTree = ""; }; + F82EB07B159A172000B10B56 /* AFXMLRequestOperation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AFXMLRequestOperation.m; path = ../AFNetworking/AFXMLRequestOperation.m; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -149,29 +143,33 @@ F8129C4C15910901009BFE23 /* Vendor */ = { isa = PBXGroup; children = ( - F8129C4E1591090B009BFE23 /* AFHTTPClient.h */, - F8129C4F1591090B009BFE23 /* AFHTTPClient.m */, - F8129C501591090B009BFE23 /* AFHTTPRequestOperation.h */, - F8129C511591090B009BFE23 /* AFHTTPRequestOperation.m */, - F8129C521591090B009BFE23 /* AFImageRequestOperation.h */, - F8129C531591090B009BFE23 /* AFImageRequestOperation.m */, - F8129C541591090B009BFE23 /* AFJSONRequestOperation.h */, - F8129C551591090B009BFE23 /* AFJSONRequestOperation.m */, - F8129C581591090B009BFE23 /* AFNetworkActivityIndicatorManager.h */, - F8129C591591090B009BFE23 /* AFNetworkActivityIndicatorManager.m */, - F8129C5A1591090B009BFE23 /* AFNetworking.h */, - F8129C5B1591090B009BFE23 /* AFPropertyListRequestOperation.h */, - F8129C5C1591090B009BFE23 /* AFPropertyListRequestOperation.m */, - F8129C5D1591090B009BFE23 /* AFURLConnectionOperation.h */, - F8129C5E1591090B009BFE23 /* AFURLConnectionOperation.m */, - F8129C5F1591090B009BFE23 /* AFXMLRequestOperation.h */, - F8129C601591090B009BFE23 /* AFXMLRequestOperation.m */, - F8129C611591090B009BFE23 /* UIImageView+AFNetworking.h */, - F8129C621591090B009BFE23 /* UIImageView+AFNetworking.m */, + F82EB083159A172500B10B56 /* AFNetworking */, ); name = Vendor; sourceTree = ""; }; + F82EB083159A172500B10B56 /* AFNetworking */ = { + isa = PBXGroup; + children = ( + F82EB06D159A172000B10B56 /* AFHTTPClient.h */, + F82EB06E159A172000B10B56 /* AFHTTPClient.m */, + F82EB06F159A172000B10B56 /* AFHTTPRequestOperation.h */, + F82EB070159A172000B10B56 /* AFHTTPRequestOperation.m */, + F82EB071159A172000B10B56 /* AFImageRequestOperation.h */, + F82EB072159A172000B10B56 /* AFImageRequestOperation.m */, + F82EB073159A172000B10B56 /* AFJSONRequestOperation.h */, + F82EB074159A172000B10B56 /* AFJSONRequestOperation.m */, + F82EB075159A172000B10B56 /* AFNetworking.h */, + F82EB076159A172000B10B56 /* AFPropertyListRequestOperation.h */, + F82EB077159A172000B10B56 /* AFPropertyListRequestOperation.m */, + F82EB078159A172000B10B56 /* AFURLConnectionOperation.h */, + F82EB079159A172000B10B56 /* AFURLConnectionOperation.m */, + F82EB07A159A172000B10B56 /* AFXMLRequestOperation.h */, + F82EB07B159A172000B10B56 /* AFXMLRequestOperation.m */, + ); + name = AFNetworking; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -236,17 +234,15 @@ F8129C341591073C009BFE23 /* Tweet.m in Sources */, F8129C351591073C009BFE23 /* User.m in Sources */, F8129C321591073C009BFE23 /* AFTwitterAPIClient.m in Sources */, - F8129C631591090B009BFE23 /* AFHTTPClient.m in Sources */, - F8129C641591090B009BFE23 /* AFHTTPRequestOperation.m in Sources */, - F8129C651591090B009BFE23 /* AFImageRequestOperation.m in Sources */, - F8129C661591090B009BFE23 /* AFJSONRequestOperation.m in Sources */, - F8129C681591090B009BFE23 /* AFNetworkActivityIndicatorManager.m in Sources */, - F8129C691591090B009BFE23 /* AFPropertyListRequestOperation.m in Sources */, - F8129C6A1591090B009BFE23 /* AFURLConnectionOperation.m in Sources */, - F8129C6B1591090B009BFE23 /* AFXMLRequestOperation.m in Sources */, - F8129C6C1591090B009BFE23 /* UIImageView+AFNetworking.m in Sources */, F8129C6F15910B15009BFE23 /* main.m in Sources */, F8129C7715910C40009BFE23 /* AppDelegate.m in Sources */, + F82EB07C159A172000B10B56 /* AFHTTPClient.m in Sources */, + F82EB07D159A172000B10B56 /* AFHTTPRequestOperation.m in Sources */, + F82EB07E159A172000B10B56 /* AFImageRequestOperation.m in Sources */, + F82EB07F159A172000B10B56 /* AFJSONRequestOperation.m in Sources */, + F82EB080159A172000B10B56 /* AFPropertyListRequestOperation.m in Sources */, + F82EB081159A172000B10B56 /* AFURLConnectionOperation.m in Sources */, + F82EB082159A172000B10B56 /* AFXMLRequestOperation.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/Example/AFNetworking iOS Example.xcodeproj/project.pbxproj b/Example/AFNetworking iOS Example.xcodeproj/project.pbxproj index 39e7fc7..987dfbf 100644 --- a/Example/AFNetworking iOS Example.xcodeproj/project.pbxproj +++ b/Example/AFNetworking iOS Example.xcodeproj/project.pbxproj @@ -23,15 +23,15 @@ F8FA9494150EF97E00ED4EAD /* Tweet.m in Sources */ = {isa = PBXBuildFile; fileRef = F8FA9493150EF97E00ED4EAD /* Tweet.m */; }; F8FA9497150EF98800ED4EAD /* User.m in Sources */ = {isa = PBXBuildFile; fileRef = F8FA9496150EF98800ED4EAD /* User.m */; }; F8FA949A150EF9DA00ED4EAD /* PublicTimelineViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = F8FA9499150EF9DA00ED4EAD /* PublicTimelineViewController.m */; }; - F8FA94B1150EFEC100ED4EAD /* AFHTTPClient.m in Sources */ = {isa = PBXBuildFile; fileRef = F8FA949D150EFEC100ED4EAD /* AFHTTPClient.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - F8FA94B2150EFEC100ED4EAD /* AFHTTPRequestOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = F8FA949F150EFEC100ED4EAD /* AFHTTPRequestOperation.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - F8FA94B3150EFEC100ED4EAD /* AFImageRequestOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = F8FA94A1150EFEC100ED4EAD /* AFImageRequestOperation.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - F8FA94B4150EFEC100ED4EAD /* AFJSONRequestOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = F8FA94A3150EFEC100ED4EAD /* AFJSONRequestOperation.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - F8FA94B6150EFEC100ED4EAD /* AFNetworkActivityIndicatorManager.m in Sources */ = {isa = PBXBuildFile; fileRef = F8FA94A7150EFEC100ED4EAD /* AFNetworkActivityIndicatorManager.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - F8FA94B7150EFEC100ED4EAD /* AFPropertyListRequestOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = F8FA94AA150EFEC100ED4EAD /* AFPropertyListRequestOperation.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - F8FA94B8150EFEC100ED4EAD /* AFURLConnectionOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = F8FA94AC150EFEC100ED4EAD /* AFURLConnectionOperation.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - F8FA94B9150EFEC100ED4EAD /* AFXMLRequestOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = F8FA94AE150EFEC100ED4EAD /* AFXMLRequestOperation.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - F8FA94BA150EFEC100ED4EAD /* UIImageView+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = F8FA94B0150EFEC100ED4EAD /* UIImageView+AFNetworking.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + F8FA94B1150EFEC100ED4EAD /* AFHTTPClient.m in Sources */ = {isa = PBXBuildFile; fileRef = F8FA949D150EFEC100ED4EAD /* AFHTTPClient.m */; }; + F8FA94B2150EFEC100ED4EAD /* AFHTTPRequestOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = F8FA949F150EFEC100ED4EAD /* AFHTTPRequestOperation.m */; }; + F8FA94B3150EFEC100ED4EAD /* AFImageRequestOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = F8FA94A1150EFEC100ED4EAD /* AFImageRequestOperation.m */; }; + F8FA94B4150EFEC100ED4EAD /* AFJSONRequestOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = F8FA94A3150EFEC100ED4EAD /* AFJSONRequestOperation.m */; }; + F8FA94B6150EFEC100ED4EAD /* AFNetworkActivityIndicatorManager.m in Sources */ = {isa = PBXBuildFile; fileRef = F8FA94A7150EFEC100ED4EAD /* AFNetworkActivityIndicatorManager.m */; }; + F8FA94B7150EFEC100ED4EAD /* AFPropertyListRequestOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = F8FA94AA150EFEC100ED4EAD /* AFPropertyListRequestOperation.m */; }; + F8FA94B8150EFEC100ED4EAD /* AFURLConnectionOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = F8FA94AC150EFEC100ED4EAD /* AFURLConnectionOperation.m */; }; + F8FA94B9150EFEC100ED4EAD /* AFXMLRequestOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = F8FA94AE150EFEC100ED4EAD /* AFXMLRequestOperation.m */; }; + F8FA94BA150EFEC100ED4EAD /* UIImageView+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = F8FA94B0150EFEC100ED4EAD /* UIImageView+AFNetworking.m */; }; F8FA94C1150F019100ED4EAD /* TweetTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = F8FA94C0150F019100ED4EAD /* TweetTableViewCell.m */; }; F8FA94D0150F094D00ED4EAD /* profile-image-placeholder.png in Resources */ = {isa = PBXBuildFile; fileRef = F8FA94CC150F094D00ED4EAD /* profile-image-placeholder.png */; }; F8FA94D1150F094D00ED4EAD /* profile-image-placeholder@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = F8FA94CD150F094D00ED4EAD /* profile-image-placeholder@2x.png */; }; diff --git a/Example/AppDelegate.h b/Example/AppDelegate.h index 0241509..bc25a4b 100644 --- a/Example/AppDelegate.h +++ b/Example/AppDelegate.h @@ -42,7 +42,7 @@ @interface AppDelegate : NSObject @property (strong) IBOutlet NSWindow *window; -@property (weak) IBOutlet NSTableView *tableView; +@property (strong) IBOutlet NSTableView *tableView; @property (strong) IBOutlet NSArrayController *tweetsArrayController; @end diff --git a/Example/Classes/Models/Tweet.h b/Example/Classes/Models/Tweet.h index a08fd3c..9954a2b 100644 --- a/Example/Classes/Models/Tweet.h +++ b/Example/Classes/Models/Tweet.h @@ -26,10 +26,10 @@ @interface Tweet : NSObject -@property (readonly) NSUInteger tweetID; -@property (readonly) NSString *text; +@property (readonly, assign) NSUInteger tweetID; +@property (readonly, strong) NSString *text; -@property (readonly) User *user; +@property (readonly, strong) User *user; - (id)initWithAttributes:(NSDictionary *)attributes; diff --git a/Example/Classes/Models/Tweet.m b/Example/Classes/Models/Tweet.m index 14fe2d0..683e25e 100644 --- a/Example/Classes/Models/Tweet.m +++ b/Example/Classes/Models/Tweet.m @@ -25,13 +25,7 @@ #import "AFTwitterAPIClient.h" -@implementation Tweet { -@private - NSUInteger _tweetID; - __strong NSString *_text; - __strong User *_user; -} - +@implementation Tweet @synthesize tweetID = _tweetID; @synthesize text = _text; @synthesize user = _user; diff --git a/Example/Classes/Models/User.h b/Example/Classes/Models/User.h index f3ea855..25419ef 100644 --- a/Example/Classes/Models/User.h +++ b/Example/Classes/Models/User.h @@ -27,7 +27,7 @@ extern NSString * const kUserProfileImageDidLoadNotification; @interface User : NSObject @property (readonly) NSUInteger userID; -@property (readonly) NSString *username; +@property (strong, readonly) NSString *username; @property (unsafe_unretained, readonly) NSURL *profileImageURL; - (id)initWithAttributes:(NSDictionary *)attributes;