Ниже приведен @interface для объекта MREntitiesConverter, который я использую для удаления всех тегов html из строки с использованием NSXMLParser.
@interface MREntitiesConverter : NSObject {
NSMutableString* resultString;
NSString* xmlStr;
NSData *data;
NSXMLParser* xmlParser;
}
@property (nonatomic, retain) NSMutableString* resultString;
- (NSString*)convertEntitiesInString:(NSString*)s;
@end
И это реализация:
@implementation MREntitiesConverter
@synthesize resultString;
- (id)init
{
if([super init]) {
self.resultString = [NSMutableString string];
}
return self;
}
- (NSString*)convertEntitiesInString:(NSString*)s {
xmlStr = [NSString stringWithFormat:@"<data>%@</data>", s];
data = [xmlStr dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:YES];
xmlParser = [[NSXMLParser alloc] initWithData:data];
[xmlParser setDelegate:self];
[xmlParser parse];
return [resultString autorelease];
}
- (void)dealloc {
[data release];
//I want to release xmlParser here but it crashes the app
[super dealloc];
}
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)s {
[self.resultString appendString:s];
}
@end
Если я освобождаю xmlParser
в методе dealloc, я ломаю свое приложение, но, не отпуская, я совершенно очевидно теряю память.
Я новичок в инструментах и пытаюсь научиться оптимизировать это приложение. Любая помощь, которую вы можете предложить по этой конкретной проблеме, вероятно, поможет мне решить другие проблемы с памятью в моем приложении.
Ваш в расстроенном ожидании :) Oisin