50 iOS面试问答第二部分

38- LLVM和Clang有什么区别?

Clang是LLVM工具链的前端(“ clang”是LLVM的C语言家族前端)。 每个编译器都有三个部分。
1.前端(词法分析,解析)
2.优化器(优化抽象语法树)
3.后端(机器代码生成)

前端(Clang)获取源代码并生成抽象语法树(LLVM IR)。

39-什么是阶级?

旨在定义一个对象及其工作方式。 这样, 就像对象的蓝图。

40-什么是物体?

对象是类的实例。

41-什么是界面?

Objective-C中的@interface与Java接口无关。 它只是声明一个类的公共接口,即其公共API。

42-我们何时以及为什么使用对象而不是结构?

结构是值类型。 类(对象)是引用类型。

43-什么是UIStackView?

UIStackView提供了一种水平或垂直布置一系列视图的方法。 我们可以定义所包含的视图如何将自身调整为可用空间。 不要错过这篇文章。

44- iOS应用程序的状态是什么?

  1. 非运行中 -应用程序未运行。
  2. 无效 -应用程序在前台运行,但未收到事件。 例如,当收到呼叫或SMS消息时,可以将iOS应用置于非活动状态。
  3. 活动 -应用程序在前台运行,并接收事件。
  4. 后台 -该应用程序在后台运行,并正在执行代码。
  5. 已暂停 -应用程序在后台,但是没有代码在执行。

45-开发人员应该处理的最重要的应用程序委托方法是什么?

操作系统在应用程序委托中调用特定方法,以促进与各种状态之间的转换。 开发人员应处理的七个最重要的应用程序委托方法是:

 应用程序:willFinishLaunchingWithOptions 

启动启动过程时调用的方法。 这是在应用程序内执行任何代码的第一个机会。

 应用程序:didFinishLaunchingWithOptions 

启动过程快要完成时调用的方法。 由于此方法是在显示任何应用程序窗口之前调用的,因此这是准备界面和进行任何最终调整的最后机会。

  applicationDidBecomeActive 

一旦应用程序变为活动状态,应用程序委托将通过applicationDidBecomeActive方法接收回调通知消息。

每当应用程序从上一次切换到活动状态(由此产生的电话或SMS变为非活动状态)时,都会调用此方法。

  applicationWillResignActive 

有几种情况将产生applicationWillResignActive方法。 每次发生临时事件(例如电话)时,都会调用此方法。 还需要注意的是,“退出” iOS应用程序不会终止进程,而是将应用程序移至后台。

  applicationDidEnterBackground 

当iOS应用程序正在运行但不再在前台时,将调用此方法。 换句话说,当前未显示用户界面。 根据Apple的UIApplicationDelegate协议参考,该应用程序大约有五秒钟的时间来执行任务并返回。 如果该方法在五秒钟内未返回,则该应用程序将终止。

  applicationWillEnterForeground 

当应用正在准备从后台移动到前景时,称为此方法。 但是,如果没有调用applicationDidBecomeActive方法,则该应用不会进入活动状态。 此方法使开发人员有机会在应用程序激活之前重新建立先前运行状态的设置。

  applicationWillTerminate 

触发终止事件时,此方法通知您的应用程序委托。 点击主页按钮不再退出该应用程序。 强制退出iOS应用或关闭设备会触发applicationWillTerminate方法。 这是保存应用程序配置,设置和用户首选项的机会。

46-属性和实例变量之间有什么区别?

属性是一个更抽象的概念。 一个实例变量实际上只是一个存储槽,作为结构中的槽。 通常,永远不要让其他对象直接访问它们。 通常,属性将返回或设置一个实例变量,但它可以使用多个数据或根本不使用任何数据。

47-我们如何为Swift Package Manager添加UIKit?

Swift Package Manager不支持UIKit。 我们可以为其他项目创建文件模板或框架。

48-解释SDK和Framework之间的区别

SDK是一组软件开发工具。 该集合用于创建应用程序。 框架基本上是用于开发软件应用程序的平台。 它提供了必要的基础,可以为特定平台开发程序。 SDK和Framework相互补充,并且SDK可用于框架。

49-什么是下垂?

当我们在Objective-C中将对象转换为另一种类型时,这很简单,因为只有一种方法可以做到。 不过,在Swift中,有两种铸造方法–一种是安全的,另一种不是。

  • 用于铸造和铸型为桥接型
  • 如? 用于安全投放,如果失败则返回nil
  • 如! 用于强制投放,如果失败则崩溃。 仅当我们知道降级将成功时才应使用。

50-解释标记的声明

使用标记的语句,无论嵌套循环的深度如何,我们都可以指定我们想要break控制结构。 这也适用于continue 。 如果我们具有包含嵌套的for循环的复杂结构,则带标签的语句将使我们能够从外部循环中中断并继续执行该方法。

第3部分已准备就绪,等待被咬。 you你在这里。

而已。 😃😃😃感谢您的阅读。

如果您想在社交媒体上关注我,这里有一些链接。 github,twitter,linkedin

您可以在这里查看我的上一篇文章。