`

iOS开发那些事--iOS视图生命周期与视图控制器关系

阅读更多

iOS中视图是一个应用的重要组成部分,功能的实现与其息息相关,而视图控制器控制着视图,其重要性在整个应用中不言而喻。

视图生命周期与视图控制器关系

以视图的5种状态为基础,我们来系统的了解一下视图控制器的生命周期。在视图不同的生命周期,视图控制器会回调不同的方法。

1

viewDidLoad方法:视图控制器已被实例化,在视图被加载到内存中的时候调用该方法,这个时候视图并未出现。在该方法中通常进行的是对所控制的视图进行初始化处理。

视 图可见前后会调用viewWillAppear:方法和viewDidAppear:方法;视图不可见前后会调用viewWillDisappear:方 法和viewDidDisappear:方法。 4个方法调用父类相应的方法以实现其功能, 编码时该方法的位置可根据实际情况做以调整,参见如下代码:

-(void)viewWillAppear:(BOOL)animated

{

[super viewWillAppear:YES];

… …

}
 

viewDidLoad 方法在应用运行的时候只调用一次,而这上述4个方法可以被反复调用多次,它们的使用很广泛但同时也具有很强的技巧性。例如:有的应用会使用重力加速计,重 力加速计会不断轮询设备以实时获得设备在z轴、x轴和y轴方向的重力加速度。不断的轮询必然会耗费大量电能进而影响电池使用寿命,我们通过利用这4个方法 适时地打开或者关闭重力加速计来达到节约电能的目的。怎么使用这4个方法才能做到“适时”是一个值得思考的问题。

iOS系统在低内存时情况 下会调用didReceiveMemoryWarning:和viewDidUnload:方法。iOS6之后就不再使用viewDidUnload:, 而仅支持didReceiveMemoryWarning:。didReceiveMemoryWarning:方法的主要职能是释放内存,包括视图控制 器中的一些成员变量和视图的释放。现举例如下:

- (void)didReceiveMemoryWarning {

self.button = nil;
self.myStringD = nil;
[myStringC release];

[super didReceiveMemoryWarning];
}
 
0
0
分享到:
评论

相关推荐

    iOS开发进阶篇-成为一个iOS开发高手

    MVC(模型-视图-控制器)、MVVM(模型-视图-ViewModel)和VIPER(视图-交互- presenter-实体-路由)等设计模式可能会被详细讲解,这些模式有助于构建可扩展、易于测试的应用。此外,了解如何利用Dependency ...

    iOS开发进阶-完整版

    - UIViewController:视图控制器的生命周期管理、导航与传递数据。 - UITableView:表格视图的创建与数据绑定。 #### 二、核心功能实现与优化技巧 - **网络通信**: - 使用URLSession发起HTTP请求。 - JSON...

    IOS应用源码Demo-宫格视图(支持横屏)LOGO-毕设学习.zip

    了解iOS应用的基本架构、生命周期和事件处理是必要的。 2. UICollectionView:iOS中的UICollectionView是实现宫格视图的主要工具,它可以灵活地展示多个单元格,每个单元格可以自定义显示内容。 3. 自适应布局...

    IOS应用源码Demo-视图控制器(动画版)-毕设学习.zip

    1. **iOS应用结构**:了解iOS应用的基本架构,如 storyboard、XIB 文件的使用,以及如何组织 MVC(模型-视图-控制器)架构。 2. **UIViewController**:掌握UIViewController的生命周期,如何加载视图,以及如何...

    IOS应用源码Demo-视图控制器(无动画版)-毕设学习.zip

    2. **UIViewController**:掌握UIViewController的生命周期,如`viewDidLoad`、`viewWillAppear`、`viewDidAppear`等方法的使用,以及如何在控制器之间进行跳转。 3. **UI设计**:学习使用Interface Builder或者纯...

    IOS应用源码Demo-多种view视图切换效果-毕设学习.zip

    它包含了视图的生命周期管理、视图的显示与隐藏以及与其他控制器的交互等重要功能。在视图切换中,通常会通过`pushViewController:animated:`或`presentViewController:animated:completion:`等方法来切换不同的`...

    ios-滑动切换视图.zip

    - 视图控制器的生命周期管理是关键,需要在适当的时候加载和释放视图控制器以节省内存。 - 使用`NSCache`或者`WeakReference`来缓存未显示但可能再次被访问的视图控制器。 5. **动画实现**: - 使用`UIView`的`...

    ios应用源码之视图控制器(无动画版) 20181210

    在iOS应用开发中,视图控制器(UIViewController)是构建用户界面的核心组件,它负责管理一个或多个视图的生命周期和行为。本资源“ios应用源码之视图控制器(无动画版)20181210”提供了一个基础的、不包含动画效果...

    ios-父子控制器的简单实现.zip

    1. **父控制器(Parent ViewController)**:父控制器负责管理一组子控制器,可以为它们提供上下文,比如数据共享、生命周期管理等。常见的父控制器如UINavigationController、UITabBarController和...

    ios 多视图切换

    切换选项卡时,`UITabBarController`会自动管理对应的子视图控制器的生命周期,用户只需在初始化时配置好各个子控制器即可。 3. **UIStoryboardSegue**:在故事板(Storyboard)中,我们可以使用segue定义视图间的...

    ios-自动滚动广告轮播视图.zip

    10. **生命周期管理**:为了防止内存泄漏,需要在适当的地方停止定时器并释放相关资源,如在视图消失时。 在"AutoScrollViewDemo"这个项目中,开发者TANGSEN通过GitHub分享了这个实现,我们可以从源代码中学习如何...

    IOS视图控制器的生命周期实例详解

    在iOS开发中,视图控制器(UIViewController)是构建用户界面的核心组件。它的生命周期是指从创建到销毁的过程中,系统调用的一系列方法。...记住,理解视图控制器的生命周期是优化iOS应用的关键一步。

    行业分类-设备装置-IOS平台上app视图切换的监测方法和装置.zip

    综上所述,"行业分类-设备装置-IOS平台上app视图切换的监测方法和装置"这个主题涵盖了iOS应用开发中的关键知识点,包括视图控制器的生命周期、性能分析工具的使用、视图切换优化策略等。通过深入理解和实践这些内容...

    ios-一个小彩蛋视图.zip

    综上所述,"ios-一个小彩蛋视图.zip"这个项目不仅展示了如何利用Core Animation创建基础动画,还可能涵盖了自定义视图、用户交互以及视图控制器的生命周期管理等iOS开发中的关键知识点。通过这个项目,开发者可以...

    IOS应用源码Demo-一个效果震撼的视图开场动态效果-毕设学习.zip

    总之,"IOS应用源码Demo-一个效果震撼的视图开场动态效果-毕设学习.zip"是一个学习iOS应用开发中动态效果的宝贵资源,涵盖了Core Animation、UIViewController生命周期、用户界面设计等多个关键知识点,对开发者来说...

    让不懂编程的人爱上iPhone开发(2013秋iOS7版)-第12篇1

    2. 了解视图控制器的生命周期,例如viewDidLoad、viewWillAppear等。 3. 视图控制器可以继承自UIViewController,或者继承自其他视图控制器。 4. 视图控制器可以使用Storyboard、xib和手写代码三种方式来创建界面...

    iOS视图及视图控制器PPT课件.pptx

    UIViewController类是苹果提供的基础视图控制器类,它负责控制视图的生命周期,管理视图的显示和隐藏,以及处理用户交互。视图控制器可以加载和显示NIB文件中的视图,也可以动态创建和添加视图。视图控制器通常会...

    从零开始学iOS7开发系列教程-事务管理软件开发实战

    你将学习如何使用Interface Builder创建视图控制器,添加控件,以及通过代码动态调整UI元素。 第五章至第七章,将探讨iOS中的数据管理,包括使用SQLite数据库存储数据、Core Data框架的使用以及网络请求。这些章节...

    ios-广告弹出个性视图.zip

    自定义视图控制器可以更好地控制广告的生命周期,包括何时加载、何时显示、如何响应用户交互等。 3. **用户交互**:广告视图应该考虑到用户可能的交互,如点击关闭按钮或者滑动隐藏。可以使用`...

    IOS应用源码Demo-从下往上弹出的子视图窗口-毕设学习.zip

    4. **控制器的生命周期**:理解`viewDidLoad`、`viewWillAppear`、`viewDidAppear`等方法,知道何时进行初始化和更新视图。 5. **协议和代理**:如果子视图需要与父视图通信,可能会使用代理设计模式来传递数据和...

Global site tag (gtag.js) - Google Analytics