通过将字符串分配给类B中的字符串属性(类型为retain),我在两个类之间传递了几个对象,称为从A到B的字符串。我需要在dealloc方法中的B类中释放这个字符串属性吗?在Obj中的对象之间传递对象C
回答
正如您在谈论dealloc
,我将您的问题视为非ARC。
将字符串赋值给类B中的字符串属性,其类型为 类型为retain。我是否必须在B类中释放此字符串属性
否。
只有在确实保留,复制,分配时才需要释放。
此外,NSString应分配不保留。
保留或分配属性取决于他的任务。 – zakhej 2013-02-21 08:58:11
如果我在后面的代码中根本不使用该属性,则取决于运行时条件,以便该属性将为零直到结束......如果在释放dealloc中的某些内容之前应检查属性是否为零? – 2013-02-21 09:13:20
,因为你正在分配,所以需要担心泄漏。 – 2013-02-21 09:15:43
是的,你需要释放保留的对象。在dealloc方法:
- (void)dealloc
{
if (_yourString)
{
[_yourString release];
}
...
[super dealloc];
}
如果属性类型为保留,比将增加1保留计数,并释放你需要减少其保留计数为0 所以,如果你不会释放对象它会导致内存泄漏。 感染这是保留财产的目的,它赋予该类实施财产的所有权。
当我们不确定源是否保留对象时,我们使用retain属性。 – 2013-02-21 08:57:07
- 1. 在对象之间传递对象
- 2. C++在类之间传递对象
- 3. C#在表单之间传递对象
- 4. C++在类之间传递对象
- 5. 形式c之间传递对象#
- 6. 如何在类之间传递对象
- 7. 在活动之间传递2D对象
- 8. 在页面之间传递对象
- 9. 在类之间传递ManualResetEvent对象
- 10. 在类之间传递对象
- 11. 在片段之间传递对象
- 12. 在对象之间传递值rails
- 13. 在层之间传递实体对象?
- 14. 在视图之间传递对象
- 15. VBA - 在函数之间传递对象
- 16. 在活动之间传递对象
- 17. 在活动之间传递parcelable对象
- 18. 在托管对象上下文之间传递对象
- 19. iPhone:在NSManagedObjectContext对象之间传递对象?
- 20. 在c中的对象之间传递数据#
- 21. 在C中的对象之间传递事件处理程序#
- 22. 传递对象之间的数据
- 23. 类之间的Python传递对象
- 24. 在C中形式之间传递一个对象#
- 25. Angluarjs控制器之间传递对象
- 26. iphone:功能之间传递对象
- 27. 对象传递对象WEBSERVICES
- 28. 原子指针C++和在线程之间传递对象
- 29. 如何在go包之间传递C对象?
- 30. 进程间对象传递
你使用ARC吗? – 2013-02-21 08:44:15
是的,你必须在非ARC。你应该考虑使用复制而不是保留字符串,在这种情况下你仍然必须释放它。 – 2013-02-21 08:44:29