亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

IOS UIView的生命周期的實(shí)例詳解

 更新時(shí)間:2017年09月12日 11:23:36   作者:番薯大佬  
這篇文章主要介紹了IOS UIView的生命周期的實(shí)例詳解的相關(guān)資料,希望通過本文大家能掌握理解這部分內(nèi)容,需要的朋友可以參考下

IOS UIView的生命周期的實(shí)例詳解

任何對(duì)象的者有一個(gè)生命周期,即都存在一個(gè)實(shí)例化到銷毀的過程。

UIView對(duì)象也不例外,那么UIView從init/new開始后,直到dealloc結(jié)束的過程中都經(jīng)歷了哪些過程呢?

首先自定義繼承自UIView的對(duì)象LifeView

#import <UIKit/UIKit.h> 
 
@interface LifeView : UIView 
 
@end 
#import "LifeView.h" 
 
@interface LifeView () 
{ 
  NSInteger count; 
} 
 
@end 
 
@implementation LifeView 
 
- (instancetype)initWithFrame:(CGRect)frame 
{ 
  self = [super initWithFrame:frame]; 
  if (self) 
  { 
    NSLog(@"<-- 1 %s , count = %@-->", __func__, @(count++)); 
  } 
  return self; 
} 
 
 
- (void)willMoveToSuperview:(nullable UIView *)newSuperview 
{ 
  NSLog(@"<-- 2 %s , count = %@-->", __func__, @(count++)); 
} 
 
- (void)didMoveToSuperview 
{ 
  NSLog(@"<-- 3 %s , count = %@-->", __func__, @(count++)); 
} 
 
- (void)willMoveToWindow:(nullable UIWindow *)newWindow 
{ 
  NSLog(@"<-- 4/7 %s , count = %@-->", __func__, @(count++)); 
} 
 
- (void)didMoveToWindow 
{ 
  NSLog(@"<-- 5/8 %s , count = %@-->", __func__, @(count++)); 
} 
 
- (void)layoutSubviews 
{ 
  NSLog(@"<-- 6 %s , count = %@-->", __func__, @(count++)); 
} 
 
- (void)removeFromSuperview 
{ 
  NSLog(@"<-- 9 %s , count = %@-->", __func__, @(count++)); 
} 
 
- (void)dealloc 
{ 
  NSLog(@"<-- 10 %s , count = %@-->", __func__, @(count++)); 
} 
 
@end 

其次,在B視圖控制器中實(shí)例化,并添加到父視圖

- (void)viewDidLoad { 
  [super viewDidLoad]; 
  // Do any additional setup after loading the view. 
   
  self.title = @"life view"; 
   
  LifeView *lifeView = [[LifeView alloc] initWithFrame:CGRectMake(10.0, 80.0, 100.0, 100.0)]; 
  [self.view addSubview:lifeView]; 
  lifeView.tag = 1000; 
  lifeView.backgroundColor = [UIColor orangeColor]; 
} 

當(dāng)B視圖控制器被push,或present出來時(shí),被調(diào)用的LifeView的相關(guān)方法,如下所示:

// 實(shí)例化時(shí) 
2017-06-16 00:37:10.694 DemoViewLife[3963:121184] <-- 1 -[LifeView initWithFrame:] , count = 0--> 
2017-06-16 00:37:10.695 DemoViewLife[3963:121184] <-- 2 -[LifeView willMoveToSuperview:] , count = 1--> 
2017-06-16 00:37:10.695 DemoViewLife[3963:121184] <-- 3 -[LifeView didMoveToSuperview] , count = 2--> 
2017-06-16 00:37:10.697 DemoViewLife[3963:121184] <-- 4/7 -[LifeView willMoveToWindow:] , count = 3--> 
2017-06-16 00:37:10.697 DemoViewLife[3963:121184] <-- 5/8 -[LifeView didMoveToWindow] , count = 4--> 
2017-06-16 00:37:10.701 DemoViewLife[3963:121184] <-- 6 -[LifeView layoutSubviews] , count = 5--> 

當(dāng)B視圖控制器被pop,或dismiss時(shí),被調(diào)用的LifeView的相關(guān)方法,如下所示:

// 銷毀時(shí) 
2017-06-16 00:37:25.514 DemoViewLife[3963:121184] <-- 4/7 -[LifeView willMoveToWindow:] , count = 6--> 
2017-06-16 00:37:25.514 DemoViewLife[3963:121184] <-- 5/8 -[LifeView didMoveToWindow] , count = 7--> 
2017-06-16 00:37:25.515 DemoViewLife[3963:121184] <-- 9 -[LifeView removeFromSuperview] , count = 8--> 
2017-06-16 00:37:25.516 DemoViewLife[3963:121184] <-- 9 -[LifeView removeFromSuperview] , count = 9--> 
2017-06-16 00:37:25.518 DemoViewLife[3963:121184] <-- 10 -[LifeView dealloc] , count = 10--> 

