最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

IOS UIView的生命周期的實例詳解

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

IOS UIView的生命周期的實例詳解

任何對象的者有一個生命周期,即都存在一個實例化到銷毀的過程。

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

首先自定義繼承自UIView的對象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視圖控制器中實例化,并添加到父視圖

- (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出來時,被調(diào)用的LifeView的相關(guān)方法,如下所示:

// 實例化時 
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時,被調(diào)用的LifeView的相關(guān)方法,如下所示:

// 銷毀時 
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)用了兩次,這是因為在B視圖控制器中,主動調(diào)用了該方法。如果沒有主動調(diào)用該方法的話,只會被調(diào)用一次。

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

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

相關(guān)文章

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

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

    最近因為工作的原因,遇到view圓角優(yōu)化的問題,所以將實現(xiàn)的幾種方法總結(jié)分享出來,下面這篇文章主要給大家介紹了關(guān)于iOS中設(shè)置view圓角化的四種方法,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-09-09
  • iOS自定義日期和數(shù)據(jù)源選擇控件

    iOS自定義日期和數(shù)據(jù)源選擇控件

    這篇文章主要為大家詳細(xì)介紹了iOS自定義日期和數(shù)據(jù)源選擇控件,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-04-04
  • iOS之基于FreeStreamer的簡單音樂播放器示例

    iOS之基于FreeStreamer的簡單音樂播放器示例

    這篇文章主要介紹了iOS之基于FreeStreamer的簡單音樂播放器示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-11-11
  • iOS閱讀器與直播的控件重疊滑動交互詳解

    iOS閱讀器與直播的控件重疊滑動交互詳解

    這篇文章主要介紹了iOS閱讀器與直播的控件發(fā)生重疊時滑動交互受到影響的問題,開發(fā)中某個控件出現(xiàn)在其它控件上方是和你常見的情況,但是如果影響到正常的交互這就會成為大問題,下面我們來了解一下
    2022-08-08
  • iOS實現(xiàn)圖片抖動效果

    iOS實現(xiàn)圖片抖動效果

    這篇文章主要為大家詳細(xì)介紹了iOS實現(xiàn)圖片抖動效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-02-02
  • 基于iOS實現(xiàn)音樂震動條效果

    基于iOS實現(xiàn)音樂震動條效果

    這篇文章主要為大家詳細(xì)介紹了基于iOS實現(xiàn)音樂震動條效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • iOS實現(xiàn)視頻和圖片的上傳思路

    iOS實現(xiàn)視頻和圖片的上傳思路

    這篇文章主要介紹了iOS實現(xiàn)視頻和圖片的上傳思路,本文分步驟給大家介紹的非常詳細(xì),具有參考借鑒價值,需要的朋友可以參考下
    2017-03-03
  • IOS實現(xiàn)選擇城市后跳轉(zhuǎn)Tabbar效果

    IOS實現(xiàn)選擇城市后跳轉(zhuǎn)Tabbar效果

    這篇文章主要為大家詳細(xì)介紹了IOS實現(xiàn)選擇城市后跳轉(zhuǎn)Tabbar效果的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-07-07
  • iOS 指壓即達(dá)集成iOS9里的3D Touch的方法

    iOS 指壓即達(dá)集成iOS9里的3D Touch的方法

    這篇文章主要介紹了iOS 指壓即達(dá)集成iOS9里的3D Touch的方法,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2017-03-03
  • ios利用RunLoop原理實現(xiàn)去監(jiān)控卡頓實例詳解

    ios利用RunLoop原理實現(xiàn)去監(jiān)控卡頓實例詳解

    這篇文章主要為大家介紹了ios利用RunLoop原理實現(xiàn)去監(jiān)控卡頓實例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09

最新評論

双鸭山市| 泸州市| 武冈市| 潜山县| 福建省| 桃源县| 东兴市| 顺义区| 宣城市| 集安市| 鄄城县| 莆田市| 邳州市| 延边| 苏州市| 阿拉尔市| 海盐县| 临城县| 翁牛特旗| 吉安市| 盘山县| 西吉县| 微博| 清徐县| 拉萨市| 宁强县| 洱源县| 台江县| 托克托县| 阜平县| 泾川县| 克山县| 澎湖县| 合肥市| 新津县| 盘锦市| 邻水| 新民市| 泰安市| 三河市| 江山市|