Что такое «конструктор» Objective-C?

#objective-c #cocoa #constructor #initialization

#objective-c #cocoa #конструктор #инициализация

Вопрос:

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

 @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.

Комментарии:

1. RSSEntry *entry = [RSSEntry new]; или RSSEntry *entry = [[RSSEntry alloc] init];

Ответ №1:

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

Комментарии:

1. Просто предупреждаю, что ссылка мертва. Может быть, стоит добавить код к ответу??

2. Альтернативный контент для неработающей ссылки: mycodetips.com/objective-c /…

Ответ №2:

вы инициализируете объект, подобный этому

 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;
}
  

Это инициализация для подкласса UIViewController, у другого класса есть инициализация по умолчанию, которая является просто «инициализацией» без параметра.