IOS基础面试题

ops/2025/3/1 5:36:15/

1. 什么是MVC?

MVC(Model-View-Controller)是一种常见的设计模式,用于组织代码

  • Model(模型): 代表数据层,处理数据的逻辑。
  • View(视图): 负责展示界面,显示数据。
  • Controller(控制器): 连接Model和View,处理视图的更新以及用户交互。

2. 什么是Delegate?

Delegate是iOS中一种常用的设计模式,用于对象之间的通信。一个对象通过delegate(委托)将某些任务或事件的处理委托给另一个对象。常用于处理UI事件(如UITableViewDelegate)。

3. Swift中的optional是什么?

Optional是Swift中的一种数据类型,它表示变量可以有值或者没有值(nil)。Optional在Swift中用?表示,如var name: String?。当你声明一个Optional时,它可以被赋值为nil。

4. 什么是ARC(Automatic Reference Counting)?

ARC是一种自动内存管理机制,用于管理对象的生命周期。它通过在代码中追踪对象的引用计数来决定何时释放对象。当引用计数为0时,ARC自动销毁对象。

5. Swift中的闭包是什么?

闭包是自包含的代码块,可以在代码中传递和使用。闭包可以捕获和存储其周围上下文中的变量和常量。闭包分为全局函数、嵌套函数和闭包表达式。

6. 什么是KVC(Key-Value Coding)?

KVC是一种在Objective-C中使用的机制,允许通过字符串键来访问对象的属性。它使得对象的属性可以在运行时被动态地访问和修改。

7. 什么是KVO(Key-Value Observing)?

KVO是一种允许对象观察另一个对象属性变化的机制。通过KVO,当某个属性值发生变化时,观察者会收到通知。

8. UITableView和UICollectionView有什么区别?

UITableView: 用于显示单列的垂直列表。
UICollectionView: 用于显示网格布局,可以支持更灵活的布局,适用于多列、多行、横向或纵向布局。

9. 什么是Swift中的协议(Protocol)?

协议定义了一组方法和属性要求,可以被类、结构体或枚举实现。协议是一种接口定义,不包含具体实现。

10. 如何防止ARC中的循环引用?

循环引用发生在两个对象互相持有对方的引用时,从而无法释放。通过使用weak或unowned修饰符来避免循环引用。weak适用于可为nil的引用,而unowned适用于非nil的引用。

11. 什么是GCD(Grand Central Dispatch)?

GCD是苹果提供的并发编程技术,帮助开发者更轻松地实现多线程。它通过任务队列管理不同的线程,使得任务的调度和执行更加高效。

12. 什么是RunLoop?

答案:
RunLoop是iOS中用于处理事件的循环机制。它持续监听并调度事件(如UI事件、网络请求等)。当有事件发生时,RunLoop会处理事件并调用相关的回调方法。

enum MyError: Error {case somethingWentWrong
}func throwError() throws {throw MyError.somethingWentWrong
}do {try throwError()
} catch {print("Error: \(error)")
}

14. 什么是App的生命周期?

iOS应用的生命周期包括从启动到退出的整个过程。常见的生命周期方法有:

  • application(_:didFinishLaunchingWithOptions:):应用启动时调用。
  • applicationDidEnterBackground(_:):应用进入后台时调用。
  • applicationWillEnterForeground(_:):应用从后台进入前台时调用。
  • applicationWillTerminate(_:):应用即将终止时调用。

15. Swift中如何定义一个枚举?

枚举使用enum关键字定义。可以为每个枚举成员指定关联值或原始值。

enum Direction {case northcase southcase eastcase west
}

16. 如何优化UITableView的性能?

使用reuseIdentifier来重用UITableViewCell。
延迟加载(Lazy Loading)图片或资源。
使用dispatch_async来异步加载数据。
开启tableView.estimatedRowHeight来提高滚动流畅度。

17. 什么是Swift中的类型推断?

Swift会根据你赋值给变量的值自动推断变量的类型。例如,let num = 10,Swift会推断numInt类型。

