gpt4 book ai didi

iPhone:内存管理新手问题

转载 作者:行者123 更新时间:2023-12-03 19:14:24 26 4
gpt4 key购买 nike

我是 iPhone 开发新手,在开始使用我的第一个应用程序之前我做了很多阅读。所有这些阅读让我明白正确的内存管理是一件大事,所以我想做正确的事情。

我刚刚完成了我的第一个应用程序并开始测试它是否存在泄漏。有很多:)我更改了代码来解决泄漏问题,然后开始出现 BAD_ACCESS 异常。现在回答我的问题:

  • 我有一个 UITextView 对象,我们将其称为“utv”。我看到它的“文本”字段定义如下:

    @property(非原子,复制)NSString* 文本;

如果我编写以下代码行:

utv.text = [NSString stringWithString:@"Blabla"];

我不应该担心自动释放池释放字符串,对吧?因为它使用副本?

  • 如果它被定义为

    @property(非原子,保留)NSString* 文本;

    我是否仍然不应该担心自动释放池,因为保留将引用计数提高了 1?

  • 我可以知道自动释放池何时释放我使用 stringWithString 而不是 initWithString 创建的字符串吗?

谢谢!伊莱

最佳答案

在我看来,你几乎已经回答了你自己的问题。如果该属性是 retain 属性,则新值将在其合成的 setter 方法中发送一条 retain 消息,因此您不必担心:)

以下是 setter 之间的代码差异,可帮助您了解它们如何处理内存:

// assign 
property = newValue;

// retain
if (property != newValue) {
[property release];
property = [newValue retain];
}

// copy
if (property != newValue) {
[property release];
property = [newValue copy];
}

关于iPhone:内存管理新手问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5597000/

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