gpt4 book ai didi

iphone - 从NSMutableArray返回的自动释放对象

转载 作者:行者123 更新时间:2023-12-01 19:27:52 26 4
gpt4 key购买 nike

当方法返回从中获取的对象并且NSMutableArray是否必须自动释放该对象?检查以下方法。还应该自动释放nil值吗?

-(NSObject*)getElementByID:(NSString*)ID{

for(int i=0;i<[elements count];i++){
NSObject *element = (NSObject*) [elements objectAtIndex:i];

if([element.key isEqualToString:ID]){
return [element autorelease];
}
}

return nil;
}

最佳答案

您不能自动释放element,因为您不是它的所有者(您尚未保留它)。如果您使用allocnewretain获得了它,您将成为它的所有者。由于您获得了名为objectAtIndex:的对象,因此您没有所有权。参见Three Magic Words。在此处调用autorelease将导致崩溃,以至于过分释放。

您的方法名称不正确,并且破坏了KVC。以get开头的方法必须采用将随结果更新的指针。这应该是elementForID:。正如上面提到的三个魔术词,在ObjC中命名对于编写稳定的代码非常重要

附带说明一下,在大多数情况下,传统上使用id而不是NSObject*。它们的含义略有不同,但是id通常是正确的。

关于iphone - 从NSMutableArray返回的自动释放对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5651705/

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