【问题标题】:Autorelease in Objective C and Convenience MethodsObjective C 和便捷方法中的自动释放
【发布时间】:2013-07-21 13:21:25
【问题描述】:

所以我对何时自动释放对象有点困惑。到目前为止,我明白,如果我不是“所有者”,它会这样做。但在哪些情况下我不是所有者?当我使用便捷方法创建对象时?我不明白所有这些便捷方法的来源以及您将如何创建它们。

【问题讨论】:

标签: objective-c convenience-methods


【解决方案1】:

您通常使用alloc + 初始化器来创建不会自动释放的对象。相反,您使用静态方法来获取自动释放的实例。示例:

NSString* string1;
NSString* string2;
@autoreleasepool{
    string1= [NSString stringWithString: @"Hello"];
    string2= [[NSString alloc] initWithString: @"Hello"];
}
// string1 isn't alive, string2 is alive

您还必须注意单例。在单例的情况下,它们不会自动释放,但您不拥有它们。通常你可以从方法的名称中了解到它是否返回单例(例如:sharedInstancemainThread 之类的东西)。

【讨论】:

猜你喜欢
  • 2014-03-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多