Skip to content

Instantly share code, notes, and snippets.

@ricardopereira
Forked from steipete/PSPDFDefer.m
Created June 1, 2017 09:50
Show Gist options
  • Save ricardopereira/a15a4be0a03dcf39da6fa33e8ae72f20 to your computer and use it in GitHub Desktop.
Save ricardopereira/a15a4be0a03dcf39da6fa33e8ae72f20 to your computer and use it in GitHub Desktop.
// Similar to defer in Swift
#define pspdf_defer_block_name_with_prefix(prefix, suffix) prefix ## suffix
#define pspdf_defer_block_name(suffix) pspdf_defer_block_name_with_prefix(pspdf_defer_, suffix)
#define pspdf_defer __strong void(^pspdf_defer_block_name(__LINE__))(void) __attribute__((cleanup(pspdf_defer_cleanup_block), unused)) = ^
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wunused-function"
static void pspdf_defer_cleanup_block(__strong void(^*block)(void)) {
(*block)();
}
#pragma clang diagnostic pop
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment