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

5星 · 超过95%的资源 需积分: 13 1.7k 下载量 132 浏览量 更新于2024-07-27 20 收藏 121KB DOC 举报
iOS面试题锦集包含了iOS开发者面试中常见的问题,主要关注于Objective-C语言特性和编程实践的理解。以下是一些关键知识点: 1. **浅复制与深复制的区别**: - 浅复制(Shallow Copy)是指创建新对象时,只复制指向对象的指针,而不复制对象本身。这意味着两个对象共享同一内存地址,修改其中一个会直接影响另一个。这在处理复杂数据结构或需要独立副本时可能引发意料之外的结果。 - 深复制(Deep Copy)则是完全复制对象,包括对象本身及其所有内容,确保两者在内存中拥有独立的存储空间。深复制能够避免一个对象的修改影响其他拷贝,适用于需要数据独立性的场景。 2. **类别(Categories)的作用与继承的区别**: - 类别允许在不修改现有代码的情况下,为类添加新方法或属性。它主要用于模块化代码、扩展私有方法以及实现非正式协议,提供了一种灵活的代码组织方式。 - 继承则涉及子类从父类继承属性和方法,可以增加、修改或删除方法,以及添加新属性。继承体现了面向对象的封装和多态性,但可能会导致代码结构层次加深。 3. **类别(Categories)与扩展(Extensions)的差异**: - 类别与扩展都可用于扩展类的功能,但扩展(Extensions)更进一步,可以添加属性,而且这些方法是必须实现的,不像类别那样可选。扩展通常被视为私有的类别,用于添加私有方法或增强类的内部实现。 4. **Objective-C协议(Protocols)与Java接口的区别**: - 在Objective-C中,协议(Protocol)有正式(Formal Protocol)和非正式(Informal Protocol)之分。正式协议类似Java接口,规定了方法签名,实现者需实现这些方法。而非正式协议则更像是设计模式,虽然提供了方法签名,但不强制实现,更注重设计的约束和通信契约。 掌握这些知识点对于准备iOS开发岗位的面试至关重要,它们展示了面试者对基础语法、设计模式和最佳实践的理解程度。在面试过程中,除了理论知识,面试官还会关注面试者的实际编码能力和解决问题的能力。
2018-12-09 上传
程序主要有两个部分组成,一个程序的显示部分,一个程序的设置部分,显示部分主要是一个可以用手指拖动圆形小球,设置部分主要是对小球的颜色和大小进行参数设置。 1.1 View-ViewController 主要有三个ViewController,一个是用于显示的MainViewController,还有一个是用于设置的SetingsViewController,还有一个是用于设置小球颜色ColorSettingViewController. 一个RoundBallView,进行显示小球的View。 程序第一次开启的时候,小球的坐标是界面上一个(30,30)这个位置,小球颜色为红色,直径为50像素。SettingsView的Color选项为Red,Size为最小值50。ColorSettingView的CheckMark为Red。 MainView主要对小球进行拖动操作,程序重启后,小球的位置是最后一次拖动的坐标。 SetingsViewController的第一表格引导进入ColorSettingView,SetingsViewController的第二表格设置小球大小的变化,MainView始终保持小球最后一次设置的大小,小球的直径的最大值为100,最小值为50。 在ColorSettingViewController进行颜色参数的改变后能直接引起MainViewController中小球颜色对应变化,还有SetingsView的当前颜色的文字描述的对应变化,还有ColorSettingView自身的CheckMark的所在行。 程序开启的时候始终保持上次最终的状态。 MainView进入SetingView为垂直进入,SetingView进入ColorSettingView为导航横向进入。 1.2 Controller MainViewController,SetingViewController ,ColorSettingViewController三个都是简单ViewController,MainViewController,SetingViewController可以直接继承UIViewController, ColorSettingViewController继承UITableViewController