0
我得到以下內存泄漏錯誤,與下面的解析器方法相對應。這是每一個我用我的自定義類的setter(4次)的時候,我得到一個內存錯誤泄漏:爲什麼使用我的自定義類會導致內存錯誤?
Leaked Object # Address Size Responsible Library Responsible Frame
NSCFString 630 <multiple> 20160 Foundation -[NSCFString copyWithZone:]
NSCFString 625 <multiple> 10000 Foundation -[NSCFString copyWithZone:]
NSCFString 623 <multiple> 19936 Foundation -[NSCFString copyWithZone:]
NSCFString 613 <multiple> 23664 Foundation -[NSCFString copyWithZone:]
我自定義的類接口:
#import <Foundation/Foundation.h>
@interface FaxRecipient : NSObject {
NSString * contactID;
NSString * name;
NSString * fax;
NSString * company;
NSString * phone;
}
@property(nonatomic,copy)NSString *contactID;
@property(nonatomic,copy)NSString *name;
@property(nonatomic,copy)NSString *fax;
@property(nonatomic,copy)NSString *company;
@property(nonatomic,copy)NSString *phone;
@end
實現:
#import "FaxRecipient.h"
@implementation FaxRecipient
@synthesize contactID, name, fax, company, phone;
@end
我在以下上下文中使用它:
-(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:@"Rec"]) {
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:@"Rec"]) {
faxRecipient.phone = remoteRecipientString;
[remoteRecipientItems addObject:faxRecipient];//delivery complete as this is end of xml
[faxRecipient release];
faxRecipient = nil;
[remoteRecipientString release];
remoteRecipientString = nil;
}
}
的可能重複[哪裏是我的UITableViewController內存泄漏?](http://stackoverflow.com/questions/6273931/where-is-the-memory-leak-in-my-uitableviewcontroller) – 2011-06-08 06:31:54