标签: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