我的UITableViewController中的内存泄漏在哪里? [英] Where is the memory leak in my UITableViewController?

查看:86
本文介绍了我的UITableViewController中的内存泄漏在哪里?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

表视图工作正常但是当我离开视图并第二次回到它时,我得到了内存泄漏。可能viewDidLoad中的某些内容并不确定。

The table view works fine however when I leave the view and come back to it the second time, I get a memory leak. Probably something in the viewDidLoad just not sure.

我正在运行泄漏工具并收到以下通知:

I am running the leaks tool and am getting the following notification:

Leaked Object   #   Address Size    Responsible Library Responsible Frame
NSCFString  631 < multiple >    20192   Foundation  -[NSCFString copyWithZone:]
NSCFString      0x8339c80   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x8339af0   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x8339960   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x83397d0   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x8339640   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x83394b0   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x8339320   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x8339190   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x8339000   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x8338e70   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x8338ce0   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x8338b50   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x83389c0   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x8338830   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x83386a0   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x8338510   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x8338380   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x83381f0   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x8338060   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x8337ed0   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x8337d40   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x8337bb0   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x8337a20   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x83378b0   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x8337720   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x8337590   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x8337400   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x8337270   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x83370b0   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x8336f40   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x8336dd0   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x8336c50   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x8336ae0   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x8336960   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x83367e0   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x8336660   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x83364f0   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x8336360   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x83361e0   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x8336070   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x8335ee0   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x8335d60   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x8335be0   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x8335a60   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x83358f0   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x8335760   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x8335470   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x8335180   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x8334e80   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x8334d10   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x8334b90   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x8334a10   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x8334890   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x83344a0   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x8334310   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x8334180   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x8333e10   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x8333c80   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x8333af0   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x8333970   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x8333800   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x8333670   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x8323220   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x8320160   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x831eef0   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x831e5e0   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x831d710   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x8312e80   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x83119c0   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x830e1c0   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x83055c0   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x8031900   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x8031770   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x8031470   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x8031300   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x8031190   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x8031010   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x8030ea0   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x8030d20   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x8030ba0   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x8030a20   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x80308b0   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x8030720   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x80305a0   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x80302a0   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x802ffa0   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x802fe80   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x802fb90   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x802fa20   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x802f8b0   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x802f730   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x802f5c0   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x802f2d0   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x802ef10   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x802ed80   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x802ebd0   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x802ea50   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x802e8e0   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x802cbe0   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x802cb40   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x802c9c0   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x802c840   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x802c6d0   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x802c560   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x802c3e0   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x802c270   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x802c100   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x802bf90   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x802bdf0   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x802bdd0   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x802bc60   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x802bb90   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x802b9e0   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x802b870   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x8028080   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x8027fe0   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x4e6f5e0   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x4e6f450   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x4e6f150   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x4e6efd0   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x4e6ee50   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x4e6ece0   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x4e6eb60   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x4e6e9e0   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x4e6e870   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x4e6e700   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x4e6e580   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x4e6e400   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x4e6e280   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x4e6e100   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x4e6df80   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x4e6de00   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x4e6dc80   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x4e6db10   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x4e6d930   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x4e6d7c0   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x4e6d640   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x4e6d420   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x4e6d3b0   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x4e6d220   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x4e6d090   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x4e6cf00   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x4e6cd70   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x4e6cbe0   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x4e6ca50   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x4e6c8c0   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x4e6c730   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x4e6c5a0   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x4e6c410   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x4e6c280   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x4e6c0f0   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x4e6bf60   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x4e6be10   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x4e6bca0   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x4e6bb30   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x4e6b9c0   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x4e6b850   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x4e6b6e0   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x4e6b550   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x4e6b3c0   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x4e6b230   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x4e6b0c0   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x4e6af50   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x4e6ae00   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x4e6ac90   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x4e6ab20   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x4e6a9d0   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x4e6a880   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x4e6a6f0   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x4e6a560   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x4e6a3e0   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x4e6a260   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x4e6a0e0   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x4e69f50   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x4e69de0   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x4e69c60   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x4e69af0   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x4e69980   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x4e69800   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x4e69680   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x4e69500   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x4e69380   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x4e69200   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x4e69090   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x4e68f20   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x4e68da0   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x4e68c30   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x4e68ab0   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x4e68930   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x4e687b0   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x4e68640   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x4e684c0   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x4e68340   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x4e681d0   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x4e68040   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x4e67ec0   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x4e67d40   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x4e67bc0   32  Foundation  -[NSCFString copyWithZone:]
NSCFString      0x4e67a50   32  Foundation  -[NSCFString copyWithZone:]

