知识点拾遗!
C++:为什么在模版中不能用虚函数? 模版是泛型编程,编译器会根据参数进行特化生成对应的函数原型,即在编译期确定模版到底属于哪一种。而虚函数在运行期确定到底调用哪个函数,运行只是知道偏移位置为多少。c++接口是如何工作的?static关键字的应用场景有哪些?在成员函数中调用”call this“会怎么样?在成员函数调用”delete this“会怎么样?
MFC:
消息与事件的区别?IOS开发问题:
说明MVC工作原理? 见下一篇博文。
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池的释放时间不能保证不会出现内存泄漏。
操作系统:
阻塞态实现?