2014-02-18 3 views

ответ

3

+initialize можно переопределить (необязательно) для выполнения инициализации класса. -init выполняет инициализацию одного экземпляра класса, хотя он часто уточняется путем добавления аргументов в классы, полученные из NSObject (например: метод UIView initWithFrame:).

С -init инициализирует один экземпляр (в частности, он имеет доступ к переменным экземпляра), он не может быть методом класса.

1

Из документов:

Среда выполнения отправляет инициализации каждому классу в программе непосредственно перед классом, или любого класса, который наследует от него, посылается первое сообщение из программы.

Это означает, что первый раз, когда вы отправить сообщение в класс, будь то alloc или какой-либо определенный метод класса, initialize называется первым, один раз за весь пробег приложения. В отличие от load, можно включить класс в проект и никогда не ударять initialize.

init, с другой стороны, является

Осуществляется подклассов, чтобы инициализировать новый объект (приемник) сразу же после памяти было выделено.

Значение, init является Sheerly используется для инициализации класса экземпляров.

Edit -

После отредактированной вопрос, alloc создает экземпляр в то время как init инициализирует его, поэтому alloc является методом класса и init является методом экземпляра.

Смежные вопросы