2011-05-16 44 views
0

即時通過Sapus Media的SVG分析系統levelSVG運行cocos2d。
我正在使用解析系統,它可以像預測的那樣工作,但即時通訊存在與NSXMLParser相關的內存泄漏問題。
內存泄漏在5分鐘的時間內給出fps的一致性下降,並使該應用程序在此時間段結束時以12fps的速度無用。
我已刪除了我所有的粒子系統和其他潛在的泄漏對象和泄漏仍然存在..來自NSXMLParser的內存泄漏

運行內存泄漏工具:
3個泄漏對象檢測:
GeneralBlock-512
GeneralBlock- 512
NSConcreteMapTable

它們鏈接到:

*

NSXMLParser *parser = [[NSXMLParser alloc] initWithContentsOfURL:url]; 

     [parser setDelegate:self]; 
     [parser setShouldProcessNamespaces:NO]; 
     [parser setShouldReportNamespacePrefixes:NO]; 
     [parser setShouldResolveExternalEntities:NO]; 
     [parser parse]; 

     NSError *parseError = [parser parserError]; 
     if(parseError) { 
      SVGLOG(@"Error parsing SVG file: %@", parseError); 
     } 

     [parser release]; 

正如你所看到的,解析完成後該對象被釋放。

開車撞我,誰知道最新情況?

+0

xml解析方法本身怎麼樣,可能是泄漏來自那裏。 – Sarah 2011-05-16 11:37:37

+0

您是否在模擬器或設備上運行泄漏? – csch 2011-05-16 16:54:57

+0

設備。還有7個去! – Ospho 2011-05-16 22:07:53

回答

0

好的,經過一番研究,我發現在使用上述URL方法時,NSXMLParser中存在一個錯誤。

NSXMLParser *parser = [[NSXMLParser alloc] initWithContentsOfURL:url] 

通過這一改變到:

NSData *xml = [NSData dataWithContentsOfURL:url];    
NSXMLParser *parser = [[NSXMLParser alloc] initWithData:xml]; 

這種固定的內存泄漏問題,但仍然didnt佔FPS超過的期限一致下降。 然後我發現我的內存分配給一個特定的類,CCFollow在內存泄漏工具上的加班時間一直在增加。

然後我檢查了代碼,並在重複刻度更新方法中運行了無限CCAction-CCFollow。這是內存泄漏的來源。 將它從tick更新方法中移除並將其移至初始化方法可解決此問題。