…how I think it should be

You should unsubscribe object from notifications, as you tried in attempt2, but it is not correct to do this in dealloc method, as when using ARC, we can't predict, when object will be deallocated.