2011-02-03 2 views
2
  • Зачем стоит называть метод - (id) init?
  • Как я могу назвать это, есть ли что-то особенное?
  • Когда мне следует называть этот метод?

ответ

0

http://www.otierney.net/objective-c.html:

[object init] является вызов конструктора, который инициализирует все переменные в объекте. Этот метод вызывается в экземпляре, возвращаемом с [Fraction alloc]. Эта операция настолько часто, как это обычно делается только в одной строке, как Object var = [[Object alloc] init];

2

Почему?

-(id)init вызывается для инициализации переменных внутри объекта и выполнения любой необходимой настройки (это в основном конструктор).

Как?

Obj *obj = [[Obj alloc] init]; 

Когда?

Всякий раз, когда вы хотите создать объект.

Перед вызовом init необходимо вызвать alloc для класса, чтобы выделенная память была выделена для объекта такого типа.

-(id)init - назначенный конструктор объекта. Некоторые классы имеют другие назначенные конструкторы, например UIViewController, который использует initWithNibName:bundle:.

+0

Спасибо Goetz.I могу получить его. Но даже если я не создаю объект для AppDelegateclass (класс, который автоматически генерируется), как выполняется метод init (?) Init ...? – iphone66

+0

AppDelegate создается в какой-то момент из вызова функции NSApplicationMain (который вызывается внутри основной функции в main.m, вы можете найти этот файл в «Other Sources»). Как правило, вы не перезаписываете init для AppDelegate, а используете applicationDidFinishLaunching: инициализировать приложение. – goetz

+0

В частности, делегат приложения часто находится в MainMenu nib (и я думаю, что это так во всех шаблонах проектов Cocoa и Cocoa Touch сейчас). Таким образом, делегат приложения создается с помощью unarchiving nib. Если это не в nib, то 'NSApplicationMain' /' UIApplicationMain' самостоятельно не будет создавать экземпляр делегата приложения; вы должны сделать это самостоятельно в коде в функции 'main'. –

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