.. title:: clang-tidy - darwin-dispatch-once-nonstatic darwin-dispatch-once-nonstatic ============================== Finds declarations of ``dispatch_once_t`` variables without static or global storage. The behavior of using ``dispatch_once_t`` predicates with automatic or dynamic storage is undefined by libdispatch, and should be avoided. It is a common pattern to have functions initialize internal static or global data once when the function runs, but programmers have been known to miss the static on the ``dispatch_once_t`` predicate, leading to an uninitialized flag value at the mercy of the stack. Programmers have also been known to make ``dispatch_once_t`` variables be members of structs or classes, with the intent to lazily perform some expensive struct or class member initialization only once; however, this violates the libdispatch requirements. See the discussion section of `Apple's dispatch_once documentation `_ for more information.