MRC个人总结
关键字 alloc,new, retain,copy, release, autorelease, dealloc.
一、内存管理的规则
1)谁创建,谁释放
#import <Foundation/Foundation.h>
#import "Person.h"
int main(int argc, const char * argv[]) {
Person *p = [Person new];
[p run];
[p release];
return 0;
}
2)苹果的手动内存管理采用引用计数器管理
当一个对象创建的时候引用计数器retainCount值为1 如果需要对这个对象进行持有则需要用retain方法
#import <Foundation/Foundation.h>
#import "Person.h"
int main(int argc, const char * argv[]) {
Person *p = [Person new];
[p run];
NSLog(@"retainCount = %lu", [p retainCount]); //retainCount 值为1
[p retain]; // retainCount 值为2
NSLog(@"retainCount = %lu", [p retainCount]);
[p release];
NSLog(@"retainCount = %lu", [p retainCount]);// retainCount 值为1;
[p release];//retainCount = 0 调用dealloc方法释放内存
return 0;
}
下面是Person类重写了NSObject dealloc方法
注意重写时一定要调用一下[super dealloc]方法
#import "Person.h"
@implementation Person
- (void)run {
NSLog(@"人在跑");
}
- (void)dealloc {
NSLog(@"对象被释放");
[super dealloc];
}
@end