Note that there are some explanatory texts on larger screens.

plurals
  1. POGetting memory leak in UIKit?
    primarykey
    data
    text
    <p>when I tested my App in instruments for memory leak I found nothing(running using simulator).But When I run it in a mobile and then checked, there are many leaks in UIKit objects. This happening in every view.In simulator no such leaks are showing.</p> <p>Below is the screenshot of the instrument where some leakage happened.</p> <p><img src="https://i.stack.imgur.com/WPlND.png" alt="enter image description here"></p> <p>When I moved to secondViewController from HomeView, no leaks found.If again coming back to home,these many leaks are found. So, is it mean that, I have to release/nil all the UI objects which I used in that secondView. For your information, below are the UI objects I used in secondView.</p> <pre><code>1.Two Background UIImageView 2.One TitleBar UIImageView 3.3 UIButtons(Back,left and right button for iCarousel) 4.One iCarousel view 5.UIPageController(For this I have used a third Party code SMPageControl) 6.One title label. </code></pre> <p><strong>Note :</strong> Mine is Non-ARC code.</p> <p>Did anyone faced this problem before.How can I overcome this problem,since I have this problem in every View in my App.Because of this, my App getting memory waring frequently and crashing often.</p> <p>Thank you.</p> <p>Below is the my implementation file of that View.</p> <p>EDIT1 : </p> <pre><code> @implementation CatalogueViewController @synthesize deptCarousel = _deptCarousel; @synthesize carouselItems = _carouselItems; @synthesize categorymAr = _categorymAr; @synthesize spacePageControl = _spacePageControl; @synthesize wrap; - (void)dealloc { _deptCarousel = nil; [_categorymAr release]; _categorymAr = nil; _deptCarousel.delegate = nil; _deptCarousel.dataSource = nil; [_deptCarousel release]; [_carouselItems release]; [viewGesture release]; viewGesture = nil; [_spacePageControl release]; _spacePageControl = nil; imgViewBG = nil; imgViewBG2 = nil; btnPrev = nil; btnNext = nil; // [self releaseObjects]; [super dealloc]; } - ( IBAction) btnBackClicked { [self.navigationController popViewControllerAnimated:YES]; } - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; if (self) { // Custom initialization } return self; } - (void)didReceiveMemoryWarning { // Releases the view if it doesn't have a superview. [super didReceiveMemoryWarning]; // Release any cached data, images, etc that aren't in use. } #pragma mark - View lifecycle - (void)viewDidLoad { [super viewDidLoad]; self.title = NSLocalizedString(@"catalogue", @"Catalogue"); // Do any additional setup after loading the view from its nib. _deptCarousel.type = iCarouselTypeLinear; _deptCarousel.scrollSpeed = 0.3f; _deptCarousel.bounceDistance = 0.1f; _deptCarousel.scrollToItemBoundary = YES; _deptCarousel.stopAtItemBoundary = YES; [_deptCarousel setScrollEnabled:NO]; UISwipeGestureRecognizer *swipeLeft = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeNext:)]; swipeLeft.direction = UISwipeGestureRecognizerDirectionLeft; [viewGesture addGestureRecognizer:swipeLeft]; [swipeLeft release]; UISwipeGestureRecognizer *swipeRight = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipePrev:)]; swipeRight.direction = UISwipeGestureRecognizerDirectionRight; [viewGesture addGestureRecognizer:swipeRight]; [swipeRight release]; UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleSingleTap:)]; [viewGesture addGestureRecognizer:singleTap]; [singleTap release]; _carouselItems = [[NSMutableArray alloc] initWithCapacity:1]; _categorymAr = [[NSMutableArray alloc] initWithCapacity:1]; [self addCatalogues]; _spacePageControl.numberOfPages = [_categorymAr count]; [_spacePageControl setPageIndicatorImage:[UIImage imageNamed:IS_IPAD?@"Marker1.fw.png" : @"Markeri.png"]]; [_spacePageControl setCurrentPageIndicatorImage:[UIImage imageNamed:IS_IPAD?@"Marker-Highlight.png" : @"Marker-Highlight_i.png"]]; [_spacePageControl addTarget:self action:@selector(spacePageControl:) forControlEvents:UIControlEventValueChanged]; } - (void)spacePageControl:(SMPageControl *)sender{ [_deptCarousel scrollToItemAtIndex:sender.currentPage animated:YES]; } - ( void ) addCatalogues { [_categorymAr addObjectsFromArray:[[DBModel database] categoryList]]; for (int i = 0; i &lt; [_categorymAr count]; i++) { [_carouselItems addObject:[NSNumber numberWithInt:i]]; } [_deptCarousel reloadData]; } - (void)viewDidUnload{ [super viewDidUnload]; // Release any retained subviews of the main view. // e.g. self.myOutlet = nil; } - (void)viewWillAppear:(BOOL)animated { [self phoneType]; [super viewWillAppear:animated]; if (IS_IPAD) { UIInterfaceOrientation statusBarOrientation = [[UIApplication sharedApplication] statusBarOrientation]; [self handleOrientation:statusBarOrientation]; } } - (void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; } - ( void ) phoneType{ if(!IS_IPAD){ if(IS_IPHONE5){ imgViewBG.image = [UIImage imageNamed:@"Background5_5.jpg"]; imgViewBG.center = CGPointMake(162,265); imgViewBG2.image = [UIImage imageNamed:@"Background11_5.png"]; _spacePageControl.center = CGPointMake(160, 478); _deptCarousel.center = CGPointMake(160, 355); viewGesture.center = CGPointMake(160, 355); btnPrev.center = CGPointMake(25, 355); btnNext.center = CGPointMake(295, 355); } else{ imgViewBG.image = [UIImage imageNamed:@"Background5.jpg"]; imgViewBG2.image = [UIImage imageNamed:@"Background9.png"]; } } } -(void)textFieldDidBeginEditing:(UITextField *)textField{ textFieldSearch.placeholder = @""; UIButton *clearButton = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 20, 20)]; [clearButton setImage:[UIImage imageNamed:IS_IPAD?@"Btn_X_Large.fw.png":@"Btn_X.fw.png"] forState:UIControlStateNormal]; [clearButton addTarget:self action:@selector(btnClearTextField) forControlEvents:UIControlEventTouchUpInside]; [textFieldSearch setRightViewMode:UITextFieldViewModeAlways]; [textFieldSearch setRightView:clearButton]; [clearButton release]; } -(void)textFieldDidEndEditing:(UITextField *)textField{ [textFieldSearch setRightView:nil]; if ([textFieldSearch.text isEqualToString:@""]) { textFieldSearch.placeholder = NSLocalizedString(@"hud_search_for_a_product_here",@""); } } -(IBAction)btnClearTextField{ textFieldSearch.text = @""; } - (NSUInteger)supportedInterfaceOrientations { return UIInterfaceOrientationMaskAll; } - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { if (IS_IPAD) { return YES; } else { return (interfaceOrientation == UIInterfaceOrientationPortrait || interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown); } } - (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation )toInterfaceOrientation duration:(NSTimeInterval)duration{ if (IS_IPAD) { [self handleOrientation:toInterfaceOrientation]; } } - ( void ) handleOrientation:(UIInterfaceOrientation )toInterfaceOrientation { if (toInterfaceOrientation == UIInterfaceOrientationPortrait || toInterfaceOrientation == UIInterfaceOrientationPortraitUpsideDown) { imgViewBG.image = [UIImage imageNamed:@"Background_Catalogue_P.jpg"]; imgViewBG2.image = [UIImage imageNamed:@"Background_Overlay_P.fw.png"]; btnPrev.center = CGPointMake(90, 640); btnNext.center = CGPointMake(677, 640); textFieldSearch.frame = CGRectMake(187, 54, 418, 25); _deptCarousel.frame = CGRectMake(235, 250, 300, 800); _spacePageControl.center = CGPointMake(385, 920); viewGesture.center = CGPointMake(385, 658); }else { imgViewBG.image = [UIImage imageNamed:@"Background_Catalogue_L.jpg"]; imgViewBG2.image = [UIImage imageNamed:@"Background_Overlay_L.fw.png"]; btnPrev.center = CGPointMake(54, 385); btnNext.center = CGPointMake(640, 385); textFieldSearch.frame = CGRectMake(240, 55, 567, 25); _deptCarousel.frame = CGRectMake(50, 250, 600, 300); _spacePageControl.center = CGPointMake(346, 660); viewGesture.center = CGPointMake(347, 405); } } - ( IBAction )btnDepartmentClicked:(id)sender { int btnTag = [sender tag]; ProductCategoriesViewController *productView = [[ProductCategoriesViewController alloc] initWithNibName:@"ProductCategoriesView" bundle:nil]; if ( btnTag == 0 ) { [productView setStrTitle:NSLocalizedString(@"women", @"Women")]; }else if ( btnTag == 1 ) { [productView setStrTitle:NSLocalizedString(@"men", @"Men")]; } else { [productView setStrTitle:NSLocalizedString(@"sports", @"Sports")]; } [self.navigationController pushViewController:productView animated:YES]; [productView release]; } - ( BOOL ) textFieldShouldReturn:( UITextField * )textField { [textField resignFirstResponder]; [Flurry logEvent:@"Product searched" withParameters:[NSDictionary dictionaryWithObjectsAndKeys:textField.text,@"1", nil]]; [self productSearch:textField.text isBar:NO isQR:NO]; return YES; } - ( void ) productSearch:( NSString * )_searchText isBar:( BOOL )_isBar isQR:( BOOL )_isQr { if ([_searchText isEqualToString:@""]) { return; } NSMutableArray *ProductList = [[NSMutableArray alloc] init]; [ProductList addObjectsFromArray:[[DBModel database] productSearch:_searchText isBar:_isBar isQR:_isQr]]; if ( [ProductList count] == 0 ) { UIAlertView *alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"product", @"") message:NSLocalizedString(@"cannot_find_product", @"") delegate:nil cancelButtonTitle:NSLocalizedString(@"ok", @"") otherButtonTitles:nil]; [alert show]; [alert release]; } else { GeneralProductListViewController *generalProductList = [[GeneralProductListViewController alloc] initWithNibName:IS_IPAD?@"GeneralProductListView~iPad": @"GeneralProductListView" bundle:nil]; [generalProductList setMArProducts:ProductList]; [self.navigationController pushViewController:generalProductList animated:YES]; [generalProductList release]; } [ProductList release]; } -(IBAction) spin:(id)sender { if([sender tag]==0) { [_deptCarousel scrollToItemAtIndex:[self.deptCarousel currentItemIndex]+1 animated:YES]; // [_deptCarousel scrollByNumberOfItems:1 duration:2.0]; } else{ [_deptCarousel scrollToItemAtIndex:[self.deptCarousel currentItemIndex]-1 animated:YES]; } } -(void)swipeNext:(UISwipeGestureRecognizer *)recognizer{ [_deptCarousel scrollToItemAtIndex:[self.deptCarousel currentItemIndex]+1 animated:YES]; } -(void)swipePrev:(UISwipeGestureRecognizer *)recognizer{ [_deptCarousel scrollToItemAtIndex:[self.deptCarousel currentItemIndex]-1 animated:YES]; } -(void) handleSingleTap:(UITapGestureRecognizer *)recognizer{ if ([_categorymAr count] &gt; 0) { ProductCategoriesViewController *prodCatView = [[ProductCategoriesViewController alloc] initWithNibName:IS_IPAD ? @"ProductCategoriesView~iPad" : @"ProductCategoriesView" bundle:nil]; Category *categoryObj = [_categorymAr objectAtIndex:[self.deptCarousel currentItemIndex]]; [prodCatView setStrTitle:categoryObj.categoryName]; [prodCatView setCategoryId:categoryObj.categoryId]; [Flurry logEvent:@"Category List" withParameters:[NSDictionary dictionaryWithObjectsAndKeys:categoryObj.categoryName,[NSString stringWithFormat:@"%d",categoryObj.categoryId], nil]]; [self.navigationController pushViewController:prodCatView animated:YES]; [prodCatView release]; } } //-(void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{ // pageControl.currentPage = [self.deptCarousel currentItemIndex] ; //} #pragma mark #pragma mark NavigationBarViewDelegate metho - ( void ) navigationBackClicked { [self.navigationController popViewControllerAnimated:YES]; } #pragma mark - #pragma mark iCarousel methods - (NSUInteger)numberOfItemsInCarousel:(iCarousel *)carousel { return [_carouselItems count]; } - (NSUInteger)numberOfVisibleItemsInCarousel:(iCarousel *)carousel { //limit the number of items views loaded concurrently (for performance reasons) return NUMBER_OF_VISIBLE_ITEMS; } - (UIView *)carousel:(iCarousel *)carousel viewForItemAtIndex:(NSUInteger)index { Category *categoryObj = [_categorymAr objectAtIndex:index]; //create a numbered view UIView *view = nil; NSString *imagePath = [[APP_CACHES_DIR stringByAppendingPathComponent:@"catalogues"] stringByAppendingString:[NSString stringWithFormat:@"/%d.jpg", categoryObj.categoryId]]; if (![[NSFileManager defaultManager] fileExistsAtPath:imagePath]) { view = [[[UIImageView alloc] initWithImage:[UIImage imageNamed:IS_IPAD?@"Gallery Placeholder.png":@"Gallery Placeholder.png"]] autorelease]; } else { view = [[[UIImageView alloc] initWithImage:[UIImage imageWithContentsOfFile:[[APP_CACHES_DIR stringByAppendingPathComponent:@"catalogues"] stringByAppendingString:[NSString stringWithFormat:@"/%d.jpg", categoryObj.categoryId]]]] autorelease]; } if (IS_IPAD) { view.frame = CGRectMake(0, 0, 420, 420); } else { view.frame = CGRectMake(0, 0, 200, 200); } // UILabel *label = [[[UILabel alloc] initWithFrame:CGRectMake(view.bounds.origin.x, view.bounds.origin.y+view.bounds.size.height, view.bounds.size.width, 44)] autorelease]; // label.text = categoryObj.categoryName; // label.textColor = [UIColor blackColor]; // label.backgroundColor = [UIColor clearColor]; // label.textAlignment = UITextAlignmentCenter; // label.font = [UIFont fontWithName:@"Helvetica-Bold" size:IS_IPAD?26:14]; // [view addSubview:label]; return view; } - (NSUInteger)numberOfPlaceholdersInCarousel:(iCarousel *)carousel { //note: placeholder views are only displayed on some carousels if wrapping is disabled return INCLUDE_PLACEHOLDERS? 2: 0; } - (UIView *)carousel:(iCarousel *)carousel placeholderViewAtIndex:(NSUInteger)index { //create a placeholder view UIView *view = [[[UIImageView alloc] initWithImage:[UIImage imageNamed:@""]] autorelease]; UILabel *label = [[[UILabel alloc] initWithFrame:view.bounds] autorelease]; label.text = (index == 0)? @"[": @"]"; label.backgroundColor = [UIColor clearColor]; label.textAlignment = UITextAlignmentCenter; label.font = [label.font fontWithSize:50]; _spacePageControl.currentPage = index; // [view addSubview:label]; return view; } - (CGFloat)carouselItemWidth:(iCarousel *)carousel { //usually this should be slightly wider than the item views return ITEM_SPACING; } - (CATransform3D)carousel:(iCarousel *)_carousel transformForItemView:(UIView *)view withOffset:(CGFloat)offset { //implement 'flip3D' style carousel //set opacity based on distance from camera view.alpha = 1.0 - fminf(fmaxf(offset, 0.0), 1.0); //do 3d transform CATransform3D transform = CATransform3DIdentity; transform.m34 = _deptCarousel.perspective; transform = CATransform3DRotate(transform, M_PI / 8.0, 0, 1.0, 0); return CATransform3DTranslate(transform, 0.0, 0.0, offset * _deptCarousel.itemWidth); } - (BOOL)carouselShouldWrap:(iCarousel *)carousel { //wrap all carousels // return NO; return wrap; } - (void)carousel:(iCarousel *)carousel didSelectItemAtIndex:(NSInteger)index { if (index == [self.deptCarousel currentItemIndex]) { ProductCategoriesViewController *prodCatView = [[ProductCategoriesViewController alloc] initWithNibName:IS_IPAD ? @"ProductCategoriesView~iPad" : @"ProductCategoriesView" bundle:nil]; Category *categoryObj = [_categorymAr objectAtIndex:index]; [prodCatView setStrTitle:categoryObj.categoryName]; [prodCatView setCategoryId:categoryObj.categoryId]; [Flurry logEvent:@"Category List" withParameters:[NSDictionary dictionaryWithObjectsAndKeys:categoryObj.categoryName,[NSString stringWithFormat:@"%d",categoryObj.categoryId], nil]]; [self.navigationController pushViewController:prodCatView animated:YES]; [prodCatView release]; } } -(void) carouselDidScroll:(iCarousel *)carousel{ // [_deptCarousel scrollToItemAtIndex:[self.deptCarousel currentItemIndex]+3 animated:YES]; // [_deptCarousel scrollByNumberOfItems:1 duration:1]; } - (void)carouselCurrentItemIndexUpdated:(iCarousel *)carousel{ _spacePageControl.currentPage = [self.deptCarousel currentItemIndex]; } - ( IBAction ) myCart { if ( [[DBModel database] isShoppingListEmpty] ) { UIAlertView *alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"at_shopping_cart", @"") message:NSLocalizedString(@"amsg_shopping_cart_empty", @"") delegate:nil cancelButtonTitle:NSLocalizedString(@"ok", @"") otherButtonTitles:nil]; [alert show]; [alert release]; return; } MyCartViewController *myCartView = [[MyCartViewController alloc] initWithNibName:IS_IPAD ? @"MyCartView~iPad" : @"MyCartView" bundle:nil]; [self.navigationController pushViewController:myCartView animated:YES]; [myCartView release]; } </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload