标签:
一.为什么要进行内存管理
四.内存管理的种类。
1.手动内存管理:M(manually)R (reference)C (couting)
2系统自动管理:A(automatic )R (reference)C (couting)
在最新的Xcode中,默认内存管理管理方式是ARC想切换成MRC需要对其进行配置,如下:
五。引用计数器的介绍
对象在创建时,内部会自动创建一个引用计数器retainCount,当retainCount=0时,系统会回收当前对象,retainCount是唯一判断标记。release会-1,retain会+1,retain后返回的是自己self指针。
<pre name="code" class="objc">#import <Foundation/Foundation.h>
@interface person : NSObject
@end
@implementation person
@end
int main(int argc, const char * argv[]) {
@autoreleasepool {
/*
引用计数器的常见操作
给对象发送一条retain消息, 可以使引用计数器值+1(retain方法返回对象本身)
给对象发送一条release消息, 可以使引用计数器值-1
给对象发送retainCount消息, 可以获得当前的引用计数器值(通过%ld输出查看)
需要注意的是: release并不代表销毁\回收对象, 仅仅是计数器-1
注意:我们只能通过操作对象计数器,间接控制对象的释放与否。
*/
//创建一个person 类的对象 p.
person * p = [[person alloc]init]; // 对象创建后引用计数器就会加1。 <pre name="code" class="objc" style="font-size:18px;">
[p release]; // p 被释放掉了 p = nil; //将 指针指向nil NSLog(@"%lu", [p retainCount]); //空对象调任何方法结果都是 0 // NSLog(@"Hello, World!"); } return 0;}
版权声明:本文为博主原创文章,未经博主允许不得转载。
标签:
原文地址:http://blog.csdn.net/wanghy_ios/article/details/47684875