Chr*_*ris 2 iphone objective-c
使用iPhone上的obj-c,自动释放所有内容而不是释放是否有任何伤害?
例如,这段代码:
NSString *recipe = [[NSString alloc] initWithUTF8String:sqlite3_column_text(dbps,0)];
[arr addObject:recipe];
[recipe release];
Run Code Online (Sandbox Code Playgroud)
当我创建它时,可以通过自动释放配方nsstring缩短为两行:
NSString *recipe = [[[NSString alloc] initWithUTF8String:sqlite3_column_text(dbps,0)] autorelease];
[arr addObject:recipe];
Run Code Online (Sandbox Code Playgroud)
这有什么缺点吗?我发现它更适合我的编码风格.谢谢大家.
缺点是对象稍后会被释放.在大多数情况下,这不会是一个问题,但如果您在紧密循环中分配和自动释放数千个对象,这种开销可能会增加到影响性能甚至导致应用程序内存不足的程度.
无论如何,您可能想要使用:
[NSString stringWithUTF8String:sqlite3_column_text(dbps,0)];
Run Code Online (Sandbox Code Playgroud)
代替
[[[NSString alloc] initWithUTF8String:sqlite3_column_text(dbps,0)] autorelease];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
155 次 |
| 最近记录: |