为什么从未分配从 componentsSeparatedByString 分配的内存
Why is the memory allocated from componentsSeparatedByString never being allocated
我有一个 iOS 应用程序,它执行大量计算并使用标准 ARC 进行内存管理。在我 运行 几分钟后,它由于内存不足而崩溃。我检查了 Instruments,大部分内存都被调用 NSString 的 commentsSeparatedByString 的分配占用了。
我试过 运行在自动释放池中使用它,但这并没有多大帮助。由于在我的函数之外没有对该字符串的引用,我很困惑为什么内存没有被自动释放。我还有另一个函数,它与 commentsSeparatedByString.
有同样的问题
代码如下:
- (void) processWorkWithExtraData:(NSData *) extraData
{
@autoreleasepool {
NSString *string = [[NSString alloc] initWithData:extraData encoding:NSUTF8StringEncoding];
NSArray *dataArray = [string componentsSeparatedByString:@","]; // eats up memory like crazy!!!
NSMutableArray *objectArray = [[NSMutableArray alloc] init];
for (int i=0;i<[dataArray count];i += 1)
{
TestObject *p = [[TestObject alloc] initWithFloat:[[dataArray objectAtIndex:i] floatValue]];
[objectArray addObject:p];
}
[self processArray: objectArray]; // just performs math computations on the floats in the objects
}
}
如果有人能告诉我为什么这里不能释放内存,请告诉我。
解决了问题,我以为我在使用 ARC 但我没有 (:
幸好这解决了我的记忆问题。
不好的是它要慢得多(慢 50-70%)。
我想这就是人们为 ARC 的魔力所必须付出的代价。
我有一个 iOS 应用程序,它执行大量计算并使用标准 ARC 进行内存管理。在我 运行 几分钟后,它由于内存不足而崩溃。我检查了 Instruments,大部分内存都被调用 NSString 的 commentsSeparatedByString 的分配占用了。
我试过 运行在自动释放池中使用它,但这并没有多大帮助。由于在我的函数之外没有对该字符串的引用,我很困惑为什么内存没有被自动释放。我还有另一个函数,它与 commentsSeparatedByString.
有同样的问题代码如下:
- (void) processWorkWithExtraData:(NSData *) extraData
{
@autoreleasepool {
NSString *string = [[NSString alloc] initWithData:extraData encoding:NSUTF8StringEncoding];
NSArray *dataArray = [string componentsSeparatedByString:@","]; // eats up memory like crazy!!!
NSMutableArray *objectArray = [[NSMutableArray alloc] init];
for (int i=0;i<[dataArray count];i += 1)
{
TestObject *p = [[TestObject alloc] initWithFloat:[[dataArray objectAtIndex:i] floatValue]];
[objectArray addObject:p];
}
[self processArray: objectArray]; // just performs math computations on the floats in the objects
}
}
如果有人能告诉我为什么这里不能释放内存,请告诉我。
解决了问题,我以为我在使用 ARC 但我没有 (:
幸好这解决了我的记忆问题。
不好的是它要慢得多(慢 50-70%)。
我想这就是人们为 ARC 的魔力所必须付出的代价。