Use a block rather than delegates