当我点击扩展视图中的第一行我得到:

when i click on the first line in extended view I get:

  14 CFNetwork URLConnectionClient::_clientDidFinishLoading(URLConnectionClient::ClientConnectionEventQueue*)
  15 CFNetwork URLConnectionClient::ClientConnectionEventQueue::processAllEventsAndConsumePayload(XConnectionEventInfo<XClientEvent, XClientEventParams>*, long)
  16 CFNetwork URLConnectionClient::processEvents()
  17 CFNetwork MultiplexerSource::perform()

以下是代码:

#import "AddRemoteRecipientsTableViewController.h"
#import "MyManager.h"
#import "FaxRecipient.h"


@implementation AddRemoteRecipientsTableViewController

@synthesize lastIndexPath;

@synthesize delegate=_delegate;

@synthesize faxRecipient;

/*
-(IBAction) btnSave{


}
-(IBAction) btnDone{


}
 */


-(void) loadRemoteRecipients{

    activityIndicator.startAnimating;

    [remoteRecipientItems removeAllObjects];
    [[self tableView] reloadData];


    NSString * uName=[[NSUserDefaults standardUserDefaults]objectForKey:@"userNameKey"];
    NSString * pWord = [[NSUserDefaults standardUserDefaults]objectForKey:@"passwordKey"];

    NSURL *url = [NSURL URLWithString: @"https://someurl"];

    NSString *xmlString = [NSString stringWithFormat:
                           @"<?xml version=\"1.0\" encoding=\"utf-8\" ?>"
                           "<soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">"
                           "<soap:Body>"
                           "<GetContactsWithId xmlns=\"http://tempuri.org/\">"
                           "<uid>%@</uid>"
                           "<pwd>%@</pwd>"
                           "</GetContactsWithId>"
                           "</soap:Body>"
                           "</soap:Envelope>",uName,pWord
                           ];

    NSData *data = [xmlString dataUsingEncoding:NSUTF8StringEncoding];
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];

    //---set the headers---
    NSString *msgLength = [NSString stringWithFormat:@"%d", [xmlString length]];
    [request addValue:@"text/xml; charset=utf-8" forHTTPHeaderField:@"Content-Type"];
    [request addValue:@"http://someurl" forHTTPHeaderField:@"SOAPAction"];
    [request addValue:msgLength forHTTPHeaderField:@"Content-Length"];

    //---set the HTTP method and body---
    [request setHTTPMethod:@"POST"];
    [request setHTTPBody: data];

    if (connectionInprogress) {
        [connectionInprogress cancel];
        [connectionInprogress release];
    }


    //instantiate object to hold incoming data

    [xmlData release];

    xmlData = [[NSMutableData alloc]init];

    connectionInprogress = [[NSURLConnection alloc]initWithRequest:request delegate:self startImmediately:YES];


}


-(void)connection:(NSURLConnection *)connection 
   didReceiveData:(NSData *)data{

    [xmlData appendData:data];
}


- (void) connectionDidFinishLoading:(NSURLConnection *)connection{


    NSXMLParser *parser = [[NSXMLParser alloc]initWithData:xmlData];
    [parser setDelegate:self];
    [parser parse];
    [parser release];

    [[self tableView] reloadData];
    activityIndicator.stopAnimating;


    [connectionInprogress release];
    connectionInprogress = nil;

    [xmlData release];
    xmlData = nil;

}


#pragma mark -
#pragma Parser Methods

