分配和释放VS.自动释放。为什么以及何时?

时间:2011-03-23 06:55:58

标签: objective-c ios memory-management allocation autorelease

我看到许多人正在分配和发布NSStrings。

据我所知,好处是字符串是立即释放而不是autoRelease。

我的问题:

  1. 是否有效,我是否应该总是喜欢在autoRelease上分配和发布?
  2. 什么是更广泛的 - 立即分配和释放然后再分配 OR 分配,使用和释放dealloc。
  3. 将会感激任何解释。

    由于

    SHANI

2 个答案:

答案 0 :(得分:1)

  1. 在大多数情况下,这无关紧要。我认为你应该使用autorelease,因为它使代码更简单,@“string”快捷方式非常优雅。
  2. 基本区别在于发布时的时间点。就像我说的,在大多数情况下,它没有任何区别。如果您想更密切地控制发布时间,那么您也可以通过滚动自己的NSAutoreleasePool池来自动发布。

答案 1 :(得分:1)

我看不出你如何重用NSString。重新使用NSMutableString实例可能会稍微快一些,但您不会看到差异。注重代码的简单性和可维护性。

我认为你的问题是使用[[NSString alloc] init]或[NSString string]。只要性能不是问题,总是选择最简单的一个。这将是自动释放的版本,因为您不需要自己发布它。