Что такое Objective-C "конструктор"? - PullRequest
7 голосов
/ 03 ноября 2011

У меня есть этот класс:

@interface RSSEntry : NSObject{
    NSString *blogTitle;
    NSString *articleTitle;
    NSString *articleUrl;
    NSDate *articleDate;
}

@property (copy) NSString *blogTitle;
@property (copy) NSString *articleTitle;
@property (copy) NSString *articleUrl;
@property (copy) NSDate *articleDate;

@end

Теперь, как я буду инициализировать эти переменные-члены при создании объекта, особенно когда ARC включен в проекте Xcode?Я новичок в Objective-C;Я ищу что-то вроде конструктора из базовых языков C.

Ответы [ 2 ]

7 голосов
/ 03 ноября 2011

В Objective-C нет конструкторов.Тем не менее, обычной практикой является создание метода init, при котором пользователи должны сразу вызывать alloc, а затем init.См., Например, Конструкторы Objective C .

3 голосов
/ 03 ноября 2011

вы инициализируете такой объект

RSSEntry *e = [[RSSEntry alloc] init];

, поэтому вы перезаписываете метод init.

Ваш инициализация будет выглядеть примерно так

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];

if (self) 
{
    lesImagesViews = nil;
}
return self;
}

Этоinit для подкласса UIViewController в другом классе имеет init по умолчанию, который является просто "init" без параметров.

...