回答
ARC只处理Objective-C对象。所以你需要手动继续管理Core Foundation和普通的C内存。
虽然您不需要手动保留或释放,但您仍然负责防止保留周期 - 确保将适当的属性标记为强和弱。所以你需要继续考虑所有权方面的问题。
除此之外,至少有一个非常具体的怪癖 - 如果堆栈要在它们下面放松,则需要记住复制块。这是为了确保它们最终堆在栈上,而不是堆栈,因此与内存管理相关。
在某些情况下(例如将块分配给属性或从函数返回一个块),块将自动复制,但我不会依赖它。 –
我认为它们在被其他模块捕获时也被复制,因此它覆盖了99%的实际用例,但我还没有找到任何可引用的参考,例如,将一个作为对象传递给'performSelector:... afterDelay:'将是安全的。 – Tommy
不,只是任意将一个块作为一个对象传递给另一个函数是不“安全的”,让我解释一下为什么:当块被传递到已经复制了对象(如属性)的函数中时,会自动复制块,但它们不是'保持像普通物体一样。所以,虽然我可能有一个强烈的引用块,除非这个块在堆上,这意味着什么。当分配给任意类型('id')时,块不会被复制,因为ARC不知道你想使用'copy'和'retain'(它只在块已经被复制时才起作用)。块很混乱。 –
- 1. ARC内存管理:随机内存警告
- 2. ARC中的内存管理
- 3. ARC代表内存管理
- 4. iOS/iPhone ARC内存管理
- 5. 块和ARC的内存管理,泄漏?
- 6. Objective C内存管理与ARC
- 7. 这会照顾内存管理ARC
- 8. 如何用ARC管理内存?
- 9. ARC内存管理与IOS 6
- 10. 的NSString和Objective-C内存管理ARC
- 11. iOS5 SDK - ARC和内存管理
- 12. iOS - ARC /内存管理问题与ModalViewControllers
- 13. 需要内存管理的帮助
- 14. 在Xcode4.2内存管理,澄清需要
- 15. 需要帮助管理内存
- 16. 需要澄清在iPhone内存管理
- 17. C++中的手动内存管理
- 18. object-c中的手动内存管理
- 19. 为什么手动内存管理?
- 20. 我是否需要手动删除或管理这个unique_ptr
- 21. ARC与非ARC框架之间的内存管理
- 22. 不同的内存管理ARC /没有ARC
- 23. 我需要在iPhone内存管理帮助
- 24. 我是否需要删除启用ARC的项目中的所有内存管理方法?
- 25. Objective-C正确的内存管理和用ARC清理
- 26. ARC - 如何管理那些需要unsafe_unretained的属性?
- 27. WooCommerce:当管理员手动创建订单时需要挂钩
- 28. 内存管理困扰新手
- 29. iPhone:内存管理新手问题
- 30. iPhone:新手内存管理问题
在ARC中,您不必担心释放内存。但请注意,在使用它时不会释放对象。 –
@Prince:对象何时被释放? – Surfbutler
@Surfbutler在未来的任意点。这将是确定性的,但不是从你的语法中明确的,除了你会隐含提供更高的生命周期边界。所以像Guard Malloc和僵尸这样的东西应该可靠地捕捉到问题并且性能应该是可预测的,但是编写假定发布将会发生的代码是一个坏主意 - 尽管由于各种原因它总是一个坏主意。如果您需要明确告诉某人什么时候停止某件事情,请按照'NSTimer'模式的'invalidate'类型步骤操作。 – Tommy