Oma*_*ayr 0 memory-leaks memory-management objective-c nsautoreleasepool
我正在尝试创建一个不可变的字符串.我没有使用init,alloc或new初始化它,但仍然内存泄漏,并且它说"类NSCFString的对象0x234b533自动释放,没有池到位 - 只是泄漏"这里是我想要做的
NSMutableString *srn = [NSMutableString stringwithCString:devSID];
// devSID is *char
这留下了泄漏.我也尝试过这个
NSMutableString *srn = [NSMutableString stringwithCString:devSID length:sizeof(devSID)];
但是这也行不通,但是如果我尝试用这样的简单字符串初始化它
NSMutableString *srn = @"this is my string";
它有效,没有任何想法发生什么事情.我没有使用init或alloc,但仍然存在泄漏.如果有人能帮助我解决这个问题,我将不得不承担责任
问候
Umair
泄漏是由您自动释放对象引起的,而没有自动释放池来处理它.当您通过创建自己的线程或仅使用-performSelectorInBackground:withObject:便捷方法执行主线程之外的操作时,通常会发生这种情况.如果你想使用autorelease功能(NSMutableString这里使用类方法暗示),你需要在你将使用它的代码块的开头创建一个自动释放池,并在最后将其排空.换句话说,沿着这些方向:
- (void)myBackgroundThing:(id)whatever
{
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
    NSMutableString *srn = [NSMutableString stringwithCString:devSID];
    // etc...
    [pool release];
}
| 归档时间: | 
 | 
| 查看次数: | 1126 次 | 
| 最近记录: |