标签:objective-c ios 内存管理
一 基础原理@interface Person
@property int m_nAge;
@end
@implementation Person
- (void)dealloc
{
NSLog(@"dealloc");// 验证对象是否被回收
[super dealloc];
}
@end
#import <Foundation/Foundation.h>
int main()
{
// 默认为1
Person* p = [[Person] init];
NSUInteger count = [p retainCount];
NSLog(@"retainCount == %ld", count);
// +1,变为2,retain返回值为对象本身
[p retain];
// -1,变为1
[p release];
// -1,变为0,被回收,被回收之后p变为野指针,指向的对象变为僵死对象
// 不能对僵死对象发送任何消息,包括retain
[p release];
// 报错:EXC_BAD_ACCESS
// p.m_nAge = 10
// 防止野指针错误,因为给nil对象发送消息不报错,只有警告
p = nil;
// 开启僵尸检查之后才报错:setXXX,message sent to deallocated instance
p.m_nAge = 10
return 0;
}
标签:objective-c ios 内存管理
原文地址:http://blog.csdn.net/xufeng0991/article/details/43268049