title: How to release memory in objective-c?
body: <p>I am developing a Gps map concept in my app.Here i find memory leaks in my code i resolve some memory leaks finally here three memory leak is coming i don't know how to resolve this please guide me anyone.This is my code base and Screen shots</p>
  
  <p><a href="https://drive.google.com/file/d/0B14zCKcRh39AWm1QNTFMejNqOGc/view?usp=sharing" rel="nofollow">https://drive.google.com/file/d/0B14zCKcRh39AWm1QNTFMejNqOGc/view?usp=sharing</a></p>
  
  <p><a href="https://drive.google.com/file/d/0B14zCKcRh39AcmhyM3R3c1ZrZE0/view?usp=sharing" rel="nofollow">https://drive.google.com/file/d/0B14zCKcRh39AcmhyM3R3c1ZrZE0/view?usp=sharing</a></p>
  
  <pre><code> -(NSArray *)decodePolyLine: (NSMutableString *)encoded {
          [encoded replaceOccurrencesOfString:@"\\\\" withString:@"\\"
                                      options:NSLiteralSearch
                                        range:NSMakeRange(0, [encoded length])];
          NSInteger len = [encoded length];
          NSInteger index = 0;
          NSMutableArray *array = [[[NSMutableArray alloc] init] autorelease];
          NSInteger lat=0;
          NSInteger lng=0;
          while (index &lt; len) {
              NSInteger b;
              NSInteger shift = 0;
              NSInteger result = 0;
              do {
                  b = [encoded characterAtIndex:index++] - 63;
                  result |= (b &amp; 0x1f) &lt;&lt; shift;
                  shift += 5;
              } while (b &gt;= 0x20);
              NSInteger dlat = ((result &amp; 1) ? ~(result &gt;&gt; 1) : (result &gt;&gt; 1));
              lat += dlat;
              shift = 0;
              result = 0;
              do {
                  b = [encoded characterAtIndex:index++] - 63;
                  result |= (b &amp; 0x1f) &lt;&lt; shift;
                  shift += 5;
              } while (b &gt;= 0x20);
              NSInteger dlng = ((result &amp; 1) ? ~(result &gt;&gt; 1) : (result &gt;&gt; 1));
              lng += dlng;
              NSNumber *latitude = [[[NSNumber alloc] initWithFloat:lat * 1e-5] autorelease];
              NSNumber *longitude = [[[NSNumber alloc] initWithFloat:lng * 1e-5] autorelease];
              printf("[%f,", [latitude doubleValue]);
              printf("%f]", [longitude doubleValue]);
              CLLocation *loc = [[[CLLocation alloc] initWithLatitude:[latitude floatValue] longitude:[longitude floatValue]] autorelease];
              [array addObject:loc];
          }
  
          return array;
      }
  
      -(NSArray*) calculateRoutesFrom:(CLLocationCoordinate2D) f to: (CLLocationCoordinate2D) t {
          NSString* saddr = [NSString stringWithFormat:@"%f,%f", f.latitude, f.longitude];
          NSString* daddr = [NSString stringWithFormat:@"%f,%f", t.latitude, t.longitude];
  
          NSString* apiUrlStr = [NSString stringWithFormat:@"http://maps.google.com/maps?output=dragdir&amp;saddr=%@&amp;daddr=%@", saddr, daddr];
          NSURL* apiUrl = [NSURL URLWithString:apiUrlStr];
          NSLog(@"api url: %@", apiUrl);
          NSError *error;
          NSString *apiResponse = [NSString stringWithContentsOfURL:apiUrl encoding:NSUTF8StringEncoding error:&amp;error];
          NSString* encodedPoints = [apiResponse stringByMatching:@"points:\\\"([^\\\"]*)\\\"" capture:1L] ;
  
          return [self decodePolyLine:[encodedPoints mutableCopy]];
  
  
  }
  
  
  
  
  -(void) updateRouteView {
      CGContextRef context =  CGBitmapContextCreate(nil,
                                                    routeView.frame.size.width, 
                                                    routeView.frame.size.height, 
                                                    8, 
                                                    4 * routeView.frame.size.width,
                                                    CGColorSpaceCreateDeviceRGB(),
                                                    (kCGBitmapAlphaInfoMask &amp; kCGImageAlphaPremultipliedLast) | (kCGBitmapByteOrderMask &amp; kCGBitmapByteOrderDefault)) ;
  
  
      CGContextSetStrokeColorWithColor(context, lineColor.CGColor);
      CGContextSetRGBFillColor(context, 0.0, 0.0, 1.0, 1.0);
      CGContextSetLineWidth(context, 3.0);
  
      for(int i = 0; i &lt; routes.count; i++) {
          CLLocation* location = [routes objectAtIndex:i];
          CGPoint point = [mapView convertCoordinate:location.coordinate toPointToView:routeView];
  
          if(i == 0) {
              CGContextMoveToPoint(context, point.x, routeView.frame.size.height - point.y);
          } else {
              CGContextAddLineToPoint(context, point.x, routeView.frame.size.height - point.y);
          }
      }
  
      CGContextStrokePath(context);
  
      CGImageRef image = CGBitmapContextCreateImage(context);
      UIImage* img = [UIImage imageWithCGImage:image];
      CGContextRelease(context);
      routeView.image = img;
     // CGContextRelease(context);
  
  
  
  }
  </code></pre>