从Android到IOS,IOS应用生命周期函数

由于对于自己的C基础还算满意,花了一个月断断续续的把OC看完了,最近在看一些IOS开发的知识。初次创建一个IOS项目,xCode会自动生成这些文件与目录

从头开始,应用首次执行会先从main函数开始执行。

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

看到源码中UIApplicationMain()方法的注释:

// If nil is specified for principalClassName, the value for NSPrincipalClass from the Info.plist is used. If there is no
// NSPrincipalClass key specified, the UIApplication class is used. The delegate class will be instantiated using init.
UIKIT_EXTERN int UIApplicationMain(int argc, char *argv[], NSString *principalClassName, NSString *delegateClassName);

如果第三个参数为nil,则表示从info.plist中读取。大家可以把info.plist理解为Android中的Manifest文件,用于让编译器知道本应用的一些基本信息。

第四个参数是应用的托管类类名,这里大家可以先把托管类理解为一个Activity.class。

在Android中的Application类,通过Application去回调Activity各个生命周期函数。IOS也一样,首先UIApplicationMain()方法根据我们提供的AppDelegate类名称来创建并初始化UIApplication的一个实例,并将AppDelegate作为UIApplication的委托,并调用AppDelegate中各生命周期方法。



就如同Android中Application类中拥有一个包含Activity各生命周期函数的接口一样(具体请查看Application类中的声明:interface ActivityLifecycleCallbacks
这里就不多做解释了)我们通过查看UIApplication类也可以发现一个类似的协议。篇幅有限,这里只列出AppDeletegate类中显式列出的六个方法

@protocol UIApplicationDelegate<NSObject>

@optional
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions NS_AVAILABLE_IOS(3_0);
- (void)applicationDidBecomeActive:(UIApplication *)application;
- (void)applicationWillResignActive:(UIApplication *)application;
- (void)applicationWillTerminate:(UIApplication *)application;
- (void)applicationDidEnterBackground:(UIApplication *)application NS_AVAILABLE_IOS(4_0);
- (void)applicationWillEnterForeground:(UIApplication *)application NS_AVAILABLE_IOS(4_0);

那么这六个方法也就是IOS应用中的六个生命周期方法。具体验证规则也就不多说了,大家自己打个log看看在应用各状态时的回调就行了。其实从名字也就基本可以理解个大概了。参照Activity生命周期几个方法回调的图示,我也自己总结了AppDelegate的几个方法回调图示算是一种笔记吧。

ViewController,这个类我的理解就是用于做一些View定义以及初始化相关的操作。类似于Android中一个Activity的DecorView(如果你要问DecorView是什么。。。就当成是setContentView中传进去的View吧)。

在Android中每一个应用可以有多个Window对象,因为每个Activity都有一个Window,而在IOS中,只有一个Window(至少目前我我的水平只知道一个),那么跳转界面的实现实际上就是切换这个ViewController来实现的。就好像Activity中切换Fragment来实现页面跳转一样。



再接下来讲storyboard,这个实际上就是一个用于拖控件去实现布局的文件。不过与Android中的layout.xml不同,Android中总共有三种方法去创建布局,第一种就是纯拖控件,第二种是手动写xml代码,第三种是手动写java代码,这里我就不多说了。在IOS中只有两种选择,纯拖控件,手动写OC代码。是的,拖控件的那个storyboard文件你不能用代码去编辑它(或者说我还不会编辑它)。所以现在引起了很多争议,有些人说为了维护方便应该提倡用代码布局,有些人说根据发展趋势,更应该去使用拖控件的方式。作为一个从Android转过来的开发者,我建议你去用代码实现,一来与Android中一样,写代码布局能让你更方便的理解控件在界面上的绘制过程,另一方面作为一个新手,多熟悉一下代码也是好事吧。

再往下,有一个IOS3Test文件夹,书本上说是用来写单元测试的,所以目前不需要过多考虑。

再往下,product文件夹,相当于Android中的bin目录,其中用来存放编译后的文件的。

时间: 2024-08-27 20:56:17

从Android到IOS,IOS应用生命周期函数的相关文章

ios应用的生命周期

在开发过程中我们需要一些全局对象来将程序的各个部分连接起来,这些全局对象中最重要的就是UIApplication对象.但在实际编程中我们并不直接和UIApplication对象打交道,而是和其代理打交道. UIApplication 是iPhone应用程序的开始并且负责初始化并显示UIWindow,并负责加载应用程序的第一个UIView到UIWindow窗体中. UIApplication的另一个任务是帮助管理应用程序的生命周期,而UIApplication通过一个名字为 UIApplicati

