objective-c - 如果将自动释放对象标记为自动释放会发生什么

标签 objective-c ios memory-management autorelease

我的问题听起来可能很愚蠢,但我想知道如果我将自动释放对象标记为自动释放会发生什么。它会被释放两次吗?或者什么都没有发生?例如:

 Obj * obj = [[Obj create] autorelease];

假设 [Obj create] 返回一个自动释放的对象。
如果我添加另一个自动释放,会发生什么?

最佳答案

是的,发送两次autorelease会释放对象两次。如果您的 create 方法返回一个自动释放的对象,而您向它发送另一个 autorelease 消息,您的应用将会崩溃,因为您将释放一个已释放的对象。

话虽如此,你为什么不使用新的Automatic Reference Counting (ARC)呢? ?您不必再担心(自动)释放对象。

关于objective-c - 如果将自动释放对象标记为自动释放会发生什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12486624/

相关文章:

objective-c - iPad 对触摸的响应速度有多快?

ios - 使用自定义 URL 方案的 UIWebView 加载失败

ios - 如何在 iOS 中使用 JSON 发送 POST 数据?

c - 如果将已分配的内存块分割成更小的 block ,我还需要担心内存对齐吗?

ios - 为什么 mmap 在 iOS 上失败?

ios - NSURLSession 将 token 发送回服务器以获取数据

ios - Objective-C 方法名称别名

c - 从函数返回指针

objective-c - 在资源中移动 .lproj 文件

ios - 如何以编程方式更改或更新 NSLayoutConstraint