表视图工作正常但是当我离开视图并第二次回到它时,我得到了内存泄漏。可能viewDidLoad中的某些内容并不确定。
我正在运行泄漏工具,并收到以下通知:
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:]
当我点击扩展视图中的第一行时,我得到:
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
答案 0 :(得分:1)
您有多个地方可以致电[[XXX alloc] init]
,其中XXX是NSMutableArray
或NSMutableString
。你永远不会释放它们,它们不是自动释放的,因此它们会泄漏。
答案 1 :(得分:1)
请在此处查看我的回复:Deallocating and removing UiButtons
它包含了何时应保留/释放或依赖自动释放的说明。将这些规则应用于上面的代码。简而言之,只要您分配任何内容,您就应该通过调用该对象上的 release 来关注它。如果不这样做,就会发生内存泄漏。
<强>更新强>
您没有发布您在此处创建的activityIndicator。
- (void)viewDidLoad {
[super viewDidLoad];
// ...
activityIndicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
// ...
[self.view addSubview:activityIndicator];
}
答案 2 :(得分:1)
我看到你的大部分语句已准备好泄漏,例如在viewDidUnload方法中,你没有正确释放任何实例成员。
你需要在你分配,初始或保留的对象上调用release。
(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;
..................
..................
}
建议您花一些时间阅读Memory Management Programming Guide
答案 3 :(得分:0)
在tableView:didSelectRowAtIndexPath:
中,lastIndexPath
在保留indexPath
之前未发布。在viewDidLoad
中,您nil
输出变量而不释放它们。
在XML解析中,您可以基于一个元素不包含另一个元素的假设来创建和释放字符串。如果它们是嵌套的,则一个元素将在另一个元素结束之前启动。在这种情况下,您将丢失对原始字符串的引用,从而泄漏。如果他们是兄弟姐妹,这不是什么大问题,但是根据你记录的外观,元素是嵌套的。
答案 4 :(得分:-1)
我听到了
[UIImage imageNamed:@“contact.png”];
是内存发生线。它将创建一个autorelease对象作为返回的对象。也许这也可能是一个问题。