-(void)parser:(NSXMLParser *)parser
didStartElement:(NSString *) elementName
 namespaceURI:(NSString *)namespaceURI
qualifiedName:(NSString *)qName
   attributes:(NSDictionary *)attributeDict
{

    if ([elementName isEqual:@"ContactId"]) {
        faxRecipient =[[FaxRecipient alloc]init];
        remoteRecipientString = [[NSMutableString alloc]init]; 
    }

    else if ([elementName isEqual:@"Name"]) {
        remoteRecipientString = [[NSMutableString alloc]init]; 


    }else if ([elementName isEqual:@"Fax"]) {
        remoteRecipientString = [[NSMutableString alloc]init];
    }
    else if ([elementName isEqual:@"Company"]) {
    remoteRecipientString = [[NSMutableString alloc]init];
    }

}

-(void) parser:(NSXMLParser *)parser
foundCharacters:(NSString *)string{

    [remoteRecipientString appendString:string];

}


-(void)parser:(NSXMLParser *)parser
didEndElement:(NSString *) elementName
 namespaceURI:(NSString *)namespaceURI
qualifiedName:(NSString *)qName{


    if ([elementName isEqual:@"ContactId"]) {
        faxRecipient.contactID = remoteRecipientString;
        [remoteRecipientString release];
        remoteRecipientString = nil;
    }


    if ([elementName isEqual:@"Name"]) {
        faxRecipient.name = remoteRecipientString;
        [remoteRecipientString release];
        remoteRecipientString = nil;
    }   


    if ([elementName isEqual:@"Fax"]) {
        faxRecipient.fax = remoteRecipientString;
        [remoteRecipientString release];
        remoteRecipientString = nil;

    }

    if ([elementName isEqual:@"Company"]) {
        faxRecipient.company = remoteRecipientString;
        [remoteRecipientItems addObject:faxRecipient];
        [faxRecipient release];
        faxRecipient = nil;
        [remoteRecipientString release];
        remoteRecipientString = nil;

    }


}


-(void)connection:(NSURLConnection *)connection 
 didFailWithError:(NSError *)error{

    [connectionInprogress release];
    connectionInprogress = nil;

    [xmlData release];
    xmlData = nil;

    NSString *errorString = [NSString stringWithFormat:@"Remote Recipient Fetch Failed %@",[error localizedDescription]];

    UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:errorString 
                                                             delegate:nil 
                                                    cancelButtonTitle:@"OK" 
                                               destructiveButtonTitle:nil 
                                                    otherButtonTitles:nil];

    [actionSheet showInView:[[self view]window]];
    [actionSheet autorelease];

}



#pragma mark -
#pragma mark Initialization

/*
- (id)initWithStyle:(UITableViewStyle)style {
    // Override initWithStyle: if you create the controller programmatically and want to perform customization that is not appropriate for viewDidLoad.
    self = [super initWithStyle:style];
    if (self) {
        // Custom initialization.
    }
    return self;
}
*/


#pragma mark -
#pragma mark View lifecycle


- (void)viewDidLoad {
    [super viewDidLoad];

    remoteRecipientItems = [[NSMutableArray alloc]init];
    remoteRecipientID = [[NSMutableArray alloc]init];

    // add activity indicator
    activityIndicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
    activityIndicator.center = CGPointMake(self.view.bounds.size.width / 2.0f, self.view.bounds.size.height / 2.0f);

    activityIndicator.hidesWhenStopped = YES;
    [self.view addSubview:activityIndicator];
}



- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];

    [self loadRemoteRecipients];

/*  self.navigationController.toolbarHidden=NO;


    UIBarButtonItem            *saveItem;
    UIBarButtonItem            *doneItem;


    saveItem = [[ UIBarButtonItem alloc ] initWithTitle: @"Save"
                                                  style: UIBarButtonItemStyleBordered
                                                 target: self
                                                 action: @selector( btnSave ) ];



    doneItem = [[ UIBarButtonItem alloc ] initWithTitle: @"Done"
                                                  style: UIBarButtonItemStyleBordered
                                                 target: self
                                                 action: @selector( btnDone ) ];

    self.toolbarItems = nil ;

    self.toolbarItems = [ NSArray arrayWithObjects: saveItem,doneItem,nil ];

    [saveItem release];
    [doneItem release];

 */


}

