iOS loadNibNamed путаница, что является лучшей практикой?

Я знаком с большей частью процесса создания XIB для моего собственного подкласса UIView, но не все у меня работает должным образом - это в основном связано со связыванием IBOutlets. Я могу заставить их работать, как кажется, окольным путем.

Моя установка такова:

У меня есть MyClass.h и MyClass.m. У них есть IBOutlets для UIView (называемый view) и UILabel (называемый myLabel). Я добавил свойство 'view', потому что некоторые примеры в Интернете, казалось, подсказывали, что вам это нужно, и это фактически решило проблему, из-за которой я получал сбой, потому что не смог найти свойство view, я думаю, даже в родительском классе UIView ,У меня есть файл XIB с именем MyClass.xib, и его пользовательским классом «Владелец файла» является MyClass, который правильно заполнен после того, как мои .h и .m для этого класса существуют.

Мой метод инициализации - это то, где у меня возникают проблемы.

Я попытался использовать метод loadNibNamed из NSBundle mainBundle и установить для владельца значение «self», надеясь, что я создам экземпляр представления и он автоматически сопоставит свои выходы с выходами в моем классе (я знаю, как это сделать и я с этим осторожен). Затем я подумал, что хочу сделать «себя» равным подпредставлению с индексом 0 в этом пике, а не делать

self = [super init];

или что-нибудь в этом роде.

Я чувствую, что я делаю что-то здесь не так, но примеры в Интернете имели аналогичные вещи, происходящие в методе init, но они присваивают это подпредставление 0 свойству представления и добавляют его как дочерний элемент - но это не значит, что два экземпляра MyClass? Один по существу не связан с IBOutlets, содержащий дочерний MyClass, инстанцированный через loadNibNamed? Или, в лучшем случае, это не экземпляр MyClass с дополнительным посредником UIView, содержащий все IBOutlets, которые я изначально хотел, как прямые потомки MyClass? Это вызывает небольшое раздражение, когда дело доходит до таких вещей, как instanceOfMyClass.frame.size.width, поскольку он возвращает 0, когда представленный дочерний UIView возвращает реальный размер кадра, который я искал.

То, что я делаю неправильно, я связываюсь с loadNibNamed внутри метода init? Должен ли я делать что-то более подобное?

MyClass *instance = [[MyClass alloc] init];
[[NSBundle mainBundle] loadNibNamed:@"MyClass" owner:instance options:nil];  

Или вот так?

MyClass *instance = [[[NSBundle mainBundle] loadNibNamed:@"MyClass" owner:nil options:nil] objectAtIndex:0]; 

Заранее спасибо за любую помощь.

Ответы на вопрос(3)

Ваш ответ на вопрос