如果我有一个带有“保留”的IBOutlet,为什么我必须清理内存,但是当我有一个带有“assign”时却不能清理内存?

时间:2009-04-24 09:46:52

标签: objective-c iphone

示例:

@property (..., assign)

那里,我没有在dealloc方法中做任何清理工作。但是当我有一个

@property (..., retain)

然后我会这样做。

我从互联网的某个地方获得了这个。不记得该网站。好吧,我知道编译器指令中的retain-keyword会使保留计数+1,但实际上我认为我错过了assign和retain的深层次差异。

1 个答案:

答案 0 :(得分:2)

Assign只会复制指针,不会向对象发送retain消息。因此,既然你没有保留它,你就不必释放它。

如果保留,正如您所说,它将向对象发送retain消息,增加其保留计数,因此您负责在对象发送时向该对象发送release消息(在你的dealloc)。