OC中的内存管理

在OC的编程中内存是自动的释放的,当我们创建一个对象,不使用这个对象的时候,系统就会自动的将这个内存释放,有的时候我们需要手动的将内存释放,那么我们在OC中怎样手动的将内存释放.首先要做的是讲Objecttive-C Automatic Reference Counting发值设置为NO,其实也就是将系统自带的内存释放机制取消了。

在这个文章中我们通过一个例子来演示一下这个怎样手动的释放内存:

首先我们需要做的是创建一个类:

#import <Foundation/Foundation.h>
@interface Person : NSObject
//括号里面的nonatomic是表示原子锁操作,是防止在不同进程中,对同一个变量的同时的访问
//这样做提高的效率,具体内容可以参考:http://blog.csdn.net/cubepeng/article/details/7735962
@property(nonatomic,copy)NSString *pname;
@property(nonatomic,assign)int age;
//@property(nonatomic,strong) Car *car;

-(void)dealloc;

@end
/*
 NSString   copy
 int assign
 引用的类型 strong
 */

其实释放内存的重要的环节还是调用函数dealloc这个函数,来实现内存的释放。

在实现文件中这个函数是怎样的定义的:

-(void)dealloc

{

     [super dealloc];

     NSLog(@"内存被释放");

}

在主函数中调用该函数,并且释放掉内存;

#import <Foundation/Foundation.h>
#import "Person.h"

int main(int argc, const char * argv[]) {
    @autoreleasepool {
       Person *person = [[Person alloc] init];     //在这个地方是创建一个对象并且给这个对象进行初始化

NSLog(@"%ld",person.retainCount);//所有的对象中都有一个函数,是表示在这个对象引用之后,如果是内存还没有被释放这样函数ratainCount的返回值是1
       [person retain];        //这个是调用的函数ratain是当对象调用这个函数的是的对象的引用的次数就会增加1
        NSLog(@"%ld",person.retainCount);
       [person dealloc];       //当对象调用这个函数时候,函数的调用的次数就会减少1

        NSLog(@"%ld",person.retainCount);
      }
    return 0;
}

//通过对数字变化的观察我们可以很明显的看到对象被引用或者是被释放,如果我们一开始不将

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值