/*
- (void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];
}
*/

- (void)viewWillDisappear:(BOOL)animated {
    [super viewWillDisappear:animated];


/*  self.navigationController.toolbarHidden=YES; */
}

/*
- (void)viewDidDisappear:(BOOL)animated {
    [super viewDidDisappear:animated];
}
*/
/*
// Override to allow orientations other than the default portrait orientation.
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    // Return YES for supported orientations.
    return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
*/


#pragma mark -
#pragma mark Table view data source

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    // Return the number of sections.
    return 1;
}


- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    // Return the number of rows in the section.
    return [remoteRecipientItems count];
}


// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    static NSString *CellIdentifier = @"RemoteRecipientItem";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
    }




    NSUInteger row = [indexPath row];

    NSUInteger oldRow = [lastIndexPath row];

    // Configure the cell...
    FaxRecipient *faxObject= [remoteRecipientItems objectAtIndex:indexPath.row];    
    [[cell textLabel]setText:faxObject.name];
    cell.accessoryType = (row == oldRow && lastIndexPath !=nil)? UITableViewCellAccessoryCheckmark : UITableViewCellAccessoryNone; 

    cell.imageView.image = [UIImage imageNamed:@"contact.png"];
    return cell;
}




#pragma mark -
#pragma mark Table view delegate

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {



    int newRow = [indexPath row];
    int oldRow = (lastIndexPath !=nil)?[lastIndexPath row]:-1;

    if (newRow != oldRow) {
        UITableViewCell *newCell = [tableView cellForRowAtIndexPath:indexPath];
        newCell.accessoryType = UITableViewCellAccessoryCheckmark;

        UITableViewCell *oldCell = [tableView cellForRowAtIndexPath:lastIndexPath];

        oldCell.accessoryType = UITableViewCellAccessoryNone;

    //  lastIndexPath = indexPath;
        lastIndexPath = [indexPath retain];


    }

    [tableView deselectRowAtIndexPath:indexPath animated:YES];

   FaxRecipient *faxObject= [remoteRecipientItems objectAtIndex:[indexPath row]];
    [self.delegate getRemoteRecipient:faxObject];
    [self.navigationController popViewControllerAnimated:YES];


}


#pragma mark -
#pragma mark Memory management

- (void)didReceiveMemoryWarning {
    // Releases the view if it doesn't have a superview.
    [super didReceiveMemoryWarning];

    // Relinquish ownership any cached data, images, etc. that aren't in use.
}

- (void)viewDidUnload {
    // Relinquish ownership of anything that can be recreated in viewDidLoad or on demand.
    // For example: self.myOutlet = nil;


    remoteRecipientItems = nil;
    remoteRecipientID = nil;
    lastIndexPath = nil;
    faxRecipient = nil;




}


- (void)dealloc {

    [remoteRecipientItems release];
    [remoteRecipientID release];
    [lastIndexPath release];
    [faxRecipient release];

    [super dealloc];
}


@end


推荐答案

我看到你的大部分陈述已准备好泄密,例如在viewDidUnload方法中,你没有正确释放任何实例成员。

I see most of your statement are ready for leak, e.g in the viewDidUnload method , you are not releasing any instance member properly.

你需要在你分配,初始化或保留的对象上调用release。

you need to call release on the object which you either alloced, init or retain.

 (void)viewDidUnload {
    // Relinquish ownership of anything that can be recreated in viewDidLoad or on demand.
    // For example: self.myOutlet = nil;

    [remoteRecipientItems release];
    remoteRecipientItems = nil;
    [remoteRecipientID release];
    remoteRecipientID = nil;
     ..................
    ..................

}

建议您花一些时间阅读内存管理编程指南

Would suggest you to spend some time to read Memory Management Programming Guide

这篇关于我的UITableViewController中的内存泄漏在哪里?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