Правильный способ инициализации UIView с.xib и вспомогательным классом

У меня есть несколько специально созданных UIView, которые используют файлы.xib для макета и вспомогательные классы для дополнительной настройки. Я создаю эти классы, используя alloc/init и вызывая loadNibNamed в моем пользовательском методе инициализации, но это вызывает утечку памяти. Кто-то указал, что часть alloc на самом деле создала собственный объект, который протекал, поэтому я изменил свой метод инициализации на этот:

- (id)init 
{
    [self autorelease];
    self = [[[[NSBundle mainBundle] loadNibNamed:@"AssignmentView" owner:nil options:nil] lastObject] retain];
    [self setupBranding];

    UITapGestureRecognizer *tapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapDetected:)];
    [self addGestureRecognizer:tapRecognizer];
    [tapRecognizer release];

    return self;
}

Однако теперь, когда я запускаю код анализа, я получаю это предупреждение «Возврат 'self', пока он не установлен на результат '[ (super or self )init...]'». Итак, мой вопрос: как правильно делать пользовательские UIViews с классом поддержки?

Поскольку меня спросили, я использовал этот приведенный выше код следующим образом:

AssignmentView * assignmentView = [[AssignmentView alloc] init];
[self.view addSubview:assignmentView];
9
задан Pramod More 30 May 2018 в 12:07
поделиться