gpt4 book ai didi

iphone - 我的 UITableViewController 内存泄漏在哪里?

转载 作者:行者123 更新时间:2023-11-28 23:16:15 27 4
gpt4 key购买 nike

表格 View 工作正常,但是当我离开 View 并第二次返回时,出现内存泄漏。可能 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:]

当我在扩展 View 中单击第一行时,我得到:

  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 方法中,你没有正确释放任何实例成员。

您需要在您分配、初始化或保留的对象上调用释放。

 (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

关于iphone - 我的 UITableViewController 内存泄漏在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6273931/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com