Ошибка вызывать dealloc для чего-либо в любое время. Вы должны только когда-либо называть релиз.
Вы не должны обращаться к экземплярам, связанным с пользовательским интерфейсом, из фонового потока. Это включает в себя использование методов получения, потому что они могут изменять вещи внутри. Тем не менее, сохранение и освобождение являются потокобезопасными для любого объекта в любое время при условии соблюдения нормальных правил сохранения и освобождения. К экземплярам, связанным с пользовательским интерфейсом, относится любой объект, на который ссылается активный UIView или UIViewController.
executeSelectorOnMainThread не делает ничего, кроме как удерживает объект до тех пор, пока он не попадет в основной поток. Безопасно вызывать любой объект, связанный с пользовательским интерфейсом.