No, that will not cause a retain cycle. The __block keyword tells the block to not copy myBlock, which would have occurred before assignment causing the application to crash. If this is not ARC the only thing you will need to do is release myBlock after you call myBlock(10).