自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Objective-C學(xué)習(xí)筆記 UIView內(nèi)存釋放問題

移動(dòng)開發(fā) iOS
本文介紹的是Objective-C學(xué)習(xí)筆記 UIView內(nèi)存釋放問題,主要講述了對內(nèi)存的相關(guān)操作,具體內(nèi)容我們來看本文詳解。

Objective-C學(xué)習(xí)筆記 UIView內(nèi)存釋放問題是本文要介紹的內(nèi)容,UIView內(nèi)存釋放,之前一直以為把a(bǔ)lloc的UIView對象,最后release掉或者removeFromSuperview掉就可以了。但是最近項(xiàng)目中出現(xiàn)了當(dāng)釋放父試圖時(shí),子視圖內(nèi)存不釋放,最后導(dǎo)致內(nèi)存泄漏,報(bào)內(nèi)存警告最后程序崩潰。

造成UIview內(nèi)存泄漏的原因是,當(dāng)釋放UIView時(shí),其子視圖中有占有的資源沒有釋放掉,如動(dòng)畫沒有結(jié)束,最后造成內(nèi)存不會釋放掉。

下面的代碼能夠很好的展示上述過程:

在主視圖上添加一個(gè)AnimationView,然后在AnimationView中在添加一個(gè)視圖:

  1. Animations *animationView=[[Animations alloc] initWithFrame:CGRectMake(10, 10, 270, 400)];   
  2.         [animationView setBackgroundColor:[UIColor yellowColor]];   
  3.         [self addSubview:animationView];   
  4.         [animationView release]; 

在Animations視圖中添加一個(gè)遞歸的動(dòng)畫:

  1. - (void)wobble {   
  2.     NSLog(@">>>>>>>>>>>>>>>>>>");   
  3.         CGFloat rotation = (kWobbleRadians * M_PI * 2) / 360.0;   
  4.         CGAffineTransform wobbleLeft = CGAffineTransformMakeRotation(rotation);   
  5.         [UIView beginAnimations:nil context:nil];   
  6.         [UIView setAnimationDuration:kWobbleTime];   
  7.         [UIView setAnimationDelegate:self];   
  8.         self.transform = wobbleLeft;   
  9.    //     if (!releaseFlage) {   
  10.             [UIView setAnimationDidStopSelector:@selector(wobble)];   
  11.    //     }   
  12.         [UIView setAnimationRepeatAutoreverses:NO];   
  13.         [UIView commitAnimations];   

由于當(dāng)前類每隔3秒鐘要執(zhí)行一次遞歸,所以當(dāng)在主視圖中移除AnimationView時(shí),由于AnimationView的子視圖動(dòng)畫是一個(gè)遞歸沒有結(jié)束,所以當(dāng)前這個(gè)視圖樹不會釋放,只是不再界面上顯示,最終造成內(nèi)存泄漏。解決辦法如下,當(dāng)AnimationView想要移除時(shí),需要將其子視圖上的動(dòng)畫移除掉。我的做法是在AnimationView中添加下面方法即可:

  1. - (void)willRemoveSubview:(UIView *)subview   
  2. {   
  3.     Animations *downBookView=(Animations *)subview;   
  4.     downBookView.releaseFlage=TRUE;   

這樣內(nèi)存視圖樹就會跟著釋放掉內(nèi)存,從系統(tǒng)中徹底釋放掉了。

小結(jié):Objective-C學(xué)習(xí)筆記 UIView內(nèi)存釋放問題的內(nèi)容介紹完了,希望本文對你有所幫助。

責(zé)任編輯:zhaolei 來源: 互聯(lián)網(wǎng)
相關(guān)推薦

2011-08-04 14:58:37

Objective-C Cocoa NSString

2013-08-21 14:57:42

objective-c問題

2011-08-05 14:03:39

Objective-C 對象 模板

2011-08-16 10:23:04

Objective-CNSAutoreleaXcode常用鍵

2011-05-11 15:45:50

內(nèi)存管理Objective-C

2011-08-15 16:09:44

Cocoa對象Objective-C

2011-07-27 16:36:03

iphone Objective- 靜態(tài)庫

2011-07-20 17:04:43

Objective-C 內(nèi)存 內(nèi)存泄露

2011-05-11 14:06:49

Objective-C

2011-07-21 10:10:42

Objective-C 內(nèi)存 Autoreleas

2011-07-21 09:32:07

Objective-C 內(nèi)存 Autoreleas

2011-07-18 17:14:16

Objective-C 內(nèi)存 Cocoa

2011-08-04 11:04:14

Objective-C 面向?qū)ο? 繼承

2011-08-04 10:38:17

Objective-C 預(yù)處理程序

2011-08-01 11:37:41

iPhone Objective- 內(nèi)存

2011-08-16 17:43:47

Objective-C內(nèi)存管理Autorelease

2011-07-25 10:03:06

Objective-C 委托

2011-07-29 16:08:31

Objective-C 內(nèi)存

2011-08-18 13:28:35

Objective-C內(nèi)存

2011-07-25 14:27:10

Objective-C 協(xié)議 函數(shù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號