objective-c - Objective C 自动释放

标签 objective-c autorelease

您好,我不完全理解 obj-C 中的 autorelease 函数调用。

@interface A{
id obj;
}

@implementation A

-(void)myMethod;
{
obj = [BaseObj newObj];           //where newObj is a method like :[[[BaseObj alloc]init]autorelease];
}

-(void)anotherMehtod;
{
[obj someMeth];                     //this sometimes gives me EXC_BAD_ACCESS
}

@end

所以为了解决这个问题,我放置了一个保留。现在如果我保留这个对象,我需要手动释放它吗?

最佳答案

如果您是对象的所有者 - 您有责任释放该对象。

如果您至少完成了以下其中一项操作,您就成为对象的所有者:

  • 通过alloc实例化它
  • 通过保留
  • 已通过副本

有关更多详细信息,请阅读Object Ownership and Disposal

关于objective-c - Objective C 自动释放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4907529/

相关文章:

objective-c - @"some text"是否返回一个自动释放或保留 1 个对象?

objective-c - 如何使用 ARC 将所有权从 @autoreleasepool 中移出

objective-c - 如何正确链接 PCL 库以便在 Xcode 中编译的 Objective-C 应用程序中使用?

ios - 创建第一个启动 View Controller

ios - 自动释放关键字

objective-c - 尽管有 ARC,但内存使用量很大

ios - 无法在 Xcode 的项目导航器中拖动和移动文件

iphone - UIview 的特定矩形可以有不同的 alpha..?

ios - 如何使用持续时间为单个 UICollectionView 单元格设置动画

objective-c - 创建一个自动释放池并在不同的上下文中耗尽它