iphone - Memory warning when tranfer image picked camera to one view to other -
i open camera on button click , take image in uiimage , transfer uiimage other view receive memory warning when 4-5 time.
below code worked for:-
-(void)imagepickercontroller:(uiimagepickercontroller*)picker_camera didfinishpickingmediawithinfo:(nsdictionary*)info { [picker_camera dismissmodalviewcontrolleranimated:yes]; uiimage *image=[[uiimage alloc] init]; image=[info objectforkey:@"uiimagepickercontrolleroriginalimage"]; [self methodcall:image]; //image_camera=image; // nsautoreleasepool *apool = [[nsautoreleasepool alloc] init]; //printf("first\n"); // [self performselector:@selector(methodcall) withobject:nil afterdelay:1]; //printf("ok\n"); //[apool release]; } -(void)methodcall:(uiimage *)image{ imagedisplayviewcontroller *imagedisplayviewcontroller_obj=[[imagedisplayviewcontroller alloc] initwithnibname:@"imagedisplayviewcontroller" bundle:nil]; imagedisplayviewcontroller_obj.image_fromcamera=image; nslog(@"image===>%@ camera==>%@",image,imagedisplayviewcontroller_obj.image_fromcamera); [self.navigationcontroller pushviewcontroller:imagedisplayviewcontroller_obj animated:yes]; // [imagedisplayviewcontroller_obj release]; } -(ibaction)takephotocamera:(id)sender{ @try { uiimagepickercontroller *picker_camera = [[uiimagepickercontroller alloc] init]; picker_camera.sourcetype = uiimagepickercontrollersourcetypecamera; picker_camera.delegate = self; [self presentmodalviewcontroller:picker_camera animated:yes]; [picker_camera release]; } @catch (nsexception *exception) { uialertview *alert = [[uialertview alloc] initwithtitle:@"no camera" message:@"camera not available " delegate:self cancelbuttontitle:@"ok" otherbuttontitles:nil]; [alert show]; [alert release]; } } does 1 me out please.
thanks in advance.
i assume you're not using arc (is there particular reason this?)
firstly, allocating uiimage instance that's never used:
uiimage *image=[[uiimage alloc] init]; image=[info objectforkey:@"uiimagepickercontrolleroriginalimage"];should changed to:
uiimage *image = [info objectforkey:@"uiimagepickercontrolleroriginalimage"];next, not releasing
imagedisplayviewcontroller_objinstance here:// [imagedisplayviewcontroller_obj release];uncomment line.
golden rule of memory management: always release objects don't need more , don't retain don't need.
i highly recommend using arc if you're new obj-c and/or memory management.
some other suggestions:
- how check existence of camera?
- avoid exceptions
- follow coding conventions - don't name variables
picker_camera(usepickercamera), orimagedisplayviewcontroller_obj(useimagecontrollerorimagevc).
Comments
Post a Comment