gpt4 book ai didi

iphone - 发布对象是否必要?

转载 作者:行者123 更新时间:2023-12-01 17:59:01 28 4
gpt4 key购买 nike

我被困在内存管理方面。请帮我解决我的问题。

NSMutableArray *array = [[NSMutableArray alloc]init];
Object *obj = [[Object alloc]init];
[array addObject: obj];
[obj release];

是否需要在上述代码中释放 obj

最佳答案

您的问题的答案是:是的,如果您不使用ARC。如果要编写新的应用程序,则应认真考虑使用ARC。

Objective-C中的容器对象始终会平衡其保留/释放计数。换句话说,您应该始终像对待未添加对象一样管理内存,并确保您自己的代码平衡了其保留计数。请注意,这是一个约定,不是强制性的,但是您始终可以信任内置类来遵循此约定。另外,您可以执行静态分析(XCode中的Cmd + Shift + B)来检测这些问题。它将在上面的代码中指出。

在上述情况下,正确的代码为:

NSMutableArray *array = [[NSMutableArray alloc]init];
Object *obj = [[[Object alloc]init]autorelease];
[array addObject: obj];

要么
NSMutableArray *array = [[NSMutableArray alloc]init];
Object *obj = [[Object alloc]init];
[array addObject: obj];
[obj release];

因为 NSMutableArray(及其表亲)将保留对象,只要它在集合中即可。

关于iphone - 发布对象是否必要?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12912425/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com