The save cycle, which, in your opinion, you see, is connected with the fact that the object stores the loader in the dictionary.
It is true that the block has a strong reference to self, but as long as the completion handler always starts, the bootloader will be removed from the dictionary. And, in the end, this dictionary will be empty, which means that objects will not hold themselves, and therefore there will be no save cycle.
source share