18. 什么是iOS中的App Sandbox?

App Sandbox是一种安全机制,限制应用对设备上资源的访问。它确保应用只能访问它需要的文件和数据,防止对系统或其他应用的非法访问。

19. 如何在iOS中进行网络请求?

可以使用URLSession进行网络请求。

let url = URL(string: "https://api.example.com")!
let task = URLSession.shared.dataTask(with: url) { (data, response, error) in// 处理数据
}
task.resume()

20. 如何在Swift中定义一个类?

使用class关键字定义类。类可以有属性、方法和初始化器。

class Person {var name: Stringvar age: Intinit(name: String, age: Int) {self.name = nameself.age = age}func greet() {print("Hello, my name is \(name).")}
}

http://www.ppmy.cn/ops/162144.html

相关文章

C++和OpenGL实现3D游戏编程【连载23】——几何着色器和法线可视化

欢迎来到zhooyu的C++和OpenGL游戏专栏,专栏连载的所有精彩内容目录详见下边链接: 🔥C++和OpenGL实现3D游戏编程【总览】 1、本节实现的内容 上一节课,我们在Blend软件中导出经纬球模型时,遇到了经纬球法线导致我们在游戏中模型光照显示问题,我们在Blender软件中可以通过…

AI“势头超猛”: 深圳走出怎样的步伐?

何为“耐心资本”? 就是引导资本做“时间的朋友”,不受短期市场波动的干扰,陪伴硬科技、科学家与创业者“长跑”。对于战略性新兴产业而言,早期的发展都离不开大量的资金投入,用来维持持续的创新和研发工作。 在今年两…

SpringBoot整合SpringSecurity、MyBatis-Plus综合实例:认证、授权

Spring Security 安全框架,系列文章: 《SpringSecurity创建一个简单的自定义表单的认证应用》 《SpringSecurity中的过滤器链与自定义过滤器》 《SpringSecurity实现自定义用户认证方案》 《SpringSecurity密码编码器:使用BCrypt算法加密、自定义密码编码器》 《SpringSecur…

Linux:Shell环境变量与命令行参数

目录 Shell的变量功能 什么是变量 变数的可变性与方便性 影响bash环境操作的变量 脚本程序设计(shell script)的好帮手 变量的使用:echo 变量的使用:HOME 环境变量相关命令 获取环境变量 环境变量和本地变量 命令行…

Linux内核自定义协议族开发指南:理解net_device_ops、proto_ops与net_proto_family

在Linux内核中开发自定义协议族需要深入理解网络协议栈的分层模型。net_device_ops、proto_ops和net_proto_family是三个关键结构体,分别作用于不同的层次。本文将详细解析它们的作用、交互关系及实现方法,并提供一个完整的开发框架。 一、核心结构体的作用与层级关系 struct…

科技快讯 | DeepSeek宣布开源DeepGEMM;多个团队开发AI论文反识别技术;OpenAI GPT 4.5现身Android测试版,即将发布

DeepSeek宣布开源DeepGEMM 财联社2月26日电,Deepseek于开源周第三天宣布开源DeepGEMM。DeepGEMM 是一个专为简洁高效的 FP8 通用矩阵乘法(GEMM)设计的库,具有细粒度缩放功能,如 DeepSeek-V3 中所提出。它支持普通和混合…

可编辑73页PPT | DeepSeek自学手册-从理论模型训练到实践模型应用

荐言分享:DeepSeek自学手册——从理论模型训练到实践模型应用》是一本全面介绍DeepSeek系列模型的自学指南。该手册详细阐述了DeepSeek V3和R1两大模型的理论基础、训练过程、性能表现、使用技巧、应用场景以及替代方案,旨在帮助用户全面了解并高效使用D…

【Java项目】基于Spring Boot的论坛管理系统

【Java项目】基于Spring Boot的论坛管理系统 技术简介:采用Java技术、Spring Boot框架、MySQL数据库等实现。 系统简介:论坛管理系统是一个基于Web的在线平台,主要分为前台和后台两大功能模块。前台功能模块包括(1)首…