2013-02-21 69 views
1

通过将字符串分配给类B中的字符串属性(类型为retain),我在两个类之间传递了几个对象,称为从A到B的字符串。我需要在dealloc方法中的B类中释放这个字符串属性吗?在Obj中的对象之间传递对象C

+3

你使用ARC吗? – 2013-02-21 08:44:15

+0

是的,你必须在非ARC。你应该考虑使用复制而不是保留字符串,在这种情况下你仍然必须释放它。 – 2013-02-21 08:44:29

回答

1

正如您在谈论dealloc,我将您的问题视为非ARC。

将字符串赋值给类B中的字符串属性,其类型为 类型为retain。我是否必须在B类中释放此字符串属性

否。

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

此外,NSString应分配不保留。

+1

保留或分配属性取决于他的任务。 – zakhej 2013-02-21 08:58:11

+0

如果我在后面的代码中根本不使用该属性,则取决于运行时条件,以便该属性将为零直到结束......如果在释放dealloc中的某些内容之前应检查属性是否为零? – 2013-02-21 09:13:20

+0

,因为你正在分配,所以需要担心泄漏。 – 2013-02-21 09:15:43

0

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

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

    ... 

    [super dealloc]; 
} 
2

如果属性类型为保留,比将增加1保留计数,并释放你需要减少其保留计数为0 所以,如果你不会释放对象它会导致内存泄漏。 感染这是保留财产的目的,它赋予该类实施财产的所有权。

+0

当我们不确定源是否保留对象时,我们使用retain属性。 – 2013-02-21 08:57:07