首页 > 编程语言 >IOS之【ios程序的生命周期】

IOS之【ios程序的生命周期】

时间:2022-12-09 15:01:51浏览次数:41  
标签:控制器 生命周期 ios self IOS 调用 animated void view

文件

#import “OneAppDelegate.h"
#import “OneViewController.h"
@implementation

- (void)dealloc
{
_windowrelease];
[_viewControllerrelease];
superdealloc];
}

#pragma mark 在应用程序启动完毕的时候调用
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary
{
//在这里隐藏状态栏,会让程序全屏显示
// application.statusBarHidden = YES;

// 初始化一个窗口
self.window = [[[UIWindowalloc] initWithFrame:[[UIScreenmainScreen] bounds]]autorelease];

//初始化一个控制器
// OneViewController.xib
// bundle:可以理解为是文件夹,传入nil代表着项目文件夹
// 如果nibName为nil,默认会去加载与控制器同名的xib文件
// self.viewController = [[[OneViewController alloc] initWithNibName:@“OneViewController123" bundle:nil] autorelease];

//调用init方法创建控制器的时候,它会默认加载与控制器同名的xib文件
//如果找不到对应的xib文件,就会默认创建一个空的UIView,默认背景颜色是黑色
//实际上,创建好控制器之后,并不会去马上初始化内部的view
//因为控制器内部的view是延迟加载的,用到时再加载
self.viewController = [[[OneViewControlleralloc] init] autorelease];

//只要你访问了控制器的view,才会开始创建它内部的view
//所以下面这句代码会导致初始化控制器的view,而且创建完毕后会调用控制器的viewDidLoad方法
//UIView *view = self.viewController.view;

//设置窗口的根控制器
self.window.rootViewController =self.viewController;
//最好设置窗口的根控制器,不要直接添加控制器的view到窗口中
//因为控制器还要接收一些窗口传递过来的系统事件,比如屏幕旋转
// [self.window addSubview:self.viewController.view];

// 让window显示出来,并且成为主窗口
// 窗口显示出来后就会将根控制器的View到UIWindow中
[self.windowmakeKeyAndVisible];
return YES;
}



文件

#import “OneViewController.h"

@interface OneViewController ()

@end

@implementation

- (void)click {
UIApplication *app = [UIApplicationsharedApplication];
//设置应用程序图标上的红色数字
app.applicationIconBadgeNumber =5;

// 隐藏状态栏
// app.statusBarHidden = YES;

// 显示联网状态
//如果已经显示,就隐藏;如果已经隐藏,就显示
//这里只是显示一个状态而已,并没有表示我们的程序真的在联网
app.networkActivityIndicatorVisible = !app.isNetworkActivityIndicatorVisible;
}

这个方法是用来加载内部的view
// 父类的loadView内部是这样实现的:如果有跟控制器相关联的xib文件,就会通过xib文件创建内部的view,如果没有,就会创建一个空白的view(默认背景颜色是黑色)
// 苹果设计这个方法的目的就是给我们自定义控制器内部的view
// 如果我们需要自定义控制器的view,就不需要调用父类的loadView方法
- (void)loadView {
// [super loadView];

// iPhone坐标系是320 x 480(点坐标系)

// 获取屏幕的尺寸
CGRect bounds = [UIScreenmainScreen].bounds;
// 屏幕的宽度
CGFloat width = bounds.size.width;
// 屏幕的高度
CGFloat height = bounds.size.height;
// CGRect frame = CGRectMake(0, 20, width, height - 20);

// applicationFrame就是控制器内部view默认的frame
// {x=0, y=20, width=320, height=460}
CGRect frame = [UIScreenmainScreen].applicationFrame;
NSLog(@"%@",NSStringFromCGRect(frame));

// 通过代码初始化我们的view
self.view = [[[UIViewalloc] initWithFrame:frame]autorelease];

// 设置view的背景颜色为红色
self.view.backgroundColor = [UIColorredColor];
}

