Красиво изложенная статья.

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

Вы можете просто создать свой класс CustomView, иметь его главный экземпляр в xib со всеми подпредставлениями и выходами. Затем вы можете применить этот класс к любым экземплярам в ваших раскадровках или других xibs.

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

Просто сделайте это:

1. Импорт фреймворка BFWControls

2. Измените свой суперкласс с UIView на NibView (или с UITableViewCell на NibTableViewCell)

Вот и все!

Он даже работает с IBDesignable для визуализации вашего пользовательского представления (включая подпредставления из xib) во время разработки в раскадровке.

Вы можете прочитать больше об этом здесь:

https://medium.com/build-an-app-like-lego/embed-a-xib-in-a-storyboard-953edf274155

И вы можете получить фреймворк BFWControls с открытым исходным кодом здесь:

https://github.com/BareFeetWare/BFWControls

А вот простой фрагмент кода NibReplaceable, который управляет им, если вам интересно:
https://gist.github.com/barefeettom/f48f6569100415e0ef1fd530ca39f5b4

Том 👣