Objective-C面试深度解析:多继承、协议、Category与内存管理
4星 · 超过85%的资源 需积分: 10 69 浏览量
更新于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 上传
2015-12-11 上传
点击了解资源详情
点击了解资源详情
2022-06-16 上传
108 浏览量
2015-03-05 上传
2019-02-27 上传
vincerce
- 粉丝: 11
- 资源: 12
最新资源
- 前端协作项目:发布猜图游戏功能与待修复事项
- Spring框架REST服务开发实践指南
- ALU课设实现基础与高级运算功能
- 深入了解STK:C++音频信号处理综合工具套件
- 华中科技大学电信学院软件无线电实验资料汇总
- CGSN数据解析与集成验证工具集:Python和Shell脚本
- Java实现的远程视频会议系统开发教程
- Change-OEM: 用Java修改Windows OEM信息与Logo
- cmnd:文本到远程API的桥接平台开发
- 解决BIOS刷写错误28:PRR.exe的应用与效果
- 深度学习对抗攻击库:adversarial_robustness_toolbox 1.10.0
- Win7系统CP2102驱动下载与安装指南
- 深入理解Java中的函数式编程技巧
- GY-906 MLX90614ESF传感器模块温度采集应用资料
- Adversarial Robustness Toolbox 1.15.1 工具包安装教程
- GNU Radio的供应商中立SDR开发包:gr-sdr介绍