Невозможно подключить IBOutlet UIView, объявленный в протоколе к объекту xib

У меня этот IBOutlet объявлен в протоколе:

@protocol SomeProtocol <NSObject> @property (nonatomic, strong) IBOutlet UIView* view; @end 

Тогда есть класс, который наследует от этого протокола:

 //.h @interface SomeClass : NSObject <SomeProtocol> @end //.m @implementation TSNFactoryViews @synthesize view = _view; @ned 

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

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

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

РЕДАКТИРОВАТЬ:

SomeClass в моем случае является фабричным классом, который генерирует экземпляры просмотра и / и сохраняет экземпляры представления. Я делаю это так несколько лет без проблем. Пульт соединения слева от представления IBOutlet UIView ; * просто исчез. У меня есть много xib-файлов, где владельцы файлов настроены на один заводский класс (в этом сообщении SomeClass), генерируя пользовательские представления.

введите описание изображения здесь

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

Вы должны добавить IBOutlet UIView * в интерфейс SomeClass, тогда вы сможете подключить его.

Кроме того, совершенно не имеет смысла объявлять IBOutlet в протоколе. Протокол должен объявлять интерфейс или API – средства реализации должны соответствовать классу, придерживающемуся протокола. Поэтому сомнительно объявлять свойства вообще, но вы должны скорее объявить методы (геттеры или сеттеры).

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

 - (UIView*)view; 

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

 @property (nonatomic, strong) IBOutlet UIView* view;