I have a block wherein I use self
so I declare a weak reference to self:
__weak MyClass *weakSelf = self;
Now my questions:
I get an error where I define weakSelf
and I don't understand what this should mean.:
weak attribute can not be specified on an automatic variable
Inside my block I pass weakSelf
to another block and I am not sure if I now have to do the same thing again like so:
__weak MyClass *weakWeakSelf = weakSelf;
And then pass weakWeakSelf
to that block?
Block references that contain other blocks are known as nested blocks. Using blocks within blocks can simplify the organization of a complex block definition. The only restriction on nested blocks is that you cannot insert blocks that reference themselves.
As the name suggests, a try block within a try block is called nested try block in Java. This is needed when different blocks like outer and inner may cause different errors.
This is most likely occurring as you are targeting down to iOS 4. You should change it to be
__unsafe_unretained MyClass *weakWeakSelf = weakSelf;
With ARC
__weak __typeof__(self) wself = self;
Wihtout ARC
__unsafe_unretained __typeof__(self) wself = self;
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With