- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
好吧,假设我有一个如下所示的函数:
-(NSNumber *)calculate{
NSNumber *myNum = [[[NSNumber alloc]initWithInt:5] autorelease];
return myNum;
}
myNum 何时发布?每当我调用计算时,myNum 都会被创建并添加到堆栈中吗?
还说我有一个属性,例如:
@property (nonatomic, retain) NSMutableArray *inputsArr;
我将其合成为:
@synthesize inputsArr = _inputsArr;
我在 mu 函数之一的代码中分配并启动它..我该如何释放这段内存? CoaCoa 内存管理的任何指南...我只能找到真正令人困惑或明显的指南..提前致谢
最佳答案
自动释放池是线程本地堆栈——您可以压入和弹出它们。当池被销毁时,延迟的release
消息将被发送到对象。
考虑一下:
NSAutoreleasePool * pool = [NSAutoreleasePool new];
NSNumber * n = [NSNumber numberWithDouble:1.0/17.0]; << n is autoreleased
[n self]; << OK!
[pool release]; << n is messaged release
[n self]; << BAM!
因此,“何时”实际上取决于自动释放池的构建方式 - 但始终可以确保您的对象比本地池的生命周期长,因此这永远不是限制:
NSAutoreleasePool * pool = [NSAutoreleasePool new];
NSNumber * n = [NSNumber numberWithDouble:1.0/17.0]; << n is autoreleased
[n self]; << OK!
[n retain];
[pool release]; << n is messaged release
[n self]; << OK!
[n release];
[n self]; << BAM!
以上是你应该依赖的。在某些现实世界的情况下,一个对象可能仍然存在,您会期望“BAM!”,但您永远不应该依赖“好吧,它应该已经被销毁,但它似乎工作正常” .
关于cocoa - NSautorelease 什么时候发布这个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9204803/
我在控制台中收到此错误消息: *** _NSAutoreleaseNoPool(): Object 0x10d2e0 of class NSPathStore2 autoreleased wit
好吧,假设我有一个如下所示的函数: -(NSNumber *)calculate{ NSNumber *myNum = [[[NSNumber alloc]initWithInt:5] autor
我尝试使用 cygwin 和 THEOS 构建一个 ios 应用程序 教程: https://sites.google.com/site/theostutorials/home 经过几次尝试,我成功地
我对 NSAutorelease 池的工作原理有一个大致的了解。 我们在其中有自动释放的对象,并且在调用 drain 方法时。 检查池中保留计数为 +1 的对象,并因此被释放。 但我不确定的是。 我们
我是一名优秀的程序员,十分优秀!