iOS面试重点:内存管理、多线程与UI交互

需积分: 14 4 下载量 176 浏览量 更新于2024-09-11 收藏 4KB TXT 举报
"这篇资源包含了iOS面试中常见的技术问题,主要涵盖了内存管理、对象创建、属性、多线程、数据解析、KVO、通知、视图绘制以及ViewController与视图的关系等方面。" 在iOS开发中,理解Objective-C的内存管理至关重要。`retain`和`release`是Objective-C中的两个关键字,它们用于实现引用计数(ARC)机制。`retain`增加对象的引用计数,当计数值增加时,对象不会被销毁。相反,`release`减少引用计数,当计数减至0时,对象会被自动调用`dealloc`方法并释放内存。`alloc`负责分配内存,并将对象的引用计数设置为1,而`init`则是初始化对象,类似C++中的构造函数。 `property`是Objective-C中用于声明实例变量的访问器方法,它支持`assign`、`copy`和`retain`等特性。`assign`仅做基本赋值,不涉及内存管理;`copy`会创建对象的一个副本,其引用计数为1;`retain`则增加对象的引用计数。 多线程在iOS中可以通过多种方式实现,如`NSThread`、`NSOperation`、`Blocks`(GCD)、`pthread`。`NSThread`的`detachNewThreadSelector:`方法可以在线程中执行指定的选择子;`NSOperation`常用于网络操作,通常需要自定义子类来实现`main`函数;`Blocks`或GCD(Grand Central Dispatch)提供了简洁的异步任务处理方式。 XML解析在iOS中虽然不如JSON常见,但也有相关的类,如`NSXMLParser`。不过,开发者往往更倾向于使用JSON,因为它更轻量且易于处理。 Key-Value Observing (KVO)允许对象观察并响应其他对象的属性变化,提供了一种灵活的数据绑定机制。它的优势在于能动态监听并响应对象状态的改变,无需侵入性地修改代码。 Notification是iOS中的广播模式,支持同步和异步发送。同步通知等待所有观察者处理完回调后才继续执行,而异步通知则立即返回,让接收者在合适的时机处理消息。 `UIView`的`drawRect:`方法用于自定义视图的绘图,通常在需要低级别图形绘制时使用。然而,大多数时候开发者会选择组合现有的视图控件,而不是直接绘制。 `UIViewController`是控制视图层级和逻辑的核心组件,它包含了一个根`UIView`,并且可以管理多个视图和子控制器。 面试中还可能涉及C++的`new`与`malloc`的区别,`static`关键字的作用,何时调用`copy`构造函数,以及析构函数为何应为`virtual`。此外,设计模式如工厂模式和单例模式也是面试的常见话题。例如,工厂模式用于创建对象,而单例模式确保一个类只有一个实例。类A利用类B的功能可以采用继承、组合、委托等方式,各有优缺点。 最后,可能会要求编写一个能将阿拉伯数字字符串转换为汉字表示的类,这涉及到字符串处理和字符映射的知识。