iphone - iPhone 上使用 obj-c 时,自动释放所有内容而不是释放有什么坏处吗?

标签 iphone objective-c

对于 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/

相关文章:

ios - 存储不同 NSData 时 Realm 文件大小差异过大

iphone - UIButton 标题不出现或被剪切 - 仅最底部的标签

objective-c - 从用户数据在 Objective C/C 中创建 Lua 全局变量

iphone - 最佳实践,即发即弃的异步类?

ios - 创建动画图的最佳方法

iphone - 使用 Mvvmcross 和 Xibs

ios - 标签栏图标显示不正确

iphone - 转换一个描边的 CAShapeLayer

ios - 使用 NEVPNManager 如何设置 SharedSecretReference

ios - 单击 + Swift 预加载 UISearchBar 显示结果