生命周期-初识IOS
经常因为生命周期的事情,而视图顺序加载错误,或者出现一系列的小错误并且修改不出来,程序员不知道生命周期确实挺可悲的。
IOS生命周期:
- 自上而下的执行,并且viewDidLoad只会执行一次,所以我们一般把对象的声明放在viewDidLoad中去。
- Main.storyboard会比viewDidLoad先执行初始化。所以代码如果和视图有冲突,那就是代码覆盖视图了。
这里我写了一个可以清楚的看到视图加载的顺序的小程序:
新生成一个类管理一个页面用来主页面的跳转,设置一下背景色。
- (void) viewWillAppear:(BOOL)animated
{
//将要显示时
NSLog(@"%s",__func__);
}
-(void) viewDidAppear:(BOOL)animated
{
//显示之后
NSLog(@"%s",__func__);
}
-(void) viewWillDisappear:(BOOL)animated
{
//将要消失
NSLog(@"%s",__func__);
}
-(void) viewDidDisappear:(BOOL)animated
{
//消失之后
NSLog(@"%s",__func__);
}
可以看到这四个代理方法是两两相对应的。_func_返回方法名。再加载一个跳转按钮拉一个点击事件
- (IBAction)click:(id)sender {
_test =[[ssViewController alloc]init];
[self presentViewController:_test animated:YES completion:^{}];
}
_test 是页面对象,点击这个click按钮,就可以跳转到ssViewController 所控制的界面了。
看下面的控制台输出,就可以很直观的看到所有方法的执行顺序,也就是相应的生命周期。
可能说的不太清楚,但是,基本上坚持自上而下执行,界面和代码的执行顺序就行。
生命周期-初识IOS的更多相关文章
- UIViewController的生命周期及iOS程序执行顺序
UIViewController的生命周期及iOS程序执行顺序 当一个视图控制器被创建,并在屏幕上显示的时候. 代码的执行顺序1. alloc ...
- UIViewController的生命周期及iOS程序执行顺序 和ios6 处理内存警告
当一个视图控制器被创建,并在屏幕上显示的时候. 代码的执行顺序1. alloc 创建对象,分配空间2.init (initWithN ...
- UIViewController的生命周期及iOS程序运行顺序
当一个视图控制器被创建,并在屏幕上显示的时候. 代码的运行顺序 1. alloc 创建对象,分配空间 2.init (initWit ...
- iOS 应用程序生命周期
开发应用程序都要了解其生命周期. 今天我们接触一下iOS应用程序的生命周期, iOS的入口在main.m文件: int main(int argc, char * argv[]) { @autorel ...
- 图解ios程序生命周期
图解ios程序生命周期 应用程序启动后状态有Active.Inactive.Background.Suspended.Not running这5种状态,几种状态的转换见下图: 在AppDelegate ...
- 【转】深入浅出 iOS 之生命周期
[iOS]深入浅出 iOS 之生命周期 深入浅出 iOS 之生命周期 http://blog.csdn.net/kesalin/article/details/6691766 罗朝辉(http:// ...
- [转载] iOS应用程序的生命周期
iOS应用程序的生命周期 2015-06-23 iOS大全 (点击上方蓝字,快速关注我们) iOS应用程序一般都是由自己编写的代码和系统框架(system frameworks)组成,系统框架提供一些 ...
- iOS学习笔记(四)——iOS应用程序生命周期
开发应用程序都要了解其生命周期,开始接触android时也是从应用程序生命周期开始的,android的应用程序生命周期更多是其组件的生命周期,例如Activity.Service.今天我们接触一下iO ...
- Android开发之Activity的生命周期以及加载模式
本篇博客就来好好的搞一下Activity的生命周期,如果搞过iOS的小伙伴的话,Activity的生命周期和iOS中ViewController的生命周期非常类似.生命周期,并不难理解.一个人的生命周 ...
随机推荐
- REST深入浅出
不知你是否意识到,围绕着什么才是实现异构的应用到应用通信的“正确”方式,一场争论正进行的如火如荼:虽然当前主流的方式明显地集中在基于SOAP.WSDL和WS-*规范的Web Services领域,但也 ...
- JQuery动态增加删除元素
<form action="" method="post" enctype="multipart/form-data"> < ...
- WPF控件---Border应用
内容模型:Border 只能具有一个子元素.若要显示多个子元素, 需要将一个容器元素放置在父元素Border中. <Grid> <Border BorderBrush="B ...
- 关于Discuz!nt论坛编辑器图片上传bug,flash域的问题
正在整discuz!nt,现在没有什么人弄了把? 上个星期突然来了个bug,搞死我了,论坛图片不能上传,上传卡在100%没反应了,于是我发现ajax发送到AttachUpload.cs时queryst ...
- 难搞的Android开发环境(sdk 代理)
概述 搞了近一周的环境搭建,在csdn上提个问,有位网友说弄一下代理,搜一下,果真有人写博客:Android SDK代理服务器解决国内不能更新下载问题 其实我下了很多个集成好的 adt-bundle- ...
- Swift 变量、常量、数据类型
import Foundation print("HelloSwift") // 声明变量 var a = var b = a = b = // 常量 let c = a+b va ...
- vim+ctags+cscope工具
最近在看一个开源的项目,突然发现在Linux上不知道有什么方便的工具来看开源代码.以前,在Windows上用VS2010集成开发环境,对于任意一个函数直接有快捷键跳转到函数定义处.可现在在Linux上 ...
- sublime3 ctl+b无效
Preference->Browse Packages->python,编辑Python.sublime-build文件,在字典里添加path item,value为你的python路径, ...
- javascript两种定时器的使用及其清除
<!--示例代码如下:--><!DOCTYPE html> <html> <body> <p>A script on this page s ...
- U盘装系统系列二—-如何设置U盘启动
老毛桃U盘启动制作好之后,如何设置U盘启动呢?我的是华硕的电脑,开机后按F2进入BIOS设置(不同主板可能不一样,比如有的是按向下键或者Del键,可以在网上查下看看),按Tab键选中Boot:按向下键 ...