iphone - 这两种在Objective-C中分配内存的方式有什么区别?

标签 iphone objective-c ios memory-management

我对在Objective-C中分配内存的正确方法感到困惑。假设我有一个NSMutableDictionary。有两种初始化方法:

   NSMutableDictionary *alpha = [[NSMutableDictionary alloc] init];

要么
   NSMutableDictionary *alpha = [NSMutableDictionary dictionary];

它们之间有什么区别?我知道第一个为alpha分配内存,但是第二个呢?

建议将以下哪一项作为分配内存的最佳实践?

最佳答案

[NSMutableDictionary dictionary];

与以下内容完全相同:
[[[NSMutableDictionary alloc] init] autorelease];

它只为您节省一些打字时间。只要知道保留对象和自动释放对象之间的区别,就可以使用哪个对象。如果您使用的是ARC,那么您甚至不需要知道这一点。

约定是:
  • 如果您看到初始复制:它是保留的对象。
  • 如果方法名以类名开头(不含框架前缀),则它是一个自动释放的对象。
  • 关于iphone - 这两种在Objective-C中分配内存的方式有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8211075/

    相关文章:

    iphone - UIKit 字符串绘制方法中的错误?

    iphone - 存储所选 ACAccount 以便通过应用程序进一步使用的正确方法是什么?

    ios - 更改自定义 UIView 上的选项卡

    iphone - +[NSNumber numberWithUnsignedInteger :] Literal?

    ios - Swift - Google map 因 'unexpectedly found nil' 错误而崩溃

    iphone - inapp 购买 - 发生未知错误 - 5002 错误代码 - iOS5

    ios - 特定 View 的选项卡手势识别器

    ios - 我在我们的代码 google cast sdk 中传递了 GCKMediaInformation contentID

    ios - prefersLargeTitles 不适用于编程布局

    ios - 截取 ImageView 的屏幕截图