Цель-C: init vs initialize


в Objective-C, в чем разница между init метод (т. е. назначенный инициализатор для класса) и initialize способ? Какой код инициализации должен быть помещен в каждого?

2 72

2 ответа:

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

код, который принадлежит в метод тщательно в реализация инициализатора на Язык Программирования Objective-C. Есть также некоторое обсуждение инициализации классов (т. е. +initialize) и почему вам может понадобиться сделать это в том же документе, в Объекты Класса. Код, который входит в +initialize обычно будет сильно привязан к специальной функциональности класса, которая требует, чтобы вы инициализировали его в первую очередь. Одна важная вещь, чтобы держать в ум в +initialize (и в любом методе класса) это self в методе класса ссылается на сам класс, а не на экземпляр класса.

чтобы провести параллель для разработчиков Java, init похож на конструктор, а initialize-на статический блок в классе.