对于 iPhone 上的 obj-c,自动释放所有内容而不是释放有什么坏处吗?
例如,这段代码:
NSString *recipe = [[NSString alloc] initWithUTF8String:sqlite3_column_text(dbps,0)];
[arr addObject:recipe];
[recipe release];
当我创建配方时,可以通过自动释放配方 nsstring 将其缩短为两行:
NSString *recipe = [[[NSString alloc] initWithUTF8String:sqlite3_column_text(dbps,0)] autorelease];
[arr addObject:recipe];
这有什么缺点吗?我发现它更适合我的编码风格。谢谢大家。
最佳答案
缺点是对象会稍后释放。在大多数情况下,这不会成为问题,但如果您在紧密循环中分配和自动释放数千个对象,这种开销可能会增加到影响性能的程度,甚至导致您的应用程序内存不足。
无论如何,您可能想要使用:
[NSString stringWithUTF8String:sqlite3_column_text(dbps,0)];
而不是
[[[NSString alloc] initWithUTF8String:sqlite3_column_text(dbps,0)] autorelease];
关于iphone - iPhone 上使用 obj-c 时,自动释放所有内容而不是释放有什么坏处吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3186500/