I recently learned this trick for when I have to reference self within a block.

```
__weak MyObject *safeSelf = self;  
[self doWithCompletionBlock:^{

    HMFInventoryBatchItemsController *strongSelf = safeSelf;
    if (strongSelf) {
        [strongSelf doSomethingElse];
    }
}];

```

But I've been wondering, what if I have a block within a block? Do I need to do the same thing again?

```
__weak MyObject *safeSelf = self;  
    [self doWithCompletionBlock:^{

        HMFInventoryBatchItemsController *strongSelf = safeSelf;
        if (strongSelf) {

            __weak MyObject *saferSelf = strongSelf;  
            [strongSelf doAnotherThingWithCompletionBlock:^{

                HMFInventoryBatchItemsController *strongerSelf = saferSelf;
                if (strongerSelf) {
                    [strongerSelf doSomethingElse];
                }
            }];
        }
   }];

```

Or is this fine

```
__weak MyObject *safeSelf = self;  
    [self doWithCompletionBlock:^{

        HMFInventoryBatchItemsController *strongSelf = safeSelf;
        if (strongSelf) {

            [strongSelf doAnotherThingWithCompletionBlock:^{

                    [strongSelf doSomethingElse];

            }];
        }
   }];

```