從打印信息可以看到方法"removeFromSuperview"被調(diào)用了兩次,這是因?yàn)樵贐視圖控制器中,主動(dòng)調(diào)用了該方法。如果沒有主動(dòng)調(diào)用該方法的話,只會(huì)被調(diào)用一次。

另外被執(zhí)行過兩次的方法還有"willMoveToWindow"和"didMoveToWindow"。我們可以很好地進(jìn)行區(qū)分,當(dāng)newWindow存在時(shí),則是實(shí)例化創(chuàng)建被第一次調(diào)用;而當(dāng)newWindow為nil時(shí),則是被銷毀了,即結(jié)束生命周期。

如有疑問請(qǐng)留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!

相關(guān)文章

  • iOS實(shí)現(xiàn)逐幀動(dòng)畫做loading視圖

    iOS實(shí)現(xiàn)逐幀動(dòng)畫做loading視圖

    這篇文章主要為大家詳細(xì)介紹了iOS實(shí)現(xiàn)逐幀動(dòng)畫做loading視圖,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-05-05
  • iOS中設(shè)置view圓角化的四種方法示例

    iOS中設(shè)置view圓角化的四種方法示例

    最近因?yàn)楣ぷ鞯脑?遇到view圓角優(yōu)化的問題,所以將實(shí)現(xiàn)的幾種方法總結(jié)分享出來,下面這篇文章主要給大家介紹了關(guān)于iOS中設(shè)置view圓角化的四種方法,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-09-09
  • iOS實(shí)現(xiàn)計(jì)算器小功能

    iOS實(shí)現(xiàn)計(jì)算器小功能

    這篇文章主要介紹了iOS實(shí)現(xiàn)計(jì)算器小功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • IOS中實(shí)現(xiàn)圖片點(diǎn)擊全屏預(yù)覽

    IOS中實(shí)現(xiàn)圖片點(diǎn)擊全屏預(yù)覽

    IOS作為一款智能手機(jī)系統(tǒng),在查看圖片的時(shí)候,如果能夠?qū)崿F(xiàn)全屏,對(duì)用戶來說有很好的視覺體驗(yàn),其實(shí)實(shí)現(xiàn)起來非常的簡(jiǎn)單,下面我就結(jié)合一個(gè)簡(jiǎn)單的代碼給大家來分享一下,,需要的朋友可以參考下
    2015-11-11
  • iOS開發(fā)中runtime常用的幾種方法示例總結(jié)

    iOS開發(fā)中runtime常用的幾種方法示例總結(jié)

    Runtime也就是所謂的“運(yùn)行時(shí)”,因?yàn)槭窃谶\(yùn)行時(shí)實(shí)現(xiàn)的。下面這篇文章主要給大家介紹了關(guān)于iOS開發(fā)中runtime常用的幾種方法的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2018-08-08
  • 百度地圖PC端判斷用戶是否在配送范圍內(nèi)

    百度地圖PC端判斷用戶是否在配送范圍內(nèi)

    在pc端設(shè)置商家的配送范圍,用戶在下單時(shí),根據(jù)用戶設(shè)置的配送地點(diǎn)判斷是否在可配送范圍內(nèi),并給用戶相應(yīng)的提示,下面通過本文給大家分享具有實(shí)現(xiàn)代碼,感興趣的朋友一起學(xué)習(xí)吧
    2016-01-01
  • iOS開發(fā)之UIScrollView詳解

    iOS開發(fā)之UIScrollView詳解

    UIScrollView使用非常廣,本文研究UIScrollView各屬性和方法,明白它們的意義、作用。這里我們整理UIScrollView一些常見用法以及一些效果的實(shí)現(xiàn)思路。
    2016-04-04
  • iOS如何巧妙解決NSTimer的循環(huán)引用詳解

    iOS如何巧妙解決NSTimer的循環(huán)引用詳解

    這篇文章主要給大家介紹了關(guān)于iOS如何巧妙解決NSTimer的循環(huán)引用的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-03-03
  • Unity移動(dòng)端的復(fù)制要這么寫示例代碼

    Unity移動(dòng)端的復(fù)制要這么寫示例代碼

    這篇文章主要給大家介紹了關(guān)于Unity移動(dòng)端的復(fù)制的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-08-08
  • iOS10最新實(shí)現(xiàn)遠(yuǎn)程通知的開發(fā)教程詳解

    iOS10最新實(shí)現(xiàn)遠(yuǎn)程通知的開發(fā)教程詳解

    這篇文章主要介紹了iOS10最新遠(yuǎn)程通知開發(fā)的實(shí)現(xiàn)過程,文章先對(duì)推送通知以及遠(yuǎn)程推送通知等進(jìn)行了基本介紹,然后通過示例代碼詳細(xì)介紹了iOS10 全新遠(yuǎn)程通知的教程,有需要的朋友們可以參考借鑒,下面來一起看看吧。
    2016-09-09

最新評(píng)論