gpt4 book ai didi

objective-c - 为什么我不必释放这些对象?

转载 作者:行者123 更新时间:2023-12-03 20:21:43 27 4
gpt4 key购买 nike

这是一个示例代码,其中仅释放“string”对象。

NSString *nameOfFile = ... ;
NSError *error;
NSString *string = [[NSString alloc] initWithContentsOfFile:nameOfFile encoding:NSUTF8StringEncoding error:&error];
if (string == nil) {
// handle error
}
[string release];

我明白为什么错误对象没有被释放。这是因为这里的方法没有使用“new”或“alloc”方法创建该错误对象。相反,这个是通过引用返回的,因此 initWithContentsOfFile 方法负责该内存。但是 nameOfFile 对象呢?他们为什么不释放它?它不是通过引用返回的...?

最佳答案

类似于为什么不需要释放error ,你也不需要释放nameOfFile 。在 Objective-C 中,如果将字符串声明为 NSString *temp = @"Hello"它被视为字符串常量,不需要释放。内存引用计数为零,因此不需要释放。

关于objective-c - 为什么我不必释放这些对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/789761/

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