I have to admit I scratched my head with this one for bit! How does this look:

	int filter_callback(const git_tree_entry *entry, void *payload);
	int filter_callback(const git_tree_entry *entry, void *payload) {
	  BOOL (^filterBlock)(const git_tree_entry *entry) = (__bridge_transfer BOOL (^)(const git_tree_entry *entry))payload;
		return filterBlock(entry);
	};
 
	- (void)filter:(BOOL(^)(const git_tree_entry *entry))filterBlock {
		git_treebuilder_filter(self.git_treebuilder, filter_callback, (__bridge_retained void *)filterBlock);
	}