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