On Wed, Apr 29, 2009 at 11:31 PM, Nick Hristov <n...@freshlybakedapps.com> wrote: > - (id) initWithURL: (NSURL*) someurl > { > self = [super init]; > if (self != nil) { > self->url = [someurl copy]; > NSURLRequest * request = [NSURLRequest requestWithURL:self->url > cachePolicy: NSURLRequestUseProtocolCachePolicy timeoutInterval: 6.0]; > NSLog([NSString stringByAppendingStrings:@"Request: " , [request > description], nil]);
Ugg. Don't do this, please. NSLog accepts as its first argument a printf style format string. Also, '%@' gets replaced with [aObject description]. So all you really need is: NSLog( @"Request: %@", request ); > self->finished = NO; > self->connection = [[NSURLConnection alloc] > initWithRequest:request delegate:self startImmediately:NO]; > } > return self; > } > > - (void) downloadData > { > NSLog([self->connection description]); Please don't do this either. If [connection description] happens to contain a '%' then your program will crash. The proper way is to ALWAYS specify a format string: NSLog( @"%@", connection ); > NSLog(@"run, b*$#4rd, run..."); > [self->connection scheduleInRunLoop:[NSRunLoop currentRunLoop] > forMode:NSDefaultRunLoopMode]; > [self->connection start]; > int timeout = 30; > int i = 0; > while(self->finished == NO && [self _deletegateTerminateCheck] == NO) { You probably need to mark 'finished' as volatile in your interface definition for this to work. Otherwise the assembly generated could cause your loop to never exit. > // suspend thread > [NSThread sleepForTimeInterval: 1.0]; Yeah, as others have said, you need to run the runloop. Otherwise the connection can't do any work. > i++; > > /// stupid, but effective safety measure: > if(i >= timeout) { > break; > } > } > } > > - (NSData *) data { > return self->data; > } > > #pragma mark NSConnectionDelegate implementation > - (NSURLRequest *)connection:(NSURLConnection *)connection > willSendRequest:(NSURLRequest *)request redirectResponse:(NSURLResponse > *)response > { > NSLog(@"Will send request"); > return request; > } > > > - (void)connection:(NSURLConnection *)connection > didReceiveResponse:(NSURLResponse *)response > { > NSLog(@"Did get response"); > NSString * encoding = [response textEncodingName]; > self->dataEncoding = [self getEncodingForEncodingName: encoding]; > self->mimeType = [response MIMEType]; You need to retain the values here. > } > > - (void)connection:(NSURLConnection *)connection didReceiveData:(NSData > *)receiveddata > { > NSLog(@"Did get data"); > if([self _deletegateTerminateCheck]) { > if(self->data != nil) { > [self->data release]; > self->data = nil; > } > [self->connection cancel]; > [self->connection release]; > self->connection = nil; > return; > } > if(self->data == nil) { > self->data = [[NSMutableData alloc]init]; > } > [self->data appendData:receiveddata]; > } > > - (void)connectionDidFinishLoading:(NSURLConnection *)connection { > NSLog(@"did finish loading page"); > self->finished = YES; > } > > > - (void)connection:(NSURLConnection *)connection didFailWithError:(NSError > *)error > { > NSLog([NSString stringByAppendingStrings:@"Connection failed with error: > " , [error description], nil]); Again with the format strings. NSLog( @"Connection failed with error: %@", error ); > self->finished = YES; > } > > - (NSCachedURLResponse *)connection:(NSURLConnection *)connection > willCacheResponse:(NSCachedURLResponse *)cachedResponse > { > NSLog(@"Will cache response"); > return cachedResponse; > } > > - (void) dealloc { > if(self->url !=nil) { > [self->url release]; > self->url = nil; > } > if(self->connection != nil) { > [self->connection release]; > self->connection = nil; > } > [super dealloc]; > } What about releasing the other instance variables you assign? _______________________________________________ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) Please do not post admin requests or moderator comments to the list. Contact the moderators at cocoa-dev-admins(at)lists.apple.com Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com