2013-06-01 42 views
0

我手動創建一個CoreData實體描述(我正在寫一個庫),我使用的語言是這樣的:內存管理NSEntityDescription

NSEntityDescription * entity = [[NSEntityDescription alloc] init]; 
[entity setName:@"Name"]; 
[entity setManagedObjectClassName:@"Name"]; 

NSAttributeDescription * att = [[NSAttributeDescription alloc] init]; 
[att setName:@"att"]; 
[att setAttributeType:NSStringAttributeType]; 
[entity setProperties:@[att]]; 

coreDataModel = [[NSManagedObjectModel alloc] init]; 
[coreDataModel setEntities:@[entity]]; 

coreDataModel是我的類的實例變量:我用dealloc方法釋放它。但是,XCode的分析報告抱怨說我可能泄露了NSEntityDescriptionNSAttributeDescription。我無法在文檔中找到任何可以放心發佈的文檔:任何人都知道NSManagedObjectModel是否需要保留,還是需要將它們放在自己的周圍?

回答

-1

至少你在這種情況下將這些對象添加到集合NSArray。 Cocoa中的所有集合都保留了它們所持有的對象,因此在設置模型實體後,您可以放心地釋放它們。

無論如何,靜態分析儀有時會「過度反應」;)如果您有任何懷疑您泄漏存儲器的使用儀器。

+0

分析器在大多數時間是正確的 –

+0

是的,我釋放了它們,一切都保持正常。信任.. – Femi

+0

我說的......你幾乎總是遵循這樣的規則:你釋放你擁有的東西。 –

0

你分配初始化它們,你釋放它們。你將它們添加到一個數組,然後傳遞給MOM,這將保持對象在那裏存活