#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, у другого класса есть инициализация по умолчанию, которая является просто «инициализацией» без параметра.