1. 堆和栈的区别: - (Stack):遵循后进先出原则,内存由编译器自动分配和释放,用于存储局部变量和函数参数,空间有限。 - (Heap):程序员手动管理的内存区域,用于动态分配大块内存,需通过malloc等函数分配和释放内存,不正确管理会导致内存泄漏。 2. 数组和链表的区别: - 数组(Array):连续存储的数据结构,按索引快速访问元素,但插入和删除效率较低。 - 链表(Linked List):分散存储,插入和删除效率高,但访问特定元素需遍历,效率较低。 3. Delegate和Notification的区别: - Delegate:一对一通信设计模式,允许对象间进行消息传递,接收者可改变发送者行为。 - Notification:一对多的广播机制,允许对象发送消息给系统中的任意对象,接收者无法影响发送者行为。 4. MVC架构模式: - Model:处理应用的业务逻辑和数据管理。 - View:呈现数据的用户界面。 - Controller:桥接模型和视图,处理用户交互。 5. 查找数组中的重复元素: - 使用NSMutableArray存储已访问的元素,遍历原数组,找到重复元素。 - 其他方法:使用NSSet自动去重,或通过NSMutableDictionary找出重复项。