iOS面试必备:OC特性、内存管理与ARC解析

需积分: 9 3 下载量 190 浏览量 更新于2024-07-22 1 收藏 64KB DOCX 举报
"这是一份关于iOS面试题及答案的资料,涵盖了Objective-C语言特性、编译指令、类目的优缺点、内存管理原则、ARC技术与GC的区别,以及深浅复制的概念。" 1. Objective-C语言的基本特点: - Objective-C是在C语言的基础上增加了面向对象编程(OOP)特性的超集,提供了消息传递机制、类、协议等OOP概念。 - Objective-C采用单一继承,不同于C++的多重继承,这使得类结构更简单但可能限制了设计的灵活性。 - 缺乏命名空间机制,Objective-C通过在类名前加前缀来避免命名冲突。 2. #include与#import及#import与@class的区别: - #include和#import在实际效果上相似,但#import能防止头文件被重复导入,提高编译效率。 - #import引入整个类的定义,包括实例变量和方法;而@class仅声明一个类的存在,不包含具体实现,用于前置声明,减少编译时间。 3. 类目的优点和缺点: - 优点:类目允许在不扩展新子类的情况下增加类的功能,类目中的方法与原始类的方法几乎无异。 - 缺点:不能向类目中添加实例变量。覆盖的原有方法在类目中将无法直接调用。 4. 内存管理的基本原则: - 使用alloc、copy、mutableCopy或retain创建的对象,需要通过release或autorelease来释放。 - 对于其他方式创建的对象(如方法返回的对象),系统会自动管理其内存,不需要开发者干预。 5. ARC技术与GC的区别: - ARC(Automatic Reference Counting)是iOS5.0引入的,它自动处理对象的引用计数,无需程序员手动调用release或autorelease。 - GC(Garbage Collection)是内存垃圾回收机制,会自动检测并回收不再使用的对象,但在iOS中不被支持,而在Mac OS X中从10.8开始被废弃,推荐使用ARC。 - 相比GC,ARC在性能上更优,因为它是基于引用计数的,而GC可能会有较大的性能开销。 6. iOS中的内存管理机制: - iOS不支持垃圾回收机制,而是依赖于手动内存管理和ARC。 - 开发者需要遵循Apple的内存管理规则,如MRC(Manual Reference Counting)或使用ARC。 7. 深浅复制的区别: - 浅复制:只复制对象的指针,不复制对象本身。这意味着,当复制的对象被修改时,原始对象也会受到影响,因为它们都指向同一块内存。 - 深复制:创建对象的一个完全独立的副本,包括对象所引用的所有内容。这样修改复制对象不会影响原始对象。 这份面试题涵盖了Objective-C语言基础、内存管理、类目使用等多个关键知识点,对于iOS开发者来说,理解和掌握这些内容是至关重要的。