ios初级开发工程师
十二月 28, 2018
1.objective-c 有多继承吗?不是的话有什么替代方法
cocoa中所有类都是NSObject的子类,多继承在这里是使用protocol委托代理实现的。
2.objective-c有私有方法吗?
objective-c类里面的方法有两种,静态方法和实例方法,所有实例变量默认都是私有的,所有实例方法默认都是公有的。
3.const的作用
1 | const int *a; |
欲阻止一个变量被改变,可以使用const关键字
对指针来说,可以指定指针本身为const,
4.static作用,内存只分配一次
5.extern “c” 的作用
6.#import跟#include的区别,@class
@class一般用于头文件中需要声明该类的某个实例变量的时候用到,在m文件中还是需要使用#import;而#import比起#include的好处就是不会引起交叉编译。
7.objective-C的优缺点
- 优点
Cateogies
posing
动态识别
指标计算
弹性讯息传递
不是一个过渡复杂的c衍生语言
Objective-C与C++可混合编程 - 缺点
不支持命名空间
不支持运算符重载
不支持多继承
使用动态运行时类型, 所有的方法都是函数调用,所以很多编译时优化方法都用不到。
8.objective-C的内存管理
通过分配和初始化(比如[[MyClass alloc] init])的方式来创建对象,那就拥有这个对象,需要负责该对象的释放。这个规则在使用NSObject的便利方法new时也同样适用。
如果您拷贝(copy)一个对象,您也拥有拷贝得到的对象,需要负责该对象的释放。
如果您保持(retain)一个对象,您就部分拥有这个对象,需要在不再使用时释放该对象。反过来如果您从其他对象那里接收到一个对象,则您不拥有该对象,也不应该释放它。
9.自动释放池是什么,如何工作
当您向一个对象发送一个autorelease消息时,Cocoa就会将该对象的一个引用放入到最新的自动释放池。它仍然是个正当的对象,因此自动释放池定义的作用域内的其他对象可以向它发送消息。当程序执行到作用域结束的位置时,自动释放池就会被释放,池中的所有对象也就被释放了。
10.堆和栈的区别
- 管理方式
- 申请大小
- 碎片问题
- 分配方式
- 分配效率
查看评论