简体   繁体   English

我们是否需要在Obj-C ARC模式下的dealloc方法中手动释放块变量?

[英]Do we need to release block variable manually in dealloc method under Obj-C ARC mode?

As you know interface vars don't need to be released (self.var = nil) manually in method dealloc() in ARC mode, but how about block variable? 如您所知,在ARC模式下不需要在方法dealloc()中手动释放(var.var = nil)接口var,但是块变量又如何呢? If block copy then do we also no need to release it? 如果是块复制,那么我们也不需要释放它吗? Have no idea on how to track block var memory leak by instrument. 不知道如何通过仪器跟踪块var内存泄漏。

Anyone who knows please share and thanks in advance. 知道的人请事先分享和感谢。

[block copy] is handled by ARC. [block copy]由ARC处理。

If you use Block_copy then you must use Block_release , but the above form is preferred with ARC. 如果使用Block_copy则必须使用Block_release ,但是ARC首选上述形式。

you may need __weak you variable before put it to block to avoid retain cycle. 您可能需要先使变量变弱,然后再将其放入块中,以避免保留周期。

See https://developer.apple.com/library/ios/releasenotes/ObjectiveC/RN-TransitioningToARC/Introduction/Introduction.html for details. 有关详细信息,请参见https://developer.apple.com/library/ios/releasenotes/ObjectiveC/RN-TransitioningToARC/Introduction/Introduction.html

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM