Do I need to create a weak reference of self, if I am dispatching something in main thread?

159 views Asked by At

Assuming self is also subclass of UIViewController, I do understand that all the UI methods of self, need to be performed inside main thread.

Consider the code given below:

- (void)someMethodWhichMayOrMayNotBeInMainThread {

    // perform some function

    MyController * __weak weakSelf = self;
    dispatch_async(dispatch_get_main_queue(), ^{
        MyController *strongSelf = weakSelf;
        if (!strongSelf) {
            return;
        }
        [strongSelf updateListView];
    });

}

In this case, if I do not give a weak reference to self, will it make a difference?

This method in itself may be called asynchronously, so the self in it might or might not be a strong reference to the weak reference to self.

Now, say the self is deallocated in the main thread already, then even if I do not assign the self in this method weakself, will it crash?

0

There are 0 answers