objc 中block回调中的__block用法

        刚学到objc的代码块回调,在init里回调的时候
        老师在前面加了一个用__weak __block  修饰的本类的指针 copy_self= self.
        然后才在代码块里用copy_self来判断和调用
        比如在room里:
        __weak __block room * copy_self = self;
        请问为什么呢?新手求解0.0