iphone - Core Data issue. Insert new NSManagedObject -


i want insert 200 5mb records in core database. when save nsmanagedobject, memory wasn't released (autoreleased pool didn't help), , after inserting 30 records got memory warning , application crashed. here code

- (void)saveitem     {         nsstring *entityname = kentityname;         appdelegate *appdelegate = [[uiapplication sharedapplication] delegate];         nsmanagedobjectcontext *context = appdelegate.managedobjectcontext;         nsentitydescription *entitydesctiption = [nsentitydescription                                                    entityforname: entityname                                                   inmanagedobjectcontext:context];         // check if town exists         nspredicate *predicate = [nspredicate predicatewithformat:@"id == %d", self.imageid];         nsfetchrequest *requesttocheckexistense = [[nsfetchrequest alloc] init];         [requesttocheckexistense setentity:entitydesctiption];         [requesttocheckexistense setpredicate:predicate];         nsarray *objects = [context executefetchrequest:requesttocheckexistense error:nil];         [requesttocheckexistense release];         if (objects == nil)         {             nslog(@"there error");         }         nsmanagedobject *object;         if ([objects count] > 0)         {             // edit item             object = [objects objectatindex:0];         }         else         {             // if object doesn't exist, find max id imlement autoincrement             nsfetchrequest *request = [[nsfetchrequest alloc] init];             [request setentity:entitydesctiption];             request.propertiestofetch = [nsarray arraywithobjects: @"id", nil];             nsarray *allobjects = [context executefetchrequest:request error:nil];             [request release];             nsinteger newid = 1;             if ([allobjects count] > 0)             {                 nsnumber *maxid = [allobjects valueforkeypath:@"@max.id"];                 newid = [maxid intvalue] + 1;             }              // write item             object = [nsentitydescription insertnewobjectforentityforname:entityname inmanagedobjectcontext:context];              [object setvalue:[nsnumber numberwithint:newid] forkey:@"id"];             self.imageid = newid;         }         // fill nsmanagedobject         // size of objnsdata 5mb         nsmutabledata *objnsdata = [[databasemanager shareddatabasemanager] encrypteddatafromimage:bigimage];         [object setvalue:objnsdata forkey:@"big"];           [context save:nil];      } 

when commented

[object setvalue:objnsdata forkey:@"big"]; 

everything ok.

i tried add code @autoreleasepool , didn't help. know, now, when save data database, it's still in iphone ram. how release memory? when set of managed objects database, not in ram (i can easyly 100 object, each of them has 5mb fields)

 object =(tblentity *) [nsentitydescription insertnewobjectforentityforname:entityname inmanagedobjectcontext:context]; 


try type cast object,this may solve problem


Comments

Popular posts from this blog

java - Play! framework 2.0: How to display multiple image? -

gmail - Is there any documentation for read-only access to the Google Contacts API? -

php - Controller/JToolBar not working in Joomla 2.5 -