Бесконечные рекурсивные вызовы initWithCoder при создании экземпляра xib в раскадровке

Чтобы повторно -использовать определенное подпредставление в моем приложении (, который основан на раскадровке ), я решил создать подпредставление в виде пера и загрузить его. Для этого я сделал следующее:

У меня есть подкласс UIView, который мы можем назвать Widget. Я создаю соответствующий файл xib, устанавливаю свойство владельца файла для моего нового подкласса, подключаю IBOutlets.

Затем в моей раскадровке у меня есть uiview внутри контроллера представления, и я устанавливаю его класс в класс Widget, который я создал.

В классе виджетов я переопределяю initWithCoder и загружаю перо следующим образом.:

-(id)initWithCoder:(NSCoder *)aDecoder{
    if ((self = [super initWithCoder:aDecoder])){
        [self addSubview:[[[NSBundle mainBundle] loadNibNamed:@"Widget" owner:self options:nil] objectAtIndex:0]];
    }
    return self;
}

В этот момент приложение аварийно завершало работу, и установка здесь точки останова показала, что initWithCoder вызывается снова и снова.

Кажется, я смешал два метода использования пера в этой ситуации, но я не понимаю, где я ошибся. При необходимости я могу вывести трассировку стека, но в основном это бесконечные вложенные вызовы одной и той же функции.

5
задан Chris 4 May 2012 в 20:13
поделиться