ios - App crash Due to memory managment -
#import "myviewcontroller.h" #import "datasynchandler.h" #import "parenttableviewcell.h" #import "ayaah.h" static nsstring *parentcellidentifier = @"parenttableviewcell"; @interface myviewcontroller () { double pinchscale; uipinchgesturerecognizer *twofingerpinch; cgpoint buttonposition; nsindexpath *ipath; dbmanager *bmanager; cgpoint p; uifont *df; uifont *df1; nsmutablearray *header; nsuserdefaults *defaults; cgaffinetransform cg; } @end @implementation myviewcontroller @synthesize datasource;// nsmutable array have filled sqlite databasedata @synthesize ptc;// customcell - (void)viewdidload { [super viewdidload]; self.datasource=[[nsmutablearray alloc]init]; cg=_tableview.transform; self.tableview.estimatedrowheight = 80.0; _tableview.rowheight = uitableviewautomaticdimension; self.tableview.delegate=self; self.tableview.datasource=self; uipinchgesturerecognizer * recognizer = [[uipinchgesturerecognizer alloc] initwithtarget:self action:@selector(twofingerpinch:)]; recognizer.delegate = self; [_tableview addgesturerecognizer:recognizer]; [self fetchmoreayah]; } -(void) viewwillappear:(bool)animated { [super viewwillappear:animated]; header=[[nsmutablearray alloc]init]; (int = 0; i<[self.datasource count]; i++) { [header addobject:[@(i) stringvalue]]; } [self fetchmoreayah]; [self.tableview reloaddata]; } - (void)fetchmoreayah { defaults=[nsuserdefaults standarduserdefaults]; //custom font name , size set user in settings , creating new font according users desire df=[uifont fontwithname:[defaults objectforkey:@"fontstyle"] size:(cgfloat)[[defaults objectforkey:@"font"] floatvalue]]; df1=[uifont systemfontofsize:(cgfloat)[[defaults objectforkey:@"font"] floatvalue]]; self.datasource=[[datasynchandler defaulthandler] fetchcompletesurahforselectedsurahid:self.surahid andurdutranslatorref:[defaults objectforkey:@"language"] andengtranslatorref:[defaults objectforkey:@"translator" ]]; } - (nsinteger)tableview:(uitableview *)tableview numberofrowsinsection:(nsinteger)section { return self.datasource.count; } - (uitableviewcell *)tableview:(uitableview *)tableview cellforrowatindexpath:(nsindexpath *)indexpath { parenttableviewcell *cell = [self.tableview dequeuereusablecellwithidentifier:parentcellidentifier]; if (!cell) { cell = [[parenttableviewcell alloc] initwithstyle:uitableviewcellstyledefault reuseidentifier:parentcellidentifier]; } ayaah * ayaahobj = [self.datasource objectatindex:indexpath.row]; [self setsubtitleforcell:cell item:ayaahobj]; cell.backgroundview = [[uiimageview alloc] initwithimage:[ [uiimage imagenamed:@"gmii.jpg"] stretchableimagewithleftcapwidth:0.0 topcapheight:5.0] ]; [cell setneedsupdateconstraints]; [cell updateconstraintsifneeded]; [cell setneedslayout]; [cell layoutifneeded]; return cell; } - (void)setsubtitleforcell:(parenttableviewcell *)cell item:(ayaah *)item { cell.arbilabel.font =df; cell.englishlabel.font = df1; cell.urdulabl.font=df1; [cell.idlbl settext:item.ayaahid]; nsdecimalnumber *somenumber = [nsdecimalnumber decimalnumberwithstring:item.ayaahid]; nsnumberformatter *formatter = [[nsnumberformatter alloc] init]; nslocale *arlocale = [[nslocale alloc] initwithlocaleidentifier:@"ar"]; [formatter setlocale:arlocale]; nsstring *str=[nsstring stringwithformat:@"%@﴿%@﴾",item.ayaahtext,[formatter stringfromnumber:somenumber]]; [cell.arbilabel settext:str]; if(![[defaults objectforkey:@"language" ] isequaltostring:@"none"]) { [cell.urdulabl settext:item.urdutranslationtext]; cell.urdulabl.textalignment=nstextalignmentright; if (![[defaults objectforkey:@"translator" ] isequaltostring:@"none"]) { [cell.englishlabel settext:item.englishtranslationtext]; } else { [cell.englishlabel settext:@""]; } } else { if (![[defaults objectforkey:@"translator" ] isequaltostring:@"none"]) { [cell.englishlabel settext:item.englishtranslationtext]; cell.englishlabel.textalignment=nstextalignmentleft; [cell.urdulabl settext:@""]; } else { [cell.englishlabel settext:@""]; [cell.urdulabl settext:@""]; } } } - (void)twofingerpinch:(uipinchgesturerecognizer *)recognizer { if(recognizer.state==uigesturerecognizerstateended) { _tableview.transform=cg; [self.tableview reloaddata]; } else { pinchscale=0.0; pinchscale = recognizer.scale; // pinchscale = round(pinchscale * 1000) / 1000.0; cgfloat fontsize = df.pointsize; if (pinchscale < 1) { if(fontsize>14) { _tableview.transform=cgaffinetransformmakescale(pinchscale, pinchscale); pinchscale=.55; df=[uifont fontwithname:[defaults objectforkey:@"fontstyle"] size:(cgfloat)[[defaults objectforkey:@"font"] floatvalue] - pinchscale]; df1=[uifont systemfontofsize:(cgfloat)[[defaults objectforkey:@"font"] floatvalue] - pinchscale]; cgfloat fontsize = df.pointsize; [defaults setobject:[nsstring stringwithformat:@"%.0f", fontsize] forkey:@"font"]; } } else if(pinchscale>1){ if(fontsize<60&&fontsize>=13) { _tableview.transform=cgaffinetransformmakescale(pinchscale, pinchscale); pinchscale=pinchscale/3; df=[uifont fontwithname:[defaults objectforkey:@"fontstyle"] size:(cgfloat)[[defaults objectforkey:@"font"] floatvalue] + pinchscale]; df1=[uifont systemfontofsize:(cgfloat)[[defaults objectforkey:@"font"] floatvalue] + pinchscale]; cgfloat fontsize = df.pointsize; [defaults setobject:[nsstring stringwithformat:@"%.0f", fontsize] forkey:@"font"]; } } // [fontsize r]; } // } - (nsinteger)numberofsectionsintableview:(uitableview *)tableview{ return 1; } - (nsarray *)sectionindextitlesfortableview:(uitableview *)tableview { return header; } - (nsinteger)tableview:(uitableview *)tableview sectionforsectionindextitle:(nsstring *)title atindex:(nsinteger)index { (int = 0; i< index; i++) { ayaah * ayaahobj = [datasource objectatindex:i]; nsstring *letterstring =ayaahobj.ayaahid ; if ([letterstring isequaltostring:title]) { [tableview scrolltorowatindexpath:[nsindexpath indexpathforrow:index insection:0] atscrollposition:uitableviewscrollpositiontop animated:yes]; break; } } return -1; } @end
**its consuming 100mb 200mb when font size 15 , when enter code here m inenter code herecreasing font size 15 45 or 60 app crash , memory shoot 200mb 400mb+ , message display app crash due memory management. using custom cell have 3 labels **
Comments
Post a Comment