首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >释放在目标c中分配或初始化的对象?

释放在目标c中分配或初始化的对象?
EN

Stack Overflow用户
提问于 2022-11-21 12:22:34
回答 1查看 23关注 0票数 0

内存管理要求我们必须使用release创建一个用alloc创建的对象。考虑一下这个典型的示例代码。

代码语言:javascript
复制
XYZClass *obj = [[XYZClass alloc] init];
// use obj
[obj release];

但在本例中,obj可能不是从alloc返回的对象,正如苹果的文档所述

注意: init可以返回一个与alloc创建的对象不同的对象,所以最好的做法是嵌套调用,如下所示。

因此,这个典型的示例似乎释放了从init返回的对象,破坏了内存管理规则,而不是释放从alloc返回的对象,从而进一步破坏了规则。这个典型的例子是如何有效的?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-11-21 13:13:31

首先,您的代码使用手动内存管理,这是我不推荐的,因为Xcode 4.2用于OS v10.6和v10.7 (64位应用程序)以及iOS 4和iOS,我们支持自动引用计数(ARC)是一个编译器特性,它为objects对象提供自动内存管理。请参见过渡到ARC发行说明

ARC不需要记住何时使用retain、,而是评估对象的生存期需求,并在编译时自动插入适当的内存管理调用。编译器还为您生成适当的dealloc方法。

关于您的具体问题,init可能返回不同的对象这一事实并不会破坏内存管理,因为不同的对象将使用相同的分配。对于初始化器可能返回内部子类的类集群来说,这是非常常见的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74518860

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档