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 north
case south
case east
case west
}
16. 如何优化UITableView的性能?
使用reuseIdentifier
来重用UITableViewCell。
延迟加载(Lazy Loading)图片或资源。
使用dispatch_async
来异步加载数据。
开启tableView.estimatedRowHeight
来提高滚动流畅度。
17. 什么是Swift中的类型推断?
Swift会根据你赋值给变量的值自动推断变量的类型。例如,let num = 10
,Swift会推断num
是Int
类型。
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: String
var age: Int
init(name: String, age: Int) {
self.name = name
self.age = age
}
func greet() {
print("Hello, my name is \(name).")
}
}