From 5081868121b8362b21b3d11accccf4b5b950440f Mon Sep 17 00:00:00 2001 From: fumoboy007 Date: Sun, 19 May 2013 12:52:58 -0700 Subject: [PATCH] [Issue #906] Lazily-initializing outputStream property for AFURLConnectionOperation Signed-off-by: Mattt Thompson --- AFNetworking/AFURLConnectionOperation.m | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/AFNetworking/AFURLConnectionOperation.m b/AFNetworking/AFURLConnectionOperation.m index ca97832..e43c490 100644 --- a/AFNetworking/AFURLConnectionOperation.m +++ b/AFNetworking/AFURLConnectionOperation.m @@ -254,16 +254,14 @@ static inline BOOL AFStateTransitionIsValid(AFOperationState fromState, AFOperat self.request = urlRequest; self.shouldUseCredentialStorage = YES; - - self.outputStream = [NSOutputStream outputStreamToMemory]; - - self.state = AFOperationReadyState; // #ifdef included for backwards-compatibility #ifdef _AFNETWORKING_ALLOW_INVALID_SSL_CERTIFICATES_ self.allowsInvalidSSLCertificate = YES; #endif + self.state = AFOperationReadyState; + return self; } @@ -313,7 +311,16 @@ static inline BOOL AFStateTransitionIsValid(AFOperationState fromState, AFOperat [self didChangeValueForKey:@"inputStream"]; } +- (NSOutputStream *)outputStream { + if (!_outputStream) { + self.outputStream = [NSOutputStream outputStreamToMemory]; + } + + return _outputStream; +} + - (void)setOutputStream:(NSOutputStream *)outputStream { + [self.lock lock]; if (outputStream == _outputStream) { return; } @@ -324,6 +331,7 @@ static inline BOOL AFStateTransitionIsValid(AFOperationState fromState, AFOperat } _outputStream = outputStream; [self didChangeValueForKey:@"outputStream"]; + [self.lock unlock]; } #if defined(__IPHONE_OS_VERSION_MIN_REQUIRED)