У меня есть несколько специально созданных 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];