当内部的view加载完毕之后就会调用
// 一般会在这里添加一些子视图、渲染数据
// 无论是通过xib还是代码创建view,总之view创建完毕后就会调用这个方法
- (void)viewDidLoad
{
[superviewDidLoad];

NSLog(@"viewDidLoad,view被加载完毕");
}

#pragma mark 当内部的view因为内存警告而被系统自动回收的时候调用
- (void)viewDidUnload {
[superviewDidUnload];
}

#pragma mark 当内部的view被添加到视图层次结构(也就是被添加到窗口中时)中就会调用
// 如果是重写生命周期方法,一定要调用回父类的方法
- (void)viewDidAppear:(BOOL)animated {
superviewDidAppear:animated];
NSLog(@"viewDidAppear,控制器的view被添加到屏幕");
}

#pragma mark 当内部的view从视图层次结构(也就是从窗口中移除时)中移除就会调用
- (void)viewDidDisappear:(BOOL)animated {
superviewDidDisappear:animated];
}

当内部的view即将被添加到屏幕的时候调用
- (void)viewWillAppear:(BOOL)animated {
superviewWillAppear:animated];
NSLog(@"viewWillAppear,view即将被添加到窗口中");
}

当内部的view即将从屏幕中移除的时候调用
- (void)viewWillDisappear:(BOOL)animated {
superviewWillDisappear:animated];
}

接收到内存警告
- (void)didReceiveMemoryWarning
{
[superdidReceiveMemoryWarning];
//一般会在这里回收内存
}

@end

标签:控制器,生命周期,ios,self,IOS,调用,animated,void,view
From: https://blog.51cto.com/u_15907570/5925321

相关文章

  • IOS之【UIToolbar】
    #import"OneViewController.h"@interfaceOneViewController()@end@implementation-(void)add{NSLog(@"添加");}-(void)delete{NSLog(@"删除");}-(void)view......
  • IOS之【属性列表】
    @implementation-(void)viewDidLoad{[superviewDidLoad];[selfwritePerson];}尝试写Person//不能通过writeToFile将一个普通对象写入文件中//writeToFi......
  • IOS之【NSUserDefaults】
    @implementation-(void)viewDidLoad{[superviewDidLoad];selfread];}读取偏好设置-(void)read{NSUserDefaults*defaults=[NSUserDefaultsstandardUserDefa......
  • 使用VMware时Intel VT-x禁用的问题,顺便检查Win10使用命令行进入BIOS方式
     如图所示:此主机支持IntelVT-x,但IntelVT-x处于禁用状态。如果已在BIOS/固件设置中禁用IntelVT-x,或主机自更改此设置后从未重新启动,则IntelVT-x可能被禁用......
  • iOS开发_取出UIColor上对应rgba的值
    UIColor+Extension.h#import<UIKit/UIKit.h>NS_ASSUME_NONNULL_BEGIN@interfaceUIColor(Extension)@property(nonatomic,assign,readonly)CGFloatred;@......
  • iOS开发_修改颜色Color
    UIColor+Modify.h#import<UIKit/UIKit.h>@interfaceUIColor(Modify)/***@brief反转颜色**@return反转处理后的颜色*/-(UIColor*)inverted;/*......
  • iOS开发_颜色转十六进制字符串
    /***@briefUIColor转#ffffff格式的16进制字符串**@return格式为#ff0000的16进制字符串*/-(NSString*)hex_String{constCGFloat*components=C......
  • 实现在windows、linux下上传ios app到App Store​
     我们知道发布一个app,一般是用到苹果的applicationloader助手上传应用,用过的都知道使用起来很繁琐,经常出错。而且只能运行在mac系统上,需要一定的硬件条件。​  前......
  • js axios配置和响应
     配置<scriptsrc="../node_modules/axios/dist/axios.js"></script><script>//配置constinstance=axios.create({//设置根路径......
  • iOS现有APP上架流程​
     一.登录AppStoreConnect​1.登录AppStoreConnect(apple.com)账号密码登录​ 2.点击“我的App”-->”选中升级的APP”-->创建新的APP版本号​ 输入版本的......