Вам нужно либо добавить [inv retainArguments]
, либо изменить параметр waitUntilDone на YES, , но , прежде чем сделать это, позвольте мне сказать, что то, что вы сделали, довольно нечитабельно.
То, что я хотел бы сделать, это сохранить любое нужное вам состояние в переменных экземпляра, а затем, когда вы будете готовы, просто сделайте:
[self performSelectorOnMainThread:@selector (startAnimation) withObject:nil waitUntilDone:NO];
Кроме того, выделение и инициализация CABasicAnimation в потоке не нужны (это не займет заметного времени, чтобы сделать это в основном потоке), и все еще потенциально опасны. Сохраняйте интенсивную работу процессора в отдельном потоке, но не в другом.