偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

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

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

Objective-C學(xué)習(xí)筆記 UIView內(nèi)存釋放問(wèn)題是本文要介紹的內(nèi)容,UIView內(nèi)存釋放,之前一直以為把a(bǔ)lloc的UIView對(duì)象,最后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í),其子視圖中有占有的資源沒(méi)有釋放掉,如動(dòng)畫沒(méi)有結(jié)束,最后造成內(nèi)存不會(huì)釋放掉。

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

在主視圖上添加一個(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è)遞歸沒(méi)有結(jié)束,所以當(dāng)前這個(gè)視圖樹(shù)不會(huì)釋放,只是不再界面上顯示,最終造成內(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)存視圖樹(shù)就會(huì)跟著釋放掉內(nèi)存,從系統(tǒng)中徹底釋放掉了。

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

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

2011-08-04 14:58:37

Objective-C Cocoa NSString

2013-08-21 14:57:42

objective-c問(wèn)題

2011-08-05 14:03:39

Objective-C 對(duì)象 模板

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對(duì)象Objective-C

2011-07-27 16:36:03

iphone Objective- 靜態(tài)庫(kù)

2011-07-20 17:04:43

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

2011-05-11 14:06:49

Objective-C

2011-07-21 09:32:07

Objective-C 內(nèi)存 Autoreleas

2011-07-21 10:10:42

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-07-25 10:03:06

Objective-C 委托

2011-08-01 11:37:41

iPhone Objective- 內(nèi)存

2011-08-16 17:43:47

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

2011-07-29 16:08:31

Objective-C 內(nèi)存

2011-08-18 13:28:35

Objective-C內(nèi)存

2011-08-04 13:43:30

Objective-C 私有變量
點(diǎn)贊
收藏

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