Как передать объект NSError из фонового потока в основной поток без нарушения правил управления памятью? - PullRequest
0 голосов
/ 04 декабря 2010

Я выполняю многочисленные операции, такие как поиск из Интернета, импорт, файловые операции и т. Д. В фоновом потоке. Каждая операция вызывается с помощью NSInvocationOperation. После завершения каждой операции операция фонового потока вызывает performSelectorOnMainThread:. Я использую модель для фонового потока для вызова operationSucceeded или operationFailed в зависимости от успеха или неудачи фоновой операции.

Когда я вызываю operationFailed, я хочу передать объект NSError обратно в основной поток, чтобы поток мог предпринять любое соответствующее действие с пользовательским интерфейсом. Например, в случае сбоя я могу или не хочу отображать сообщение об ошибке для пользователя.

Вопрос: как я могу отправить NSError обратно в основной поток, не сталкиваясь с проблемами управления памятью? Каждая операция, которая вызывается с помощью NSInvocationOperation, имеет свой собственный локальный NSAutoreleasePool в соответствии с требованиями Apple. Когда я возвращаю объект NSError, используя performSelectorOnMainThread:withObject:error, разве локальный NSAutoreleasePool не освобождает объект NSError?

1 Ответ

1 голос
/ 04 декабря 2010

Вам не нужно ничего делать.Как объясняется в ссылке , performSelectorOnMainThread:@selector(foo:) withObject:obj сохраняет obj до тех пор, пока не будет выполнен селектор

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...