Уточните, пожалуйста: нужно, чтобы цвет соотвествовал одному и тому же ID всегда-всегда? Или после перезагрузки страницы соотвествие ID - цвет можно изменить? И еще - цвет может быть совершенно любым или должен соответствовать какому-нибудь правилу (например, не ярче, чем или не насыщеннее, чем)?
JohnZoidberg: Вы используете Xcode? Если поставить брейкпоинт на том месте, где изменяется свойство, и остановиться на этом моменте при отладке, слева будет показан поток, в котором произошел останов. Там должен быть Thread 1 (он же main). Если там какой-нибудь другой Thread, смотреть, где именно вы перешли на второстепенный поток и обращаться к свойству UI-объекта из главного потока. В противном случае - более подробно описать проблему.
Хотелось бы уточнить: для описываемого Вами случая решение - это просто абстрактное решение или полноценный компилирующийся и выдающий правильный результат код?
Всем спасибо за ответы. Жизненно важные и рабочие файлы забекаплены. Речь идет об архиве всякой всячины, с которой связывают скорее сентиментальные чувства.
Можно и делегат. Мне, правда, больше нравится уведомление, так как не нужно создавать ни протокол, ни хранить этого делегата у себя в экземпляре. Но, конечно, все зависит от контекста и характера задачи.
searchDisplayController.searchResultsDataSource = self;
searchDisplayController.searchResultsDelegate = self;
И уже используете обычные методы cellForRowAtIndexPath и т.п.
Что касается делегата - то тоже слишком упрощенно. Но тут можно долго объяснять так, чтоб человек понял. К тому же множество людей уже сделали это, достаточно поискать в интернете описание технологии делегирования в objС и понять, что такое protocol. Желательно посмотреть в нескольких источниках, чтобы сложилось более или менее объемное представление.
Selector - это не "метод который обработает какое-то действие". Упрощенно, SEL - это тип, который хранит в себе собственно имя метода. В частности селектор передается в качестве параметра в функцию id objc_msgSend(id self, SEL op, …) Например, перед вызовом метода (а по сути, отправкой сообщения), вы можете проверить, поддерживает ли объект этот метод: [someObject respondsToSelector:@selector(someMethod:withSomeParam:)];
Также у объектов, наследуемых от NSObject, можно вызывать селектор с помощью [someObject performSelector:@selector(someMethod)]. Такое использование - одна из фишек Cocoa-полиморфизма. Можно взять, например, массив объектов и попросить у этих объектов выполнить какой-нибудь селектор. Например, из полезного: [myView.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)]. В этом случае для всех объектов, содержащихся в массиве subviews будет выполнено действие objc_msgSend(currentSubview, @selector(removeFromSuperview)), где currentSubview - текущий элемент массива при энумерации.
UIControlStateNormal - это одно из значений enum'а UIControlState. Что такое normal - одному Вам должно быть известно. Как Вы обнаружили, что проблема именно в этой строке? Закоментировали и утечка пропала?