bugprone-no-escape¶
查找带有 noescape 属性的指针,这些指针被异步执行的代码块捕获。在 dispatch_async() 和 dispatch_after() 中的代码块参数保证会逃逸,因此如果带有 noescape 属性的指针被其中一个代码块捕获,则这是一个错误。
以下是一个使用 noescape 属性的无效示例。
void foo(__attribute__((noescape)) int *p) { dispatch_async(queue, ^{ *p = 123; }); });