Вопрос

В моем подклассе UIViewController мне следует инициализировать NSArray данных для UIPickerView в init или в viewDidLoad и почему?Спасибо.

Это было полезно?

Решение

я бы позвонил viewDidLoad поскольку представление может быть загружено более одного раза (а также выгружено, поэтому вы также можете захотеть перезагрузить массив).

Кроме того, большую часть времени рекомендуется лениво загружать данные на iPhone.Загрузка данных в viewDidLoad намного ленивее, чем init, который может в конечном итоге работать лучше для вас, если вы инициализируете его, но не сразу используете контроллер представления.

Другие советы

Это зависит от того, что именно вы собираетесь хранить в массиве и как вы собираетесь его инициализировать. viewDidLoad можно вызывать несколько раз (особенно после того, как в вашу программу отправляется предупреждение о нехватке памяти - неактивные контроллеры представлений выгружают свои представления, а затем перезагружают их, когда они снова становятся активными или видимыми), тогда как init обычно вызывается только один раз за время существования объекта.

Одним из случаев, когда это можно сделать в init, является то, что viewDidLoad может быть вызван после viewWillAppear.Если вы полагаетесь на наличие массива в этот момент, вам может потребоваться поместить инициализацию в init.

Вообще говоря, viewDidLoad — довольно хорошее место, если учесть, что его можно вызывать более одного раза.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top