iOS面试深度解析:浅复制与深复制、类别与继承

5星 · 超过95%的资源 需积分: 13 72 下载量 71 浏览量 更新于2024-07-27 2 收藏 121KB DOC 举报
“ios经典面试题,适合新手,包含公司面试常问问题,涉及浅复制与深复制、类别、继承、类别与扩展的区别以及Objective-C的协议与Java接口的对比。” 在iOS开发中,面试题常常涉及到核心概念和技术,以下是这些知识点的详细说明: 1. **浅复制与深复制**: 浅复制是指创建一个新的对象,这个新对象拥有原始对象的引用,即新旧两个对象共享同一块内存空间。如果原对象的内部数据是可变的,修改其中一个对象会影响到另一个。反之,深复制会创建一个全新的对象,不仅复制原始对象的指针,还会复制其引用的对象,确保两者独立,互不影响。深复制提供了真正的副本,而浅复制只是表象上的复制。 2. **类别(Category)与继承(Inheritance)**: 类别允许开发者在不修改原有类源代码的情况下向其添加方法,这在代码组织和功能扩展上有很大优势。它不具备删除或修改已有方法的能力,但当类别和原类方法名冲突时,类别中的方法会优先调用。继承则更侧重于创建一个新的类,它能继承父类的所有属性和方法,并可进一步扩展或修改。继承可以增加、删除或重写方法,同时可以添加新的属性。 3. **类别(Category)与类扩展(Extension)**: 类扩展可以看作是匿名的类别,它可以在编译期强制要求实现某些方法。类扩展的特点是它可以添加属性(而普通类别不能),并且所有声明的方法都必须在类的实现中提供实现。类扩展常用于实现私有方法和属性,以保持代码封装性。 4. **Objective-C的协议(Protocol)与Java的接口(Interface)**: 在Objective-C中,协议分为正式协议(formal protocol)和非正式协议(informal protocol)。正式协议类似于Java的接口,定义了一组必须实现的方法。而非正式协议则更为灵活,其中的方法不是强制实现的,遵循者可以选择实现部分或全部方法。Java的接口则只支持正式协议的概念,定义一组抽象方法,实现该接口的类必须实现所有接口中的方法。 这些知识点都是iOS开发者必备的基础,理解和掌握它们对于面试和实际开发工作至关重要。通过深入学习和实践,开发者能够更好地设计和构建iOS应用程序。