【问题标题】:allocating and releasing VS. autoRelease. why and when?分配和释放 VS。自动释放。为什么和何时?
【发布时间】:2011-03-23 06:55:58
【问题描述】:
我看到很多人都在分配和释放 NSStrings。
我知道这样做的好处是字符串会立即释放,而不是通过 autoRelease。
我的问题:
- 它有效吗?我应该总是更喜欢在 autoRelease 上分配和释放吗?
- 更广泛的方法 - 立即分配和释放,然后再次分配或在 dealloc 中分配、使用和释放。
将不胜感激。
谢谢
沙尼
【问题讨论】:
标签:
objective-c
ios
memory-management
allocation
autorelease
【解决方案1】:
- 在大多数情况下,这无关紧要。我认为你应该使用自动释放,因为它使代码更简单,@"string" 快捷方式非常优雅。
- 基本区别在于发布发生的时间点。就像我说的,在大多数情况下,它没有任何区别。如果您想更紧密地控制发布时间,那么您也可以通过滚动自己的
NSAutoreleasePool 池来实现自动发布。
【解决方案2】:
我不明白你如何重用一个 NSString。重用 NSMutableString 实例可能会比重新创建它稍快一些,但您不会看到差异。专注于代码的简单性和可维护性。
我认为您的问题是使用 [[NSString alloc] init] 还是 [NSString string]。只要性能不是问题,总是选择最简单的。那将是自动发布的版本,因为您不需要自己发布它。