当您多次调用-retain对象时会发生什么?在你完成使用它之后立即释放它是否可以?
答案 0 :(得分:1)
考虑名称“reference counting ”。
您必须将每个retain
与release
(或autorelease
)匹配。
当引用计数时,您的程序可能会持有一个或多个对象的引用。您通过保留对象添加引用。完成对象后,使用release
或autorelease
放弃参考。返回所有引用时,保留计数达到零并且对象被销毁。
对象生存期也受自动释放池的影响;一种便利机制,可减少手动保留/释放的数量以及参考计数的复杂性(在某些情况下)。你应该阅读自动释放和自动释放池,以进一步了解这种机制。
答案 1 :(得分:0)
永远记住这三件事。
1。)每当您将保留消息传递给任何对象时,其保留计数会增加1 。
2。)随后当您将发布消息传递给任何对象时,其保留计数减少1 。
3。)无论何时完成对象,请务必检查保留计数是否为0 。
因此,保留对象的次数应始终等于释放该对象的次数。
您可以查看有关内存管理的Apple文档here。
答案 2 :(得分:-2)
多少次调用此方法(保留)多次将内存分配给该对象。您可以通过保留计数对象被分配的次数。 它创造了记忆问题。 如果对象保留计数为零则该特定对象不可用于其他对象。 如果U释放10次一个对象,那么一旦它没有被释放。 保留增加1计数和释放减少1.如果对象保留计数0该对象不可用。