iOS面试精华:浅拷贝与深拷贝、类别与继承、扩展详解

需积分: 13 4 下载量 178 浏览量 更新于2024-07-25 收藏 121KB DOC 举报
iOS面试题锦集是一份整理的面试指南,主要关注于iOS开发中的核心概念和技巧,适合求职者或开发者准备面试时参考。以下是其中的部分知识点: 1. **浅复制与深复制的区别**: 在Objective-C中,浅复制(shallow copy)和深复制(deep copy)是对对象复制行为的两种方式。浅复制只是复制指向对象的指针,而实际的对象并不复制,因此对原对象的修改会影响到复制的对象。这就像影子与主体的关系,两者共享同一资源。深复制则是完全复制对象本身,包括所有关联的数据结构,确保两个对象是完全独立的。如果一个对象被修改,深复制的副本不会受到影响。 2. **类别(Categories)的作用与继承的区别**: 类别允许开发者在不改变原有代码的基础上向已有类添加新方法或属性,是一种动态扩展功能的方式。它主要用于模块化和解耦,可以避免重复代码,但不具备修改现有类行为的能力。继承则涉及类间的结构关系,可以增加、修改或删除方法,以及属性,实现代码重用。继承体现了“is-a”关系,而类别更多体现“has-a”。 3. **类别(Categories)与类扩展(Extensions)的差异**: 类扩展类似于私有类别,它除了可以添加方法外,还可以添加属性。这意味着类扩展的成员是必须实现的,不像类别那样可以提供非强制性的行为。类扩展更专注于扩展类的行为,通常用于封装私有细节或提供便捷的访问方式。 4. **Objective-C中的协议(Protocols)与Java中的接口(Interfaces)对比**: 在Objective-C中,协议(Protocol)不仅包括了formal protocol(类似于Java接口,规定方法签名),还包含informal protocol(设计模式中的概念,方法并不强制实现,但实现后会改变类的行为)。相比之下,Java接口纯粹是方法签名的集合,没有这样的灵活性。 这些知识点在面试中可能被问及,显示了求职者对基础数据结构和设计模式的理解,以及面向对象编程原则的运用。掌握这些概念能帮助候选人展示他们的技术深度和解决问题的能力。