【iOS-Android开发对比】 之 APP入口

本文对比分析了iOS和Android应用的入口、生命周期、界面跳转、类代码结构以及强弱引用等方面。iOS的程序入口是main函数,Android则没有明显的main方法,程序入口在于AndroidManifest.xml中的 Launcher Activity。同时,探讨了两者的生命周期,如Activity与UIViewController的对比,以及两种平台在界面跳转、数据传递和引用类型上的差异。
摘要由CSDN通过智能技术生成

【iOS-Android开发对比】之 APP入口

这里写图片描述

image

[图片 Android vs iOS]

提纲

  1. 对比分析iOS,Android的入口,

  2. iOS,Android的界面单元

  3. 为什么要有那样的生命周期

  4. 继承和抽象类怎么写,例如工厂模式

  5. 对象的强弱,iOS的特色

程序入口 (Entry Point)



#首先来看iOS应用的入口:

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

和所有C程序一样,main函数是Objective-C程序的入口。虽然这个main方法返回 int,但它并不会真正返回。它会一直存在于内存中,直到用户或者系统将其强制终止.

上面的UIApplicationMain其来自 UIKit,是一个非常重要的函数。

说一下参数,前两个参数大家都懂。

第三个参数,是UIApplication类名或者是其子类名,如果是nil,则默认使用UIApplication类名。

第四个参数,是AppDelegate类作为应用的委托对象,用来监听应用生命周期相关的委托方法。

这个UIApplication的核心作用是提供了iOS程序运行期间的控制和协作工作。它创建了App的几个核心对象如: UIApplicationDelegate UIWindow, UIView,来处理一下过程:

  1. 程序入口main函数创建UIApplication实例和UIApplication代理实例。

  2. 从可用Storyboard文件加载用户界面

  3. 调用AppDelegate自定义代码来做一些初始化设置

  4. 将app放入Main Run Loop环境中来响应和处理与用户交互产生的事件

这个UIApplication对象在启动时就设置 Main Run Loop,并且使用它来处理事件和更新基于view的界面, Main Run Loop就是应用程序的主线程。

[图片 iOS, swift, Android举牌]



说说Swift的入口:

在Swift语言当中,编译器不会再去寻找 main 函数作为程序的入口,而是一个main.swift文件.
该文件中的第一行代码就默认为是程序的入口, 可以添加如下代码:

UIApplicationMain(C_ARGC, C_ARGV, nil, 
    NSStringFromClass(AppDelegate))

没错,就是之前提到的UIApplicationMain。这里 C_ARGC, C_ARGV 全局变量 就是main函数中的
argc, argv。

另外,可以在Swift文件中添加 @UIApplicationMain 标签注明项目入口。这样做会让编译器忽略main.swift入口文件,而将标注有@UIApplicationMain标签的文件当做入口文件。



#再来看看Android的:

Android程序你找不到显式的main方法

尽管java也有main方法,可Android似乎却找不到main。

对于这个问题,有很多解释。

Stackoverflow上有解释说没有main是因为不需要main,系统生成activity并调用其方法,应用默认启动已经把main代替了,因此不需要用main方法。

那么程序的入口在哪里? 我们从Application开始看.

每个Android程序的包中,都有一个manifest文件声明了它的组

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值