iOS面试题详解:浅复制与深复制、类别与继承

需积分: 3 6 下载量 148 浏览量 更新于2024-07-18 收藏 145KB DOCX 举报
“iOS面试题整理,包括浅复制与深复制的区别、类别与继承的作用、类别与类扩展的差异以及Objective-C协议与Java接口的比较。” 在iOS开发中,面试题往往涵盖了许多核心概念和技术。以下是对这些知识点的详细说明: 1. **浅复制与深复制**: - 浅复制(Shallow Copy)只是复制对象的引用,即创建了一个新的指针指向原有的内存空间。因此,原始对象和副本共享同一块内存,修改副本会影响到原始对象。浅复制适用于对象内部没有包含其他对象的情况。 - 深复制(Deep Copy)则会创建一个全新的对象,不仅复制了对象本身,还复制了所有嵌套的对象。这意味着修改副本不会影响原始对象。深复制适合处理包含复杂数据结构的对象,确保每个副本都是独立的实体。 2. **类别(Category)与继承(Inheritance)**: - 类别允许在不修改原有类源代码的情况下为其添加方法,但不能添加属性或重写已有方法。类别常用于扩展系统类的功能,比如`NSString+Utilities`,或者提供私有方法。 - 继承则是子类继承父类的属性和方法,可以增加、修改或删除方法,还可以新增属性。继承是面向对象编程的核心特性,用于实现代码的复用和多态性。 3. **类别(Category)与类扩展(Extension)**: - 类扩展可以看作是类的私有类别,它可以添加属性(这是类别不具备的),同时添加的方法也是必须实现的。类扩展通常用于隐藏类的内部实现细节,提供内部使用的属性和方法。 4. **Objective-C中的协议(Protocol)与Java中的接口(Interface)**: - Objective-C的协议分为正式协议(Formal Protocol)和非正式协议(Informal Protocol)。正式协议类似于Java的接口,定义了一组必须或可选的方法,遵循该协议的类需要实现这些方法。 - 非正式协议则不强制实现,而是提供一种设计模式,如委托(Delegate)模式,其中的方法实现是可选的,增加了灵活性。 - Java的接口是纯抽象类,只能包含常量和抽象方法,实现接口的类必须实现所有接口方法。 以上内容涵盖了iOS面试中常见的几个关键点,对于理解iOS开发中的核心概念和技术具有重要的参考价值。深入理解和掌握这些知识点,有助于开发者在面试中表现出色,同时也能够提升实际项目开发的能力。