0
我希望這只是一些簡單的事情,我無法弄清楚。iOS內存堆不斷增長
我有一個類擴展的核心數據模型。
+(CDvitalsPO2Data *) newVitalDataInContext:(NSManagedObjectContext *)context {
NSEntityDescription *entity = [NSEntityDescription entityForName:po2EntityName inManagedObjectContext:context];
CDvitalsPO2Data *newVitalsDataPoint = [[[CDvitalsPO2Data class] alloc] initWithEntity:entity insertIntoManagedObjectContext:context];
return newVitalsDataPoint;
}
所以這返回一個新的項目在上下文和po2實體名稱。大。
如果我把這個代碼這個類擴展:
-(void) logPO2:(NSDictionary *)po2EntryDictionary forThisTime:(NSDate *)loggedTime inContext:(NSManagedObjectContext *)context {
if (context) {
CDvitalsPO2Data *vitalsPO2Entry;
vitalsPO2Entry = [CDvitalsPO2Data newVitalDataInContext:context];
vitalsPO2Entry.timeStamp = [NSDate dateWithTimeIntervalSinceReferenceDate:[loggedTime timeIntervalSince1970]];
vitalsPO2Entry.accelX = [po2EntryDictionary objectForKey:po2LogAccelX];
vitalsPO2Entry.accelY = [po2EntryDictionary objectForKey:po2LogAccelY];
vitalsPO2Entry.accelZ = [po2EntryDictionary objectForKey:po2LogAccelZ];
vitalsPO2Entry.patchID = [po2EntryDictionary objectForKey:po2LogPatchID];
vitalsPO2Entry.patchRSSI = [po2EntryDictionary objectForKey:po2LogPatchRSSI];
vitalsPO2Entry.sequenceID = [po2EntryDictionary objectForKey:po2LogSequenceID];
vitalsPO2Entry.sessionID = [po2EntryDictionary objectForKey:po2LogSessionID];
vitalsPO2Entry.po2Value = [po2EntryDictionary objectForKey:po2LogValue];
NSError *error;
[[vitalsPO2Entry managedObjectContext] save:&error];
if (error) {
NSLog(@"save error:%@",error);
}
}
我得到插入上下文對象,它就會被保存,但堆只是不停地生長。如果這個日誌每秒運行一次或每分鐘運行一次,我只會看到內存在增長。我已經把各種弱點指向了這些調用,嘗試將事情設置爲零,將一個自動釋放池放入地方;似乎沒有任何放緩,更不用說停止記憶蠕變。我覺得我缺少一些基本的東西。在上下文保存之後,這些對象是否不應該在它們超出範圍之後被拋棄?當我看着樂器時,似乎有一個保留在對象上,但它在系統級別,它不是來自我的一個例行調用。