Между чем различие
performSelectorOnMainThread
performSelectorInBackground
performSelector
Спасибо
performSelector будет просто делать то, что он говорит, обычно вы должны использовать это, когда хотите выполнить селектор, используя его имя как NSString, это полезно в ситуациях, когда вы программно создаете имя селектор. Если вы знакомы с Java, вы можете сравнить это с отражением.
performSelectorInBackground будет выполнять селектор асинхронно в новом потоке в фоновом режиме, так что вы можете отправлять длинные задачи, не блокируя свой пользовательский интерфейс.
performSelectorOnMainThread просто выполнит селектор в основном потоке вашего приложения в соответствии с его заявлением.Это может привести к зависанию пользовательского интерфейса, вы можете зарезервировать его для выполнения задач, которые явно обновляют пользовательский интерфейс
РЕДАКТИРОВАТЬ:
Еще немного о performSelectorOnMainThread
, это наиболее полезно, когда вы звоните это из потока, работающего в фоновом режиме. Например, у вас есть поток, обрабатывающий задачу в фоновом режиме, и вы хотите обновить метку состояния, только потоки, запущенные в основном потоке, будут обновлять пользовательский интерфейс, поэтому вы должны вызвать свой селектор, который обновляет метку состояния, используя performSelectorOnMainThread