iPhone: выполнение кода только один раз при инициации объекта - PullRequest
0 голосов
/ 14 февраля 2010

Привет всем, это ВНЕШНИЙ вопрос новичка, и мне несколько стыдно, что я его уже не знаю: как я могу выполнить код только один раз при реализации моего объекта? У меня есть объект, который является подклассом UIView. Я хочу, чтобы какой-то код выполнялся, как только все запускалось, но я могу только получить код, который будет выполнен в ответ на пользовательский ввод. ARGHH!

Я бы хотя бы -(void)viewDidLoad работал, но безрезультатно ...

Любая помощь, конечно, очень ценится. Я ненавижу не знать что-то настолько простое на данный момент.

Спасибо!

Ответы [ 3 ]

1 голос
/ 15 февраля 2010

Метод viewDidLoad определен в UIViewController, а не в UIView, поэтому нет оснований ожидать, что он будет вызван в подклассе UIView, если вы не вызовете его самостоятельно.

Если вы создаете представление в коде, вам нужно посмотреть на -initWithFrame:. Если вы используете IB, используйте -initWithCoder:.

1 голос
/ 14 февраля 2010

Методы - (id) init и - (id) initWithCoder: (NSCoder *) вызываются только один раз при создании представления. В противном случае вы также можете использовать определяющие символы:

#ifndef HAS_INIT
#define HAS_INIT
  ...
#endif
0 голосов
/ 14 февраля 2010

В редких случаях мне нужно сделать что-то подобное, я создаю переменную в заголовке.

BOOL bRunOnce;

Затем в init

bRunOnce = FALSE; 

Тогда в функции:

if (bRunOnce == FALSE){
  // do stuff
   bRunOnce = TRUE; 
}
...