Objective-C面试深度解析:多继承、协议、Category与内存管理
4星 · 超过85%的资源 需积分: 10 27 浏览量
更新于2024-09-12
3
收藏 96KB DOCX 举报
"这份资料主要关注iOS面试中的Objective-C(OC)相关问题,涵盖了多继承、Category、协议、属性修饰符、数组类型选择以及预编译头文件(pch)的作用等多个核心知识点。"
1. Objective-C并不支持多继承,但可以通过协议(Protocol)来实现类似的功能,让一个类遵守多个协议,从而实现多接口。Category是OC中的一个重要特性,它允许我们给已有的类添加方法,而无需扩展新的子类。
2. 在OC中,如果需要重写一个类的方法,通常采用继承的方式来实现。因为继承可以保持原有类的所有特性,并在其基础上添加新的功能。然而,使用Category给类添加同名方法会导致原有的方法被隐藏,即在调用时可能会产生混淆。因此,对于重写,继承更为合适,而Category更适合于扩展非重写的功能。
3. 属性修饰符的使用:
- `retain`:用于增加对象的引用计数,当设置新的值时,旧值的引用计数会减少,新值的引用计数会增加。setter方法如下:
```objc
-(void)setName:(NSString *)name {
if (_name != name) {
[_name release];
_name = [name retain];
}
}
```
- `copy`:创建对象的一个不可变副本,无论原对象是否可变。setter方法如下:
```objc
-(void)setName:(NSString *)name {
if (_name != name) {
[_name release];
_name = [name copy];
}
}
```
- `assign`:一般用于基本数据类型或者不涉及内存管理的对象,不改变对象的引用计数。
4. `NSMutableArray`和`NSArray`的区别:
- `NSMutableArray`是可变数组,允许添加、删除或替换元素,适合在需要动态调整数组内容的场景中使用。
- `NSArray`是不可变数组,一旦创建就不能修改,适用于保存不需要修改的数据集合。
5. 实现字符串"ILOVECHINA"反串成"CHINALOVEI":
```objc
NSString *str = @"ILOVECHINA";
NSMutableString *reversedStr = [NSMutableString stringWithCapacity:str.length];
NSInteger index;
for (index = str.length - 1; index >= 0; index--) {
[reversedStr appendString:[str substringWithRange:NSMakeRange(index, 1)]];
}
NSLog(@"%@", reversedStr); // 输出 "CHINALOVEI"
```
6. 预编译头文件(`.pch`)的作用:
`.pch`文件是预编译头文件,主要用于存放项目中常用且不变的头文件引用。这样在编译项目时,Xcode会预先处理这些头文件,提高编译速度。通常我们会在这里引入系统框架头文件、自定义宏定义等,以减少每次编译时的加载时间。
以上内容详尽解释了iOS面试中关于Objective-C的部分常见问题,包括类的扩展、属性管理、数组选择以及优化编译流程的技巧。这些知识对于iOS开发者来说至关重要,有助于在面试中展现出扎实的基础和对语言特性的理解。
2016-03-15 上传
2021-05-17 上传
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
vincerce
- 粉丝: 11
- 资源: 12
最新资源
- 多传感器数据融合手册:国外原版技术指南
- MyEclipse快捷键大全,提升编程效率
- 从零开始的编程学习:Linux汇编语言入门
- EJB3.0实例教程:从入门到精通
- 深入理解jQuery源码:解析与分析
- MMC-1电机控制ASSP芯片用户手册
- HS1101相对湿度传感器技术规格与应用
- Shell基础入门:权限管理与常用命令详解
- 2003年全国大学生电子设计竞赛:电压控制LC振荡器与宽带放大器
- Android手机用户代理(User Agent)详解与示例
- Java代码规范:提升软件质量和团队协作的关键
- 浙江电信移动业务接入与ISAG接口实战指南
- 电子密码锁设计:安全便捷的新型锁具
- NavTech SDAL格式规范1.7版:车辆导航数据标准
- Surfer8中文入门手册:绘制等高线与克服语言障碍
- 排序算法全解析:冒泡、选择、插入、Shell、快速排序