Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 1058383
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 16, 20262026-05-16T18:01:10+00:00 2026-05-16T18:01:10+00:00

I am getting a memory leak in a method that builds a email message

  • 0

I am getting a memory leak in a method that builds a email message string from a NSManagedObject. The string is created with NSString convenience methods, and so should be autoreleased. What am I missing? Code below… Instruments is flagging the final occurance of buildString near the bottom of the method (see comment in code):



    -(void)buildEmailMessage {

    //check for presence of lat and lon data
    BOOL hasStartLatLon = NO;
    BOOL hasEndLanLon = NO;
    NSString *startLat;
    NSString *startLong;
    NSString *endLat;
    NSString *endLong;
    NSString *mapURL;
    NSString *finalMapURL;

    if( [managedObject valueForKey:@"startLat"] > 0 ){
        hasStartLatLon = YES;
        startLat = [self formatLatLon:[managedObject valueForKey:@"startLat"]];
        startLong= [self formatLatLon:[managedObject valueForKey:@"startLong"]];
    }

    if( [managedObject valueForKey:@"endLat"] > 0 ) {
        hasEndLanLon = YES;
        endLat = [self formatLatLon:[managedObject valueForKey:@"endLat"]];
        endLong= [self formatLatLon:[managedObject valueForKey:@"endLong"]];
    }

    // Build strings from managedObject
    // Start with the trip info already validated
    NSString *tripName = [managedObject valueForKey:@"tripName"];
    NSString *intro = [NSString stringWithString:@"

Please contact the approriate authorities and provide them with the enclosed information if our party does not return withing 12 hours of the return date shown below. Thanks.

"]; id vStartDate = [managedObject valueForKey:@"startDate"]; NSString *startDate = [NSString stringWithFormat:@"

Start Date: %@", [vStartDate managedObjectValueDisplay]]; id vEndDate = [managedObject valueForKey:@"endDate"]; NSString *endDate = [NSString stringWithFormat:@"
End Date: %@

", [vEndDate managedObjectValueDisplay]]; NSString *startFrom = [NSString stringWithFormat:@"

Departing from:
%@", [managedObject valueForKey:@"startFrom"]]; if( hasStartLatLon ){ startFrom = [startFrom stringByAppendingString:@"
"]; startFrom = [startFrom stringByAppendingString:[self getLatLon:@"start"]]; } startFrom = [startFrom stringByAppendingString:@"

"]; NSString *endAt = [NSString stringWithFormat:@"

Returning to:
%@", [managedObject valueForKey:@"endAt"]]; if( hasStartLatLon ){ endAt = [endAt stringByAppendingString:@"
"]; endAt = [endAt stringByAppendingString:[self getLatLon:@"end"]]; } endAt = [startFrom stringByAppendingString:@"

"]; // Add a link to Google Maps if there is geodata if (hasStartLatLon || hasEndLanLon) { if (hasStartLatLon) { mapURL = [NSString stringWithFormat:@"http://maps.google.com/?q=%@,%@+(%@)&ll=%@,%@&z=14&t=p", startLat, startLong, [managedObject valueForKey:@"startFrom"], startLat, startLong]; } else { mapURL = [NSString stringWithFormat:@"http://maps.google.com/?q=%@,%@+(%@)&ll=%@,%@&z=14&t=p", endLat, endLong, [managedObject valueForKey:@"endAt"], endLat, endLong]; } NSString* escapedUrlString =[mapURL stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; NSLog(@"escaped map url = %@", escapedUrlString); finalMapURL = [NSString stringWithFormat:@"Link to Google Map:
%@", escapedUrlString]; } NSString *routeInfo = [NSString stringWithFormat:@"

Route Information:
%@

", [managedObject valueForKey:@"routeInfo"]]; // Check for vehicle info BOOL hasVehicleMakeAndModel = NO; BOOL hasVehicleLicenseNumber = NO; BOOL hasVehicleState = NO; NSString *vehicleMakeAndModel = [managedObject valueForKey:@"vehicleMakeAndModel"]; NSString *vehicleLicenseNumber = [managedObject valueForKey:@"vehicleLicenseNumber"]; NSString *vehicleState = [managedObject valueForKey:@"vehicleState"]; if ( vehicleMakeAndModel.length > 0 ) { hasVehicleMakeAndModel = YES; } if ( vehicleLicenseNumber.length > 0 ) { hasVehicleLicenseNumber = YES; } if ( vehicleState.length > 0 ) { hasVehicleState = YES; } //Build the vehicle string NSString *vehicleString; if (hasVehicleMakeAndModel || hasVehicleLicenseNumber || hasVehicleState) { vehicleString = [NSString stringWithString:@"

Vehicle Information:
"]; } if (hasVehicleMakeAndModel) { vehicleString = [vehicleString stringByAppendingString:@"Make/Model: "]; vehicleString = [vehicleString stringByAppendingString:vehicleMakeAndModel]; vehicleString = [vehicleString stringByAppendingString:@"
"]; } if (hasVehicleLicenseNumber) { vehicleString = [vehicleString stringByAppendingString:@"License #: "]; vehicleString = [vehicleString stringByAppendingString:vehicleLicenseNumber]; vehicleString = [vehicleString stringByAppendingString:@"
"]; } if (hasVehicleState) { vehicleString = [vehicleString stringByAppendingString:@"State: "]; vehicleString = [vehicleString stringByAppendingString:vehicleState]; } // Get the NSSet of party members from the managedObject // and build the party members/emergency contact info NSSet *membersSet = [managedObject valueForKey:@"members"]; NSString *membersString; if ( [membersSet count] > 0) { membersString = @"

Party Members:

"; NSArray *membersArray = [NSArray arrayByOrderingSet:membersSet byKey:@"lastName" ascending:YES]; for (NSManagedObject *oneObject in membersArray) { BOOL hasFirstName = NO; BOOL hasLastName = NO; BOOL hasAge = NO; BOOL hasContactName = NO; BOOL hasContactNumber = NO; NSString *memberFirstName = [oneObject valueForKey:@"firstName"]; NSString *memberLastName = [oneObject valueForKey:@"lastName"]; NSNumber *memberAgeNum = [oneObject valueForKey:@"age"]; NSString *memberAgeString; if (memberAgeNum > 0) { memberAgeString = [NSString stringWithFormat:@"%d", [memberAgeNum intValue]]; } else { memberAgeString = [NSString stringWithString:@""]; } NSString *contactName = [oneObject valueForKey:@"contactName"]; NSString *contactNumber = [oneObject valueForKey:@"contactNumber"]; if ( [memberFirstName length] > 0) { hasFirstName = YES; } if ( [memberLastName length] > 0) { hasLastName = YES; } if ( [memberAgeString length] > 0) { hasAge = YES; } if ( [contactName length] > 0) { hasContactName = YES; } if ( [contactNumber length] > 0) { hasContactNumber = YES; } NSString *oneMemberString = [NSString stringWithString:@"
  • "]; if (hasFirstName) { oneMemberString = [oneMemberString stringByAppendingFormat:@"%@ ", memberFirstName]; } if (hasLastName) { oneMemberString = [oneMemberString stringByAppendingString:memberLastName]; } if (hasAge) { oneMemberString = [oneMemberString stringByAppendingFormat:@", %@", memberAgeString]; } if (hasContactName) { oneMemberString = [oneMemberString stringByAppendingFormat:@"
    Emergency Contact:
    %@", contactName]; } if (hasContactNumber) { oneMemberString = [oneMemberString stringByAppendingFormat:@"
    Phone: %@

  • ", contactNumber]; } membersString = [membersString stringByAppendingString:oneMemberString]; } } NSString *buildString = [NSString stringWithFormat:@"

    Trip Plan for:
    %@

    ", tripName]; buildString = [buildString stringByAppendingString: intro]; buildString = [buildString stringByAppendingString: startDate]; buildString = [buildString stringByAppendingString: endDate]; buildString = [buildString stringByAppendingString: startFrom]; buildString = [buildString stringByAppendingString: endAt]; if (hasStartLatLon || hasEndLanLon) buildString = [buildString stringByAppendingString: finalMapURL]; buildString = [buildString stringByAppendingString: routeInfo]; // Append the vehicle string if any vehicle data is present if (hasVehicleMakeAndModel || hasVehicleLicenseNumber || hasVehicleState) { buildString = [buildString stringByAppendingString: vehicleString]; } // Append the members string if any members data is present // **MEMORY LEAK** flagged on the line enclosed by the if statement below if ( [membersSet count] > 0) { buildString = [buildString stringByAppendingString: membersString]; } self.myEmailString = [NSString stringWithString:buildString]; }
    
    -(NSString *)formatLatLon:(NSNumber *)value {
        NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
        [formatter setNumberStyle:NSNumberFormatterDecimalStyle];
        [formatter setPositiveFormat:@"##0.00000"];
    
        NSString *returnString = [formatter stringFromNumber:value];
        [formatter release];
        return returnString;
    }
    
    
    • 1 1 Answer
    • 0 Views
    • 0 Followers
    • 0
    Share
    • Facebook
    • Report

    Leave an answer
    Cancel reply

    You must login to add an answer.

    Forgot Password?

    Need An Account, Sign Up Here

    1 Answer

    • Voted
    • Oldest
    • Recent
    • Random
    1. Editorial Team
      Editorial Team
      2026-05-16T18:01:10+00:00Added an answer on May 16, 2026 at 6:01 pm

      How is your myEmailString @property defined? With copy or retain? (You should use copy with NSString objects.) If so, and you’re not doing a [myEmailString release] in dealloc, that might be the leak.

      • 0
      • Reply
      • Share
        Share
        • Share on Facebook
        • Share on Twitter
        • Share on LinkedIn
        • Share on WhatsApp
        • Report

    Sidebar

    Related Questions

    I'm getting a memory leak with instruments in a class that I've created. This
    I am getting another memory leak in a non-void instance method that returns a
    I'm getting the memory leak message upon shutdown, saying that I'm leaking 3 of
    I am getting available memory from below method: static void print_free_memory () { float
    I am getting a memory leak in my objective-C code that I don't understand.
    I am getting a memory leak for each object that is added to glossTerms
    I keep getting a memory leak indication from this sql statement when I assign
    First of all I am getting memory leak while scrolling tableview out of bounds.
    HI, I am getting memory leak at NSObject allocation i.e., ContactDTO* contactDTO = [[ContactDTO
    Im getting the same memory leak as I mentioned the link below. NSXMLParser Leaking

    Explore

    • Home
    • Add group
    • Groups page
    • Communities
    • Questions
      • New Questions
      • Trending Questions
      • Must read Questions
      • Hot Questions
    • Polls
    • Tags
    • Badges
    • Users
    • Help
    • SEARCH

    Footer

    © 2021 The Archive Base. All Rights Reserved
    With Love by The Archive Base

    Insert/edit link

    Enter the destination URL

    Or link to existing content

      No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.