C++:
- 为什么在模版中不能用虚函数?
- c++接口是如何工作的?
- static关键字的应用场景有哪些?
- 在成员函数中调用”call this“会怎么样?在成员函数调用”delete this“会怎么样?
MFC:
- 消息与事件的区别?
IOS开发问题:
- 说明MVC工作原理?
- 类别是否可以有私有成员?
- 指令符@作用?
- 内存管理释放机制?retain、copy等之间的区别?property中参数的区别?
见下一篇博文。
- alloc和new的区别?
- autorelease在哪些情况下释放内存?autorelease和release之间的区别?
object release:如果没有其他对象引用它了,直接删除引用,即当object的引用计数为0时,会自动调用[object dealloc]删除对象,那么相应的内存就会释放;
object autorelease:会在将来的某个时候去release object,即系统自动释放对象所占有的内存。
如果设置了自动释放池,即
NSAutoreleasePool *pool=[[NSAutoreleasePool alloc] init];
那么只要一个对象被标志为自动释放,那么就会被释放到自动释放池中。有两种方法将池中对象的内存释放:
1.[pool drain];
2.[pool rlease];//在自动释放池对象本身被释放时,池中的所有对象也会被释放。
相对而言,用release比用autorelease更快一点。这是因为使用autorelease,该对象就呗放入自动释放池,系统自动跟踪每个对象的使用情况,并在释放自动释放池时,释放池中的所有对象。那什么时候释放autorelease中的对象呢?系统不会立即释放autorelease池中对象,而是在一个run loop(运行周期吧!)之后才释放,一半为微秒级。
注意一点的是:autorelease不是系统的垃圾收集(garbage collection,gc)功能。而且ios的oc没有垃圾收集功能。所以不要太依赖于autorelease,而尽量自己管理内存,使用release释放内存,更加有效,而且不会出现内存泄漏。而autorelease池的释放时间不能保证不会出现内存泄漏。
- cocos 2d的工作原理?
操作系统:
- 阻塞态实现?