a、alloc retain new copy 会让计数器加1 ,release 会让计数器减1。
b、dealloc 方法用于销毁对象,收回内存。其和 alloc 分配内存对应。dealloc方法不能被直接调用,而是由系统在销毁对象时调用。retain 和 release 对应。
c、影响引用计数的方法: + alloc -retain -copy -release -autorelease
d.自动释放池与自动管理不一样。
e.dealloc不能直接调用,而是由系统在销毁对象时使用。
f.当一个对象的引用计数器为0时,那么它将被销毁,内存被系统回收
g. MRC与ARC选择需要ARC的文件双击,并在输入框中输入:-fobjc-arc,如果不要ARC则输入:-fno-objc-arc
#import <Foundation/Foundation.h>
#import "Student.h"
int main(int argc, const char * argv[]) {
Student *s=[[Studentalloc]init];
[s retain];
NSAutoreleasePool *pool = [[NSAutoreleasePoolalloc] init];//创建一个自动释放池
//如果想要给一个对象发送autorelease消息,必须将下面的代码写在创建自动释放池和销毁池之间
[s autorelease];
//只有当自动释放池release时,才会将池里面的对象进行一次release
[pool release];
NSLog(@"%zi",s.retainCount);
[s retain];
//自动释放池,当超出大括号之后,其包含的对象自动release,发送autorelease消息的代码需要放到大括号里
@autoreleasepool{
[s autorelease];
}
NSLog(@"%zi",s.retainCount);
return 0;
}