我已經建立了一個NSXMLParser來解析通過Twitter的飼料,但我得到內存泄漏,坐在通過使用儀器大約一百次後,我無法弄清楚它在哪裏!下面是我的NSXMLParser代碼,它解析ASIHTTPRequest接收數據的時間。我的NSXMLParser代碼中的泄漏在哪裏?
-(void)ProcessAndParse{
NSURL *url = [config urlForFeed:@"Twitter"];
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
[request setDelegate:self];
[request startAsynchronous];
}
- (void)requestFinished:(ASIHTTPRequest *)request
{
NSData *responseData = [request responseData];
myparser = [[NSXMLParser alloc] initWithData:responseData];
[myparser setDelegate:self];
[myparser setShouldResolveExternalEntities:YES];
[myparser parse];
}
-(void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict
{
currentElement = [elementName copy];
}
-(void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName{
}
-(void)parserDidEndDocument:(NSXMLParser *)parser{
}
-(void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{
}
我知道這裏有很多缺失,但我試圖在繼續之前停止泄漏。它似乎圍繞着didStartElement方法中的currentElement = [elementName copy];
。
currentElement是一個ivar,爲了讓這個我必須設置一個@property?用什麼參數? – MrPink
這似乎工作.... – MrPink
或者,也可以使用關鍵字保留該屬性,並刪除副本。不能真的把所有的代碼放在評論中,所以我添加了一個答案。 – Perception