1

我在两个类之间传递了几个对象,比如从 A 到 B 的字符串,方法是将字符串分配给 B 类中的字符串属性,该属性的类型为保留。我是否必须在其 dealloc 方法中释放 B 类中的此字符串属性?

4

3 回答 3

2

如果属性类型是retain,那么它会将retain count 增加1,并且要释放一个对象,您需要将其retain count 减少到0。因此,如果您不释放它会导致内存泄漏。Infect 是保留属性的目的,它将所有权授予该类实现属性的实例。

于 2013-02-21T08:55:02.953 回答
1

正如您所说dealloc,我将您的问题视为非 ARC。

将字符串分配给 B 类中的字符串属性,该属性的类型为保留。我是否必须在 B 类中释放此字符串属性

不。

只有在保留、复制、分配时才需要释放。

此外,NSString 应该分配而不是保留。

于 2013-02-21T08:46:27.317 回答
0

是的,您需要释放保留的对象。在 dealloc 方法中:

- (void)dealloc
{
    if (_yourString)
    {
        [_yourString release];
    }

    ...

    [super dealloc];
}
于 2013-02-21T08:50:20.383 回答