ibireme / YYCategories

A set of useful categories for Foundation and UIKit.
MIT License
826 stars 218 forks source link

关于block循环引用的疑问 #8

Closed 2446886848 closed 8 years ago

2446886848 commented 8 years ago

你好,我在使用UIControl+YYAdd这个分类的时候用到了addBlockForControlEvents:block函数,但是发现当block中引用control的时候编译器会有“block 循环引用”的警告。 按照我们正常的功能来说由于block是运行的时候加进去的,所以编译器应该是无法识别到的。 接着我试着在工程下执行grep "addBlockForControlEvents" * -Rn 命令来查找你是否做了什么设置,但是没有找到什么线索。 所以我想问一下,这个编译器提醒的功能是如何做到的。

ibireme commented 8 years ago

如果有循环引用的警告的话,都是编译器的功劳,我什么都没做。

一般简单的循环引用,现在 clang 都能检测出来了。

2446886848 commented 8 years ago

我测试过,将你UIControl+YYAdd分类里的addBlockForControlEvents:block这个函数的代码全部删除掉(也即函数什么都不做),然后调用时在block中引用control,编译时依然会出现“block 循环引用”的警告,所以就实在是搞不明白,因此我认为你做了什么特殊的处理。