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学习——XCode 4.3.2 如何新建 Window-based Application应用的简单例子

XCode 4 以后,项目模版中没有了 Window-based Application,跟它比较接近的项目模版是 Empty Application. 如下图的选择: 我们想建一个 Win...

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

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

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

- (二)视图和视图控制器1,界面之间的切换IOS应用是由一个一个的视图控制器(ViewController)组成的,感觉和Android的Activity差不多。 新建工程时已经默认创建了一个视图...

IOS界面UI设计7之UIWindown、多种方式创建视图控制器、View

(1)UIWindown的创建     // 1.创建窗口     self.window = [[UIWindow alloc] init];     self.window....

【Facebook的UI开发框架React入门之五】视图View与文本Text简介(iOS平台)-goodmao

React.native是facebook开源的一套基于JavaScript的开源框架, 很方便用来开发移动设备的app。 而且,方便及时更新app的UI与数据,也很方便部署。 goodmao希望帮助...

【Facebook的UI开发框架React入门之七】多View布局与样式Style简介(iOS平台)-goodmao

React.native是facebook开源的一套基于JavaScript的开源框架, 很方便用来开发移动设备的app。 而且,方便及时更新app的UI与数据,也很方便部署。 goodmao希望帮助...

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

一、6种创建控制器View的方式 1 #import "NJAppDelegate.h" 2 #import "NJViewController.h" 3 /* 4 1.没有同名x...

【Facebook的UI开发框架React入门之六】单个View的布局与样式Style简介(iOS平台)-goodmao

React.native是facebook开源的一套基于JavaScript的开源框架, 很方便用来开发移动设备的app。 而且,方便及时更新app的UI与数据,也很方便部署。 goodmao希望帮助...

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

一、案例演示最近在整理一个聊天的项目的时候,发送图片的时候,会有一个三角的指向效果,指向这张图片的发送者。服务端返回给我们的图片只是一张矩形的图片,我们如何把一张矩形的图片或者View,加上一层自定义...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:iOS-ui-application_run_based_view
举报原因:
原因补充:

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