ios vs android 对比性学习
1.ios中的UITableViewController类似Android的ListActivity,ios使用了MVC的模式,采用Controller对View操作。
2.Activity是Android最基本的可视单元,就像UIViewControllers是IOS最基本的显示组件一样.
3.android系统使用一个Activity栈来管理Activity,而ios使用UINavigationController进行管理
4.android启动一个新的Activity类似于ios上创建一个UIViewController
5.在程序全局类的层面,两者都是单例对象,对比:
Android(Application类)----------->iOS(UIApplication类的代理UIApplicationDelegate)
onCreate----------->didFinishLaunchingWithOptions :程序成功启动后调用,而且只会调用一次
onStart----------->applicationWillEnterForeground:程序进入前台
onResume----------->applicationDidBecomeActive:程序获取到焦点,可以接收触摸点击等
onPause----------->applicationWillResignActive:程序失去焦点,不可以接收触摸点击等
onStop----------->applicationDidEnterBackground:程序进入后台
onDesroy----------->applicationWillTerminate:这里android已经销毁了,但iOS如果还需要在后头运行,就会触发这个方法
6.在具体视图层面:UIViewController生命周期和 Activity生命周期对比
Android(Activity)------------->Ios(UIViewController)
onCreate----------------------->1.alloc:创建对象,分配空间
onCreate----------------------->2.init(initWithNibName) 初始化对象,初始化数据
onCreate--------------------------->3.loadView:从nib载入视图 ,通常这一步不需要去干涉,除非你没有使用xib文件创建视图.
onResume---------------------->1.viewDidLoad: 载入完成,可以进行自定义数据以及动态创建其他控件
onResume---------------------->2.viewWillAppear:视图将出现在屏幕之前,马上这个视图就会被展现在屏幕上了
onResume---------------------->3.viewDidAppear:视图已在屏幕上渲染完成
onPause---------------------->viewWillDisappear:视图将被从屏幕上移除之前执行
onStop----------------------->viewDidDisappear:视图已经被从屏幕上移除,用户看不到这个视图了
onDesroy--------------------->dealloc:视图被销毁,此处需要对你在init和viewDidLoad中创建的对象进行释放
viewDidUnload :在发生内存警告的时候如果本视图不是当前屏幕上正在显示的视图的话, viewDidUnload将会被执行,本视图的所有子视图将被销毁,以释放内存,此时开发者需要手动对viewLoad、viewDidLoad中创建的对象释放内存。 因为当这个视图再次显示在屏幕上的时候,viewLoad、viewDidLoad再次被调用,以便再次构造视图。
7.关于全局的application/UIApplication类的自定义行为,两者也有相似的思路:
android的自定义application类必须声明在manifest.xml的application节点下的name标签中
而iOS中,自定义的UIApplication类必须在入口函数main.m的UIApplicationMain方法中,作为第三个参数出入这个对象
8.android 的manifest.xml 配置文件和IOS的Info.plist配置文件
两者都是可以定义程序名称等参数的地方,不同的是,当改动Info.plist的Bundle name值去改变程序名后,必须点xcode的product-clean一下
修改其他值也一样,资源文件修改后必须clean一下才生效。
其他参数比如:程序版本号等,也在这里定义,不同的是ios程序的唯一标识不是包名而是identifler
9.UIViewController中,视图是延迟加载的,只有在view被使用到时,才会启动加载,也就是必须是用户触发,系统不自动加载view
更多相关文章
- Android摄像头--通过Intent启动
- Android(安卓)与 MVC
- Android中对Handle机制的理解
- Android(安卓)Pull解析
- Android(安卓)Intent传递对象
- Android(安卓)Audio System 之二:AudioFlinger
- android中获得屏幕、视图、任务栏、状态栏的高宽以及屏幕的设置
- Android(安卓)JNI cpp文件创建 java bean 对象并返回
- 【Android(安卓)初学】2、View初步