远泓科技iOS笔试题:Objective-C核心概念解析
4星 · 超过85%的资源 需积分: 0 112 浏览量
更新于2024-09-13
收藏 28KB DOC 举报
"远泓科技的笔试题主要针对iOS软件开发岗位,包含了Objective-C语言的基础概念,内存管理,对象生命周期,以及iOS应用开发中的常见设计模式和方法调用的细节。"
1. 在Objective-C中,`alloc`是用于创建对象并分配内存的,与它语义相反的是`release`,因为`release`是用来减少对象引用计数的,当对象的引用计数为0时,会自动调用`dealloc`进行销毁。`dealloc`是与`alloc`配对使用的方法,因为当对象不再被使用时,需要释放内存。
2. `self.name = "object"` 和 `name = "object"` 的区别在于,前者是通过`self`关键字调用对象的成员属性,后者是直接赋值给局部变量。`self`在这里代表对象本身,所以`self.name`是对对象属性的设置,而`name`如果没有声明为实例变量或属性,则只是栈上的局部变量。
3. `retainCount`是Objective-C中表示对象被引用的次数,但它通常不建议在实际开发中直接使用,因为其值在某些情况下可能不准确。
4. 给出的代码段涉及对象`person`的生命周期管理:
- `[Person alloc] init]`: 初始化一个新的person对象,`retainCount`为1。
- `[person retain]`: retainCount增加1,变为2。
- `[person release]`: retainCount减1,变为1。
- `[person release]`: 再次调用release,retainCount减1,若为0,对象会被销毁。
5. `Notification`是iOS中的消息通知机制,用于对象间通信,不需要知道接收者的具体实现,只需发布通知,感兴趣的对象会自动接收。
6. `Delegate`通常用于一对多的关系,即一个对象可以有多个代理对象,用于传递定制的事件或请求。`Notification`适用于多对多关系,任何对象都可以监听并响应特定的通知。
7. `viewDidLoad`在视图控制器的视图被加载到内存时调用,适合初始化视图及其子视图。`viewDidUnload`在内存紧张时调用,视图控制器的视图被卸载,应释放可释放的资源。自定义ViewController时,`viewDidLoad`里设置视图内容,`viewDidUnload`里释放内存占用高的资源。
8. `didReceiveMemoryWarning`在系统认为应用内存不足时被调用,提示视图控制器释放可释放的资源。默认操作是释放可重新加载的数据,比如图片。
9. 预处理指令`#define`定义常量:`#define YEAR_SEC (365 * 24 * 3600)`表示一年的总秒数,不考虑闰年。
10. C语言中的指针声明:
- `int a;` 声明一个整型变量。
- `int *a;` 声明一个指向整型变量的指针。
- `int **a;` 声明一个指向指针的指针,也就是指针的指针。
- `int a[10];` 声明一个包含10个整数的数组。
- `int *a[10];` 声明一个包含10个整型指针的数组。
- `int (*a)[10];` 声明一个指向包含10个整数的数组的指针。
- `int (*a)(int);` 声明一个函数指针,该函数接受一个整数作为参数,返回整数值。
- `int (*a[10])(int);` 声明一个包含10个函数指针的数组,每个指针指向接受整数参数并返回整数值的函数。
这些知识点涵盖了Objective-C的基本语法、内存管理、对象生命周期、iOS应用开发中的设计模式以及C语言的指针操作,是iOS开发者必备的基础知识。
2021-10-02 上传
2022-07-15 上传
2022-09-22 上传
2021-09-30 上传
2022-09-24 上传
2023-06-06 上传
2023-06-09 上传
2023-07-11 上传
2023-05-31 上传
闹钟和梦想
- 粉丝: 1
- 资源: 9
最新资源
- 前端协作项目:发布猜图游戏功能与待修复事项
- 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介绍