CUSTOM_VIEW КЛАСС:Правильно управлять очередью отправки уменьшить телефон нагрев IOS
Я сделал custom_view класса, который вычисляет значение на себе и показывает пользователь после каждых 1 сек. Вычисление значений в custom_view на основе свойств/переменных, хранящихся в экземпляре custom_view.
ViewController КЛАСС:
отобразить некоторые 7 до 9 вида пути создания экземпляра custom_class в классе ViewController.
Поскольку мой custom_class показывает новое расчетное значение через каждые 1 секунду, я использовал dispatch_async для выполнения кода вычисления. Так что это не повлияет на UI Thread.
custom_view.m
static dispatch_queue_t queue;
queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND,0);
dispatch_async(queue, ^(void)
{
[self calculateViewValue];
});
-(void) calculateViewValue
{
int wait = [self generateRandomNumberWithlowerBound:10 upperBound:20];
for (int i = 0; i<= wait; i++)
{
// value calculation
[[NSOperationQueue mainQueue] addOperationWithBlock:^
{custom_view_instance.text = value;}];
sleep(1);
}
}
Однако после его запуска iPhone нагревается через некоторое время !! Я делаю что-то неправильно/отсутствует/лучший способ сделать это ???
привет, @ingconti, спасибо за ответ :) Ну, как вы уже упомянули, я согласен с тем, что ваш расчет должен быть выполнен в контроллере. Однако расчет производится в моем классе custom_view. Например. Рассмотрим custom_view представляет PROPERTY [HOUSE/BUILDING], а значение custom_view - RATE свойства. поэтому он основан на свойствах/переменных custom_view. Поэтому я всегда создаю экземпляр custom_view и инициализирую каждый новый custom_view со значением. –
Представления не должны содержать данные или выполнять вычисления. Данные должны быть в модели и расчетах где-то в модели или контрольном слое (в зависимости от деталей реализации). – bbum
ok @bbum, да, я предпочитаю не использовать представление для расчета/хранения данных, которые я делаю на этот раз и сделаю изменения, как вы, ребята, подчеркиваете. Спасибо :) Im, будучи новичком, что я должен отсылать/учиться, чтобы избежать такой ошибки, которую вы указали, и сделать более структурированную реализацию в будущем. –