• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: iOS - Help with nasty memory leak
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: iOS - Help with nasty memory leak


  • Subject: Re: iOS - Help with nasty memory leak
  • From: Philip Vallone <email@hidden>
  • Date: Sat, 27 Nov 2010 14:42:12 -0500

Thank you,

My viewForAnnotation was all wrong. I was trying code from this tutorial:

http://trentkocurek.wordpress.com/2010/07/21/ios4-map-kit-draggable-annotation-views/

So, I went back and redid my code, which fixed the memory leak and alleviated the need for a custom Annotation View.

- (MKAnnotationView *)mapView:(MKMapView *)MapView viewForAnnotation:(id <MKAnnotation>)annotation
{

	MKPinAnnotationView *pin = (MKPinAnnotationView *) [self.mapView dequeueReusableAnnotationViewWithIdentifier: @"PinIdentifier"];

	if (pin == nil)	{

		pin = [[[MKPinAnnotationView alloc] initWithAnnotation: annotation reuseIdentifier: @"PinIdentifier"] autorelease];

	}else	{
		pin.annotation = annotation;
	}
		pin.pinColor = MKPinAnnotationColorGreen;
		pin.animatesDrop = YES;
		pin.draggable = YES;
		pin.canShowCallout = YES;
		pin.rightCalloutAccessoryView = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];

		UIImage *image = [UIImage imageNamed:@"gps_add.png"];
		UIImageView *imgView = [[[UIImageView alloc] initWithImage:image] autorelease];
		pin.leftCalloutAccessoryView = imgView;


	return pin;

}

Thanks a bunch,

Phil

On Nov 27, 2010, at 11:50 AM, Joar Wingfors wrote:

>
> On 27 nov 2010, at 06.33, Philip Vallone wrote:
>
>> 		if ((self = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:reuseIdentifier])) {
>> 			[self performSelector:NSSelectorFromString(@"setDraggable:") withObject:[NSNumber numberWithBool:YES]];
>> 		}
>
>
> You're replacing the current instance with a new instance here. Is that intended? While not illegal, it is really unusual to do that.
>
> If that's intended, you also would have to release the old instance before replacing it with the new instance (that's the leak). If that was not intended, you probably should be calling [super initWithAnnotation:annotation reuseIdentifier:reuseIdentifier], and in any case, you need to make sure that you *always* call through to the designated initializer of your superclass somewhere in your init method.
>
> Finally, why are you calling a method using "-performSelector:withObject:" here? That seems like a trick to "fix" a compiler warning? If so, you should think about why the compiler were warning you about that call, and fix it properly - by adding the required #import statement, by adding the missing method declaration to the header, or - if all else fails - by casting the receiver to the appropriate type.
>
>
> j o a r
>
>

_______________________________________________

Cocoa-dev mailing list (email@hidden)

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:

This email sent to email@hidden

References: 
 >iOS - Help with nasty memory leak (From: Philip Vallone <email@hidden>)
 >Re: iOS - Help with nasty memory leak (From: Joar Wingfors <email@hidden>)

  • Prev by Date: Re: NSTask with unzip
  • Next by Date: Re: NSTask with unzip
  • Previous by thread: Re: iOS - Help with nasty memory leak
  • Next by thread: OutlineView with big text editor
  • Index(es):
    • Date
    • Thread