Android与Swift iOS开发:语言与框架对比

Swift是现在Apple主推的语言,2014年新推出的语言,比Scala等“新”语言还要年轻10岁.2015年秋已经开源.目前在linux上可用,最近已经支持Android NDK:在树莓派上有SwiftyGPIO库,可以通过GPIO控制一些硬件. Object C is old and ugly,oc是1983年苹果推出的,过于陈旧和臃肿. Swift语法类似Scala,Javascript ES6, Java,OC, C++, Python 这是tiobe发布的编程语言排行 Swift支持

IOS应用程序生命周期的AppDelegate详解

IOS 中的 AppDelegate.m/h 文件是很重要的呢,因为它是对 Application 的整个生命周期进行管理的. 先明白,每个iPhone应用程序都有一个UIApplication,UIApplication是iPhone应用程序的开始并且负责初始化并显 示 UIWindow,并负责加载应用程序的第一个UIView到UIWindow窗体中.UIApplication的另一个任务是帮助管理应用程序的 生命 周期,而UIApplication通过一个名字为UIApplicationDe

从Java/Android到Swift iOS开发:语言与框架对比

本文是我在『移动前线』微信群2016年4月28日的分享总结整理. 我从2009年开始做Android开发,开始接触Swift是在2014年底,当时组里曾经做过一个Demo App,感觉技术还不够成熟没有正式发布.2016年初我们正式使用swift开发上线了销售助手App产品,积累了比较丰富的swift项目实战经验,开源框架都是用的swift版本,大量使用了面向协议和函数式编程.iOS App开发人员基本都是以前安卓版本的开发人员,同时维护安卓和iOS 2个版本,效率很高. 今天分享的主题是Jav

IOS应用程序生命周期

1.应用程序状态 1.1.Not running-未运行 程序没有启动 1.2.Inactive-未激活 程序在前台运行,不过没有接受到事件,在没有事件处理下程序同城停留在这个状态 1.3.Active-激活 程序在前台运行并且接受到了事件,这也是前台的一个正常的模式 1.4.Background-后台 程序在后台而且能执行代码,大多数程序进入这个状态后会在这个状态停留一会,时间到了之后会进入挂起状态,有的程序经过特殊的请求后可以长期处于Background状态 1.5.Suspended-挂起

[转]iOS应用程序生命周期(前后台切换,应用的各种状态)详解

转载地址:http://blog.csdn.net/totogo2010/article/details/8048652 iOS的应用程序的生命周期,还有程序是运行在前台还是后台,应用程序各个状态的变换,这些对于开发者来说都是很重要的. iOS系统的资源是有限的,应用程序在前台和在后台的状态是不一样的.在后台时,程序会受到系统的很多限制,这样可以提高电池的使用和用户体验. //开发app,我们要遵循apple公司的一些指导原则,原则如下: 1.应用程序的状态 状态如下: Not running

iOS iOS应用程序生命周期(前后台切换,应用的各种状态)详解

iOS应用程序生命周期(前后台切换,应用的各种状态)详解 http://blog.csdn.net/totogo2010/article/details/8048652

iOS对UIViewController生命周期和属性方法的解析

目录[-] iOS对UIViewController生命周期和属性方法的解析 一.引言 二.UIViewController的生命周期 三.从storyBoard加载UIViewController实例的传值陷阱 四.UIViewController与StroyBoard的相关相互方法 1.ViewController直接在StoryBoard中进行跳转的传值 2.使用代码跳转Storyboard中的controller 五.UIViewController之间的一些从属关系 1.parentV

android系统和ios系统是如何实现推送的,ios为什么没有后台推送

ios系统为什么没有后台推送? iOS 为了真正地为用户体验负责,不允许应用在后台活动.有了这个限制,但是对于终端设备,应用又是有必要“通知”到达用户的,随时与用户主动沟通起来的(典型的如聊天应用). 这就是 APNs 的逻辑所在:iOS 自己做个长驻后台保持连接.所有应用,有必要(申请)并且被允许(用户可以改设置)的话,可以通过 APNs 中转到达用户.这样就完善了! 有可能很多人没有真正地体会到 iOS 不允许后台应用的好处.我是 Android 开发人员,Android 手机上一般只保留几