Создание конструкторов в Objective-C - PullRequest
5 голосов
/ 03 июля 2011

Почему мы всегда делаем это при создании конструкторов в Objective C?

self = [super init];
if ( self ) {
    //Initialization code here
}

Ответы [ 4 ]

10 голосов
/ 24 марта 2012

вы можете создать конструктор и деструктор в target-c с помощью

-(id) init
{
    self = [super init];
    if(self)
    {
       //do something
    }
    return self;
}
-(void) dealloc
{
   [super dealloc];
}
7 голосов
/ 03 июля 2011

Мы переназначаем self, поскольку [super init] разрешено возвращать объект, отличный от того, для которого он был вызван Мы if (self) потому что [super init] разрешено возвращать nil.

1 голос
/ 03 июля 2011

self - это класс, основанный на некотором суперклассе (например, UIViewController, NSObject - посмотрите файл интерфейса, чтобы узнать, какой именно) Суперклассу может потребоваться некоторая форма инициализации, чтобы подкласс работал должным образом. Поэтому, сначала инициализируя суперкласс, мы проверяем, установлены ли свойства по умолчанию и тому подобное. Без предварительной инициализации суперкласса мы можем столкнуться с неожиданным поведением, особенно в более сложных объектах, таких как ViewControllers и т. П.

0 голосов
/ 03 июля 2011

Прочитайте этот яблочный документ при инициализации http://developer.apple.com/library/mac/#documentation/cocoa/Conceptual/ObjectiveC/Chapters/ocAllocInit.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...