在学习iOS的MRC管理中,遇到的retain引起的循环问题、NSString问题
2015-07-14 22:09
239 查看
1.retain循环问题引起:
1)A类中有B的实例对象,并且使用了retain.
2) B类中有A的实例对象,也使用了retain。
3)A和B在程序中,并互相赋值。
解决办法:在循环的一端类中用assgin,一端用retain. 注意内存泄漏问题.
2.在NSString的内存管理中,比较特殊的是通过不同的方法建立的变量,存储的地方不同。
一般的:stringWithString: 、initWithString: 、@“xxx” 、init等建立在常量区(就是在内存的数据区。)
使用:stringWithFormat: 、 initWithFormat: 是建立在堆区。
3.autorelease 和autoreleasepool
什么是autorelease?
autorelease是暂存对象,通常是和自动释放池一起使用,当调用autorelease的对象,自动加入自动释放池中,当自动释放池销毁时,对象也会随之销毁。
什么是autoreleasepool?
autoreleasepool也叫(自动释放池),是栈的结构存在,所以要有“先进后出”的原则。在加入自动释放池的对象后,自动释放池的可以帮助我们管理对象,在最后的的时候会向每
个对象发送一个release.
使用autoreleasepool的使用
1⃣在自动释放池代码块内的对象,使用autorelease来加入池中。
2⃣在自动释放池外的对象要想加入,在池中的调用autorelease来加入.
3⃣在创建对象时,可以直接调用autorelease来加入。 (autorelease返回值还是创建对象时的类型。引用autorelease的计数器不会变)
使用autoreleasepool的注意
1⃣尽量不要将较大的的数据对象存在池中操作,会延迟对象的释放时间。
2⃣使用较小的数据对象时,方便我们管理,
1)A类中有B的实例对象,并且使用了retain.
2) B类中有A的实例对象,也使用了retain。
3)A和B在程序中,并互相赋值。
解决办法:在循环的一端类中用assgin,一端用retain. 注意内存泄漏问题.
2.在NSString的内存管理中,比较特殊的是通过不同的方法建立的变量,存储的地方不同。
一般的:stringWithString: 、initWithString: 、@“xxx” 、init等建立在常量区(就是在内存的数据区。)
使用:stringWithFormat: 、 initWithFormat: 是建立在堆区。
3.autorelease 和autoreleasepool
什么是autorelease?
autorelease是暂存对象,通常是和自动释放池一起使用,当调用autorelease的对象,自动加入自动释放池中,当自动释放池销毁时,对象也会随之销毁。
什么是autoreleasepool?
autoreleasepool也叫(自动释放池),是栈的结构存在,所以要有“先进后出”的原则。在加入自动释放池的对象后,自动释放池的可以帮助我们管理对象,在最后的的时候会向每
个对象发送一个release.
使用autoreleasepool的使用
1⃣在自动释放池代码块内的对象,使用autorelease来加入池中。
2⃣在自动释放池外的对象要想加入,在池中的调用autorelease来加入.
3⃣在创建对象时,可以直接调用autorelease来加入。 (autorelease返回值还是创建对象时的类型。引用autorelease的计数器不会变)
使用autoreleasepool的注意
1⃣尽量不要将较大的的数据对象存在池中操作,会延迟对象的释放时间。
2⃣使用较小的数据对象时,方便我们管理,
相关文章推荐
- 关于IOS中GCD,NSThread和NSOperation的一些总结
- iOS --- 解决RESideMenu中所有界面都能侧滑的问题
- 深度学习之在iOS上运行CNN
- iOS异步加载图片
- BIOS相关
- ios字符串计算高度总结
- ios字符串计算高度总结
- iOS 使用xib创建cell的两种初始化方式
- iOS 开源库
- ios 加水印
- iOS 之播放系统声音
- ios如何实现推送通知
- 在iOS上增加手势锁屏、解锁功能
- 联想B490 进入BIOS
- <转>iOS9 Day-by-Day:iOS开发者必须了解的iOS 9新技术与API
- iOS 开发中手机号 价格金额 有效性判断
- iOS开发-MJRefresh 上下拉刷新快速集成
- 【iOS开发系列】NSSet & NSIndexSet
- IOStream的用法总结
- iOS中tabBar的基础介绍和用法