Я склонен делать все с Interface Builder и IBOutlet, поэтому, когда я хочу изменить пользовательский интерфейс, я использую для объявления переменной в UIViewController, например:
@property(nonatomic,retain) IBOutlet MyView *myView;
подключите его через Interface Builder и вызовите мой код с помощью розетки, после чего я смогу получить доступ ко всем другим розеткам в myView:
UILabel *label = myView.theLabel;
Учитывая, что MyView очень часто является моим основным видом, я также могу сделать:
UILabel *label = (MyView*)self.view.theLabel;
синтаксис довольно длинный, но это позволяет мне объявлять меньшую переменную в файле .h и (на мой взгляд) содержать код в чистоте, например, с макросом это может стать:
#define MV (MyView*)self.view
UILabel *label = MV.theLabel;
, который я нашел гораздо приятнее читать и поддерживать.
Дело в том, что я бы всегда делал кастинг, используя iOS 5, какова стоимость с точки зрения производительности? Учитывая, что UIKit уже является слоем поверх чего-то другого, является ли приведение объектов UIView несколько другим или более дорогим?
Компилятор выполняет какие-то оптимизации, особенно с новым дуговым компилятором?
спасибо