gpt4 book ai didi

objective-c - 为什么我必须创建一个对象并将其分配给 Objective C 中的属性?

转载 作者:行者123 更新时间:2023-11-28 18:26:42 25 4
gpt4 key购买 nike

所以我有这段代码,但它不起作用:

for (NSDictionary *item in data){
[self.resultsArray addObject:item];
}

self.resultsArray 为零。但后来我把它改成这样:

NSMutableArray *myDataArray = [[NSMutableArray alloc] init];

for (NSDictionary *item in data){
[myDataArray addObject:item];
}

self.resultsArray = myDataArray;
[myDataArray release];

现在成功了。 self.resultsArray 现已填充

所以我是 Objective C 的初学者,我想知道为什么我不能直接在属性的 addObject 中使用它。为什么我必须创建另一个可变数组、填充它、将其分配给 resultsArray 属性并释放我创建的可变数组?

提前致谢!

编辑:另外,在我一直在写的很多书中,这已经做了很多。

最佳答案

简单的回答

在向其添加对象之前,您没有初始化 self.resultArray。它只是一个指向值为 nil 的指针,直到您alloc 它。

self.resultArray = [[NSMutableArray alloc] init]; 在向其添加对象之前将解决问题。

但是,这种分配方式会造成内存泄漏,因此在书籍和示例中均未显示。如果 self.resultArray 属性被标记为 retain 并且通过调用 alloc 它将被保留 2 次,则可能发生内存泄漏。

关于objective-c - 为什么我必须创建一个对象并将其分配给 Objective C 中的属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7169770/

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