UIViewController  
ApplicationSequence UI-03
注意: NSLog(@"%s %d",__FUNCTION__,__LINE__);
//打印程序方法的执行过程,
   
//__FUNCTION__,执行的方法名;__LINE__
显示的NSlLoge方法在哪一行
1、UIApplication
应用程序类型,一个程序只需要一个UIApplication对象,一个工程只能制作一个应用程序
//应用程序正在进行加载的时候调用此方法,此方法的重要的作用,创建window对象,并将window设置主窗口且使其可见
//所以当你要在应用程序上显示其他的内容要把添加到此方法中
#pragma mark
应用程序开始加载状态
-
(BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window.backgroundColor = [UIColor whiteColor];

   
[self.window makeKeyAndVisible];
   
return
YES;
}
2、 #pragma
mark  应用程序将要取消活跃状态
//触发的因素:来电、短信,退出应用程序,手动进入后台

//可以使用此方法暂停正在运行的任务,或者是让定时器暂停,或者暂停游戏
-
(void)applicationWillResignActive:(UIApplication
*)application {
NSLog(@"%s %d",__FUNCTION__,__LINE__);  
 
}
3、 #pragma
mark  程序已经进入后台
//用这个方法可以用来释放共享资源,存储用户信息,使定时器无效,存储用户当前状态下的信息,已备下次恢复;

//如果你的应用程序支持后台运行,当用户退出的时候,这个方法将被替代applicationWillTerminate:
-
(void)applicationDidEnterBackground:(UIApplication
*)application
{}
4、 #pragma
mark 应用程序即将进入前台
//唤醒进入后台时的任务
-
(void)applicationWillEnterForeground:(UIApplication
*)application {}
5、 #pragma
mark 应用程序已经处于活跃状态,应用程序已经在屏幕上运行了
//重启应用程序中没开启的任务或者程序程序进入后台时被暂停的任务开启,如果应用程序之前不再后台 
也可以刷新一下用户界面(如网易新闻第二天打开不是第一天的新闻,已被刷新)
-
(void)applicationDidBecomeActive:(UIApplication
*)application {}
7、重点概念
main.m
 程序的入口
#import
#import "AppDelegate.h"
int main(int argc, char * argv[])
{
   
@autoreleasepool
{
       
//UIApplicationMain(),此函数的三大功能
        
(面试必考题)

        
1.创建应用程序对象,每一个应用程序都是一个应用程序对象

        
2.创建事件死循环(runloop,死循环)用于及时处理用户的操作,时时刻刻检测屏幕上有没有用户交互事件,一旦用户进行了交互,立即对用户操作做出操作

3.设置应用程序的代理对象,用来检测应用程序运行状态

        
[A class] 
如果类A调用Class方法,则返回类A
       
return UIApplicationMain(argc,
argv, nil, NSStringFromClass([AppDelegate
class]));
   
}}
————————————————————————————————————————
8、UIViewController 
继承自UIResponder
,是一个专门用来管理视图的一个类,只能用来管理单视图,是一个单是图控制器
   
//概念误区:视图管理器不是一个视图,是用来管理视图的,而且视图控制器自带一个管理视图的根视图
   
//UIViewController 主要作用:1.管理视图 2.响应事件 3.分担Appdelegate 的工作
     
     
     
     
     
     
    
4.可以实现MVC模式
 
 
——————————————————————————————
例子:
 
 //创建自定义视图控制器对象
   
RootViewController
*rootVC =
[[RootViewController
alloc]init];
   
//将rootVC制定window的根视图
   
self.window.rootViewController
= rootVC;
新建一个根管理器的子视图控制器来重写方法
RootViewController.h
 将其头文件引入AppDelegate.m文件
RootViewController.m
下面是几种方法实现:
//视图控制器的指定初始化方法,就是无论你调用哪个初始化方法初始化一个视图控制器对象,都会走的那个方法就叫做指定初始化方法
-(instancetype)initWithNibName:(NSString
*)nibNameOrNil
bundle:(NSBundle
*)nibBundleOrNil{
   
if
(self
=
[super
initWithNibName:nibNameOrNil
bundle:nibBundleOrNil])
{
   
}

   
return
self;
}
——————————————————————————————
1、加载发根视图的触发的方法
//如果要是重写了loadView方法,第一种必须是实现[super
loadView]
//第二种自定义个视图赋值给视图控制器自身所带的视图View

- (void)loadView{

//   
[super
loadView];//父类对该方法的实现是加载一个UIView对象,视图控制器自身所带的View就是由此方法创建出来的

//自定义视图控制器自身所带的视图View

UIView
*newview =
[[UIView
alloc]initWithFrame:[UIScreen
mainScreen].bounds];

self.view
=
newview;

   
[newview release];
}
——————————————————————————————————
2、当发现View自身所带View为nil会再去调用loadView,直到发现view不再为nil就不再调用loadView方法

//当视图控制器自带的View加载完成时触发

- (void)viewDidLoad
{

   
[super
viewDidLoad];
   
//使用self.View访问自定义视图所带的View

self.view.backgroundColor
=
[UIColor
greenColor];

//想添加的视图写在这个方法中

UIView
*view =
[[UIView
alloc]initWithFrame:CGRectMake(100,
100,
100,
100)];

view.backgroundColor
=
[UIColor
redColor];

[self.view
addSubview:view];

   
[view release];
}
———————————————————————————————
3、当内存出现警告时自动调用此方法
//在这方法中需要释放掉暂时不适用的资源
   
调试是否执行此方法:
 -
(void)didReceiveMemoryWarning
{
   
[super
didReceiveMemoryWarning];
   
NSLog(@"警告啦,警告啦,你TM的警告了!");

//[self
isViewLoaded] 用来判断视图控制器自带的view是否已经加载

   
//
self.view.window 
查看根视图有没有在window上显示

   
if
([self
isViewLoaded]
&& !self.view.window
)
{

       
//安全的将根视图删除

       
self.view
=
nil; 
   
}
}
———————————————————————————————————
4、当设备发生旋转时,当前界面不发生变化,就意味着不支持旋转
-
(BOOL)shouldAutorotate{

return
YES;

}
//设置界面设置的旋转方向

-(NSUInteger)supportedInterfaceOrientations{
   
return   
UIInterfaceOrientationMaskAll;//三种旋转方式
}

//当旋转屏幕的时候触发,ios8之后才有效

//-
(void)viewWillTransitionToSize:(CGSize)size
withTransitionCoordinator:(id)coordinator{
//   
//size将要旋转到的屏幕的尺寸
//   
NSLog(@"%@",NSStringFromCGSize(size));
   
if (size.width < size.height) {
       
//把竖屏下的坐标赋值给空间
   
}else{

       
//把横屏下的坐标赋值给空间
}}
——————————————————————————————————————————
欢迎学习本文,未经博主允许,禁止转载!

UIViewController/ApplicationSequ…的更多相关文章

  1. UIViewController生命周期-完整版

    一.UIViewController 的生命周期 下面带 (NSObject)的方法是NSObject提供的方法.其他的都是UIViewController 提供的方法. load   (NSObje ...

  2. 拦截UIViewController的popViewController事件

    实现拦截UIViewController的pop操作有两种方式: 自定义实现返回按钮,即设置UIBarButtonItem来实现自定义的返回操作. 创建UINavigatonController的Ca ...

  3. iOS: 在UIViewController 中添加Static UITableView

    如果你直接在 UIViewController 中加入一个 UITableView 并将其 Content 属性设置为 Static Cells,此时 Xcode 会报错: Static table ...

  4. 8. UIViewController

    1. UIViewController 的认识 UIViewController在iOS开发中占据很重要的位置,iOS的整个UI开发的核心思想也是MVC的架构,从UIViewController的命名 ...

  5. 从一个控制器调到另一个控制器的[UIViewController _loadViewFromNibNamed:bundle:]崩溃

    一,现象和分析: 1.崩溃的主要地方是[UIViewController _loadViewFromNibNamed:bundle:] ,是从 A 控制器 push 到 B 控制器后, B 控制器的v ...

  6. UIViewController相关知识

    title: UIViewController 相关知识date: 2015-12-13 11:50categories: IOS tags: UIViewController 小小程序猿我的博客:h ...

  7. [IOS基础]关于IOS的UIScreeen,UIView,UIViewController,UIWindow理解

    UIScreen: 代表当前这个屏幕,通过UIApplication可以获得这个属性 UIView:   一个矩形试图,包含用户手势和时间响应 UIViewController: 一个UIView的集 ...

  8. info.plist、pch和四大对象(UIApplication、UIApplicationDelegate、UIWindow、UIViewController)

    本文目录 1.程序配置文件info.plist,全局头文件pch 2.应用程序对象UIApplication介绍 3.UIApplicationDelegate介绍,程序启动过程 4.UIWindow ...

  9. 3.UIViewController详解

     一. UIViewController,视图控制器,它是UIKit中非常重要的组成部分.它由控制器+View两部分组成. 控制器功能: ->实现代码逻辑,决定它自带的View的界面显示. -& ...

随机推荐

  1. ACM Wooden Stricks

    有一堆n根木棍.每根棍子的长度和重量是预先知道的. 这些棒子将被木工机器逐一加工..它需要一些时间,称为安装时间,用于机器准备加工棒.设置时间与机器中的清洁操作和更换工具和形状相关联.木工机械的安装时 ...

  2. Android 多窗口详解

    多窗口支持 Android N 添加了对同时显示多个应用窗口的支持. 在手持设备上,两个应用可以在"分屏"模式中左右并排或上下并排显示. 在电视设备上,应用可以使用"画中 ...

  3. Hadoop的RPC通信原理

    RPC调用: RPC(remote procedure call)远程过程调用: 不同java进程间的对象方法的调用. 一方称作服务端(server),一方称为客户端(client): server端 ...

  4. Java异常处理-----程序中的异常处理.启蒙

    1.当除数是非0,除法运算完毕,程序继续执行. 2.当除数是0,程序发生异常,并且除法运算之后的代码停止运行.因为程序发生异常需要进行处理. class Demo { public static vo ...

  5. Android Multimedia框架总结(十三)CodeC部分之OpenMAX框架初识及接口与适配层实现

    转载请把头部出处链接和尾部二维码一起转载,本文出自逆流的鱼yuiop:http://blog.csdn.net/hejjunlin/article/details/52629598 前言:上篇中介绍O ...

  6. Android时遇到R.java was modified manually! Reverting to generated version!

    欢迎关注公众号,每天推送Android技术文章,二维码如下:(可扫描) 进入 eclipse后clipse Menu >Projects > clean 这么做就把R文件删了,但是别担心, ...

  7. SSH架构实现在线支付功能

    在线支付是指卖方与卖方通过因特网上的电子商务网站进行交易时,银行为其提供网上资金结算服务的一种业务,她为企业和个人提供了一个安全.快捷.方便的电子商务应用环境和网上资金结算工具,在线支付不仅帮助企业实 ...

  8. C/C++的mem函数和strcpy函数的区别和应用

    mem系列函数是面试的时候常考的知识点,我们需要熟练掌握这三个函数的原理和代码实现,要能准确无误的写出代码. memcpy.memset和memset三个函数在使用过程中,均需包含以下头文件: //在 ...

  9. 即时通讯软件openfire+spark+smack

    所以我基本上分为三篇文章来介绍此类软件的开发: 第一篇是关于XMPP 协议是啥,IM 是啥以及一个比较有名的开源实现,该开源实现包括三个部分(Spark.Smack和Openfire): 第二篇讲如何 ...

  10. Android开发学习之路--RxAndroid之简单原理

      学习了RxAndroid,其实也就是RxJava了,但是还是不是非常清楚到底RxAndroid有什么用呢?为什么要使用RxAndroid呢?这篇文章讲得不错,RxJava的原理.但是这里还是把整个 ...