变量 内存 分配 ios iphone

本文详细探讨了iOS程序开发中内存分配的关键概念,包括如何正确使用alloc、init和autorelease方法,以及在对象赋值时应注意的问题,特别是对于NSObjects类的正确管理。通过实例解析,帮助开发者避免常见的内存泄露错误。

转载说明(谢谢)

http://blog.csdn.net/a21064346/article/details/7785535

点击打开链接


对于 内存分配的掌握,对于一个ios程序开发来说很重要

在很多时候,我们看到一些错误都不知道为何出错,什么都是按照规范书写。


在这个时候建议你去 检查下你的 对象副职,你会又意想不到的收获。


下面说一点关于内存分配的 简单例子

NSString *text = [[[NSStringalloc] init]autorelease];

     NSString *a = nil;

    NSString *b = [NSStringstring];

     

     NSString *text1 = [[[NSString alloc] init] autorelease];

     NSString *a1 = nil;

    NSString *b1 = [NSStringstring];


设置为nil时,a系列的变量  指针里装载的 东西 是  你所要副职变量的 地址内存

而另外两种写法,其实都会生成一个内存,只不过这个内存会在 该方法结束调用的时候,被系统release掉。不需要自己去管理释放

但是我想说明的是,如果这里的变量 不是一个简单的string,而是一个 又 成员变量 的nsobject时,你得注意:

   内部的成员变量不一定是 原本的属性。如:nsmutablearray ,当它作为你的成员变量时,你进行了如下操作:

1 init   NSobject类。并将内部所有成员变量 [NSMutableArray alloc] init  

2给成员变量副职    NSMutableArray     =  NSArray

3 在使用的时候,希望在给原有副职 的 NSMutableArray  添加新的 Object  使用方法 addobject (id)

4 查看 是否成功给 NSMutable 添加新id


这样做,编译器会报错:不能 给不可变的数组,进行添加操作。


在代码写了很多的时候,你会发现 自己没错啊。我这个是 可变数组,怎么不能正常使用 add方法呢。  

因为,在给自定义的NSObject类定义的时候,你采用的是 alloc 初始化变量。并且 副了一个 NSarray的内存地址给你的NSMutableArray使用

所以,你不能添加新的 obj给你的Array中。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值