2013-11-13 5 views
0

У меня есть главный «класс»/контроллер просмотра под названием «MainUI.m», который отображает пользовательский интерфейс для моего приложения. Внутри этого контроллера представления я объявил экземпляр другого класса под названием «DoActivity.m», поэтому я могу назвать один из его методов, называемый «getFeed» внутри моего MainUI. Прежде чем метод завершится, он должен обновить изображение из моего MainUI. И затем метод повторяется снова. Моя проблема заключается в том, что приложение падает всякий раз, когда я обновить пользовательский интерфейс внутри метода:iOS update UI из другого класса/потока

MainUI* mu = [[MainUI alloc] init]; 

-(void)getFeed{ 
//some tasks here 

mu.imageView.image= imageInDoActivity.image; 
} 

EDIT

ошибка говорит что-то вроде

Thread 1: Program recieved signal:'EXC_BAD_ACCESS' 

и выделяется на этой строке кода :

mu.imageView.image= imageInDoActivity.image; 

редактировать

У меня есть свойство MainUI в DoActivity:

@property MainUI* mu; 

Но в моем DoActivity конструктор, я не инициализирует указанного имущества. Вместо этого перед вызовом [self.doAct getFeed] в MainUI где doAct является

@property DoActivity* doAct; 

Я установил

self.doAct.mu = self; 

в MainMU так, что DoActivity будет знать, что он должен обновить пользовательский интерфейс класса, который назвал его ,

Как исправить это?

+1

предоставить больше информации plz. журнал сбоев, тело метода. – Stas

+0

Каково сообщение об ошибке для сбоя? Вы не должны обновлять какой-либо объект пользовательского интерфейса в любом другом потоке. Пользовательский интерфейс может быть обновлен только в основном потоке, это может быть причиной вашего краха, но без ошибки, которую мы не знаем. – Popeye

+0

Ошибка говорит что-то вроде: «Тема 1: Полученный программой сигнал:« EXC_BAD_ACCESS »и выделен в этой строке кода: mu.imageView.image = imageInDoActivity.image; – user2964075

ответ

2

Вы должны делать вещи UI на главной теме:

-(void)getFeed{ 
    //some tasks here 

    dispatch_async(dispatch_get_main_queue(), ^{ 
     mu.imageView.image= imageInDoActivity.image; 
    }); 
} 

Я не уверен, хотя, если это действительно является причиной вашей аварии. Аварийный журнал был бы очень полезен.

+0

Ошибка говорит что-то вроде:« Тема 1: Полученная программа сигнал: «EXC_BAD_ACCESS» и выделен в этой строке кода: mu.imageView.image = imageInDoActivity.image – user2964075

+1

@ user2964075 Это, скорее всего, зомби (вызов метода по уже освобожденному объекту). Как вы определили 'mu' в этом контексте? Попробуйте сделать недвижимость. – NSAddict

+0

Я определил его как свойство. Пожалуйста, см. Мое редактирование – user2964075

Смежные вопросы