iOS-ui-application_run_based_view

原创 2015年07月07日 17:22:01
本质
程序运行时的交互。
结构
设置为代理并实现特定协议。


// 新版xcode自动创建的工作,传入AppDelegate给sdk内核。
#import "AppDelegate.h"


int main(int argc, char * argv[]) {
    @autoreleasepool {
        return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
    }
}


推导发散
点击运行一个应用时,系统的启动代码会执行main函数,然后执行UIApplicationMain函数。UIApplicationMain里面会提供机会,与用户的代码进行交互。这个机会就是回调,就是委托函数,比如:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
应用程序最初要做的东西就放在这个函数里面。
回调函数(委托)就像一个篮子,是系统提供的,你只需要往里面放苹果,系统就可以吃到。你需要做两件事:一是认得这个篮子,二是实现这个篮子。
这就是模块交互的一个实用模式:我提供一个协议,协议里面有很多函数,我在必要时执行这些函数;你作为委托并实现这个协议,并让我知道(我只需要记录这一类的对象就可以了,不需要知道具体是什么对象),这样执行就可以从我的代码跳到你的代码。
对于应用来说,可以在这个函数里面显示你的启动界面、显示你的主界面。


ios4.0里面的应用都是单任务,一个应用一切换到后台(按一下home键)就退出。但ios4.0以后,都是可以在后台运行的,这时切换到后台时会执行一个回调(就算是ios4.0也会在切换至后台时执行这个函数):
- (void)applicationDidEnterBackground:(UIApplication *)application 
在这个交互里面可以做很多事情,比如你可能要做好退出的准备了(比如统计),因为退出程序时是没有通知的,而退出程序的操作是要先切换到后台的。就算是关机也是先切换到后台的。
比如你可能在后台时不需要一个不断执行的界面操作以降低cpu的占用,就可以在这个回调里面停止了。


当重新切换至界面时,执行回调:
- (void)applicationWillEnterForeground:(UIApplication *)application


以上描述说到了系统与应用间的交互,关键是委托的出现。那么这个委托是在什么时候生成的?它是怎么关联到AppDelegate的?


对于基于view的应用程序(在创建工程时可以选择此类),它的主xib叫MainWindow.xib,这个名字在plist里面可以看到。程序在启动时,会加载这个xib,然后创建xib里面指定的实例。MainWindow.xib里面指定的实例是什么看xib就知道:
五个图标,从上往下,File’s Owner、First Responder、uiTest2AppDelegate、uiTest2ViewController、Window,后面三个就是指定的实例,一个是委托,一个是viewController,一个是window。如果你在uiTest2ViewController的viewDidLoad里面下断点,就可以看得出,这个viewController先给创建,然后才有application ::didFinishLaunchingWithOptions的交互。


所以故事的过程是这样的:
sdk启动程序,加载MainWindow.xib,创建应用委托并设置给自己、创建window与view(controller),完成相关交互。然后,view覆盖在window的上面显示出来(或者被改头换面)。
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

我的iphone开发学习笔记(一)创建view_based_application

对于刚刚开始学习的同学,跟着练习是最好的学习方法。一次编码胜过通读全书。 一。打开xcode, 选择创建view_based_application, 输入项目名称HelloNum 二。 在Hel...

iOS 7应用开发公开课笔记 L14:UI Application, Network Activity

1. 资料:代码片段、table view 导航通用代码 二、Core Location 1.定位经度越高,越耗电,选择能工作的最小精度。GPS→wifi→... 2.定位:CLLocation...

iOS开发UI篇—控制器的View的创建

iOS开发UI篇—控制器的View的创建 一、6种创建控制器View的方式 1 #import "NJAppDelegate.h" 2 #import "NJViewControlle...

IOS8 UI: 由 self.view = nil 引起的思考

首先声明我使用了 ARC, 使用 OC 编码. 有2个 ViewController, 暂且称之为 AController 和 BController. 从 AController切换到(push...

iOS开发UI高级—10使用picker View控件完成一个简单的选餐应用

iOS开发UI篇—使用picker View控件完成一个简单的选餐应用 iOS开发UI篇—使用picker View控件完成一个简单的选餐应用 一、实现效果   说明:点击随机按钮,能够自动选取,下...

iOS开发UI篇—控制器的View的创建

iOS开发UI篇—控制器的View的创建  iOS开发UI篇—控制器的View的创建 一、6种创建控制器View的方式 1 #import "NJAppDelegate....

iOS开发UI高级—09控制器的View的创建

iOS开发UI篇—控制器的View的创建 一、6种创建控制器View的方式 1 #import "NJAppDelegate.h" 2 #import "NJViewController.h"...

IOS 开发-UI初级 (二 · 后续)View,ViewController实践和应用

上篇博客说到了ViewController和几个控件(UITextView ,UIImageView),接下来就用它们做出个稍微好看一点的界面吧! 最终效果如下图: 如图,屏幕上排列了一些《星...

IOS开发UI篇--使用CAShapeLayer实现复杂的View的遮罩效果

一、案例演示最近在整理一个聊天的项目的时候,发送图片的时候,会有一个三角的指向效果,指向这张图片的发送者。服务端返回给我们的图片只是一张矩形的图片,我们如何把一张矩形的图片或者View,加上一层自定义...

IOS 开发-UI初级 (二)视图和视图控制器(View,Viewcontroller)

- (二)视图和视图控制器1,界面之间的切换IOS应用是由一个一个的视图控制器(ViewController)组成的,感觉和Android的Activity差不多。 新建工程时已经默认创建了一个视图...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)