问题标签 [autorelease]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
objective-c - 返回值时在 Objective-C 应用程序中自动释放
我阅读了 Objective-C 语言的内存管理指南,但我仍然有这个疑问,即使在阅读了很多次之后。
假设我想返回一个我刚刚在这样的对象的方法中创建的对象:
我可以这样做,但根据所有权政策是不正确的。该指南指出,正确的解决方案是:
因为,当我自动发布时,我不再是所有者。我的问题是:NSString 什么时候会真正被释放和释放?最后一个初始化的池什么时候释放?这意味着,如果我不创建池,这个对象将在应用程序关闭时释放(xcode 默认创建的池在最后释放)。这个对吗?这同样适用于我未分配的对象,例如:
? 如果我不创建池释放到别处,是在应用程序结束时释放xcode创建的池时释放?感谢您的任何澄清。
objective-c - 释放先前释放的对象问题
我有一个函数用于从 csv 文件中读取一行。但我得到了先前释放对象错误的释放,或者有时它是“双重释放”错误。
我尝试根据错误内存地址追踪导致此错误的对象,但我没有这样做。
这是代码:
以下代码显示了我如何使用上面的类:
如果我运行代码并完成 csv 解析,当它尝试释放自动释放池时,应用程序的主要功能会给我双重释放错误。“ * __NSAutoreleaseFreedObject():释放先前释放的对象 (0x6a26050) 被忽略”
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; int retVal = UIApplicationMain(argc, argv, nil, nil);
有人可以帮我解决这个问题吗?谢谢![池释放];
objective-c - 泄漏或崩溃 - 自动释放和释放之间的区别
我有一个理解问题。给出了这个方法:
如果我取消注释release
应用程序会崩溃并说它无法访问已发布的对象。
通过 not release
ingresult
字符串 Instruments 会报告泄漏 (NSPlaceholderString)。
我可以autorelease
在同一行上alloc
解决问题(我目前在我的应用程序中这样做)。
如果我理解正确,stringByAppendingString:
应该创建一个自动释放的对象,以便可以释放“旧”结果。然后方法arrayWithObject:
应该copy
将对象放入一个数组中。所以我的想法是在将字符串复制到数组后释放它。
我的知识是否遗漏了什么或有什么问题?
iphone - 什么时候发布 UIImage?
我使用以下代码绘制子图像
其中getSubImage
定义如下
代码是否正确?
“CGImageRelease”imref 是否安全?
有子“CGImageRetained”imref 吗?
我应该释放 subIm 吗(如果我这样做会出错)?
subIm 是否包含在自动释放池中,如果是,我怎么知道?
一般来说,可以检查一个对象是否包含在自动释放池中(出于调试目的)?
ios4 - 按下按钮后必须每秒播放短声时如何释放 AVAudioPlayer 对象
我有以下问题让我发疯。在用户按下按钮后,我的应用程序必须每秒播放指定次数(例如 5 次)的滴答声。
我用这个:
for (int w=1; w<=5; w++) {
[NSThread detachNewThreadSelector:@selector(tic) toTarget:self withObject:nil];
[NSThread sleepForTimeInterval:1.0];
}
在哪里:
- (void)tic {
NSAutoreleasePool *ticPool = [[NSAutoreleasePool alloc] init];
player_tic = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath: [[NSBundle mainBundle] pathForResource:@"tick" ofType:@"aif"]] error:nil];
[player_tic setDelegate:self];
[player_tic play];
[ticPool drain];
}
和:
- (void) audioPlayerDidFinishPlaying: (AVAudioPlayer *)player_tic successfully:(BOOL)flag {
NSLog(@"Audio finished playing.");
[player_tic release];
}
一切似乎都奏效了。我的问题是对象最后一起释放。
我需要在每次播放声音后立即释放相关的“player_tic”。
其他信息:
以 .m 为单位:
@synthesize player_tic;
在.h中:
@interface myController : UIViewController {
...
AVAudioPlayer *player_tic;
}
@property (nonatomic, retain) AVAudioPlayer *player_tic;
最重要的是,我在编译中有这个警告:
local declaration of 'player_tic' hides instance variable
请帮我!
非常感谢您提前。
——卡罗
objective-c - Objective-C:内存泄漏与自动释放的多重分配?
如果我做以下事情,这会导致内存泄漏吗?
iphone - 与 iPhone 自动释放使用相关的问题
有人可以帮助我了解在以下情况下如何完成和处理分配和内存管理。我正在给出一个 Psuedo 代码示例,令我困扰的问题如下内联:
objective-c - 目标 C:如何在这种情况下释放代表
我正在使用自定义委托对象在请求完成后执行一些清理任务。ASIHTTPRequest 不保留委托,因此我无法自动释放它们。现在这就是我分配和释放代表的方式。
应用代理
我的委托.m
有一个更好的方法吗?让代表自己释放似乎很难看,Xcode 的构建和分析对我正在做的事情感到不舒服。
iphone - iPhone & Mailcore 内存泄漏问题
在我目前正在使用的应用程序中,我使用 Mailcore ( http://www.mronge.com/m/MailCore/API/ ) 来处理邮件服务器操作。我试图在后台通过 SMTP 连接发送消息。问题是,Leaks 告诉我,每次发送消息时都会发生相当多的内存泄漏。我试图弄清楚这是我的错还是 Mailcore 的错。这是代码:
从我的视图控制器:
来自我的应用委托:
objective-c - 在一个线程中创建并在objective-C中传递给另一个线程的自动释放对象
我有一个对象的方法,它创建对象,然后将其传递给另一个线程中另一个对象的方法,如下所示:
在方法中,我立即保留对象,假设它会被创建者以某种方式释放。我的问题是:如何让 MyClass 正确释放该对象?这是正确的方法吗?
我的解决方案是在方法中手动释放对象。无论如何,我看到泄漏分析器仍然将其识别为泄漏,并且似乎不是 Apple 推荐的,因为所有者有责任释放该对象。
你能解释一下处理这种情况的正确方法吗?谢谢!