2014-04-01 4 views
1

Xcode5 окружающая среда только. (Не более старые версии.)Действительно ли Xcode/IB НЕ проверяет протоколы?

1) создайте новый класс под названием say Test. это UIViewController

@interface Test:UIViewController 

2) в раскадровку, сделать новый экран, UIViewController, изменить его на «Тест»

очевидно, если добавить элемент управления (например, кнопка) на раскадровке вы можете перетащить его в IBOutlet, определенный в Test.h. Нет проблем.

3) Теперь в test.h добавить два протокола ..

@interface Test:UIViewController 
      < 
      UICollectionViewDataSource, 
      UICollectionViewDelegateFlowLayout 
      > 

4) теперь IB перетащить небольшой UICollectionView в вид.

5) нажмите на просмотр коллекции, инспектор соединений. Теперь, перетащить делегат и DataSource в "Test"

Все работает правильно .. нет проблем.

Однако. Отсоедините эти соединения. Вернитесь к шагу (3). Не делайте шаг 3. Другими словами, вы «забыли», чтобы добавить протоколы в Test.

Теперь попробуйте шаг (5)

На самом деле (я считаю) ... он работает отлично.

Это мне кажется странным, что вы можете перетащить на UICollectionViewDataSource (скажем), когда, на самом деле, это просто НЕ UICollectionViewDataSource (!)

(Естественно, вы не можете перетащить, скажем, в любом месте нет IBOutlet.)

(A) Does all else посмотреть это поведение, из-за этого я прищурился, как обычно?

(B) Возможно, это ошибка ошибка/упущение?

(C) Есть ли что-нибудь еще, что я пропускаю («О, это должно быть так, потому что ...»)

Приветствиях

+1

На самом деле, кажется. Даже я включил предупреждения для «Неполные протоколы Objective-C» в настройках сборки. – ismailgulek

+0

Возможно, вы правы ... конвертировать комментарий в ответное время? – Fattie

ответ

1

Да, это правда. UIB не проверяет, какой метод протокола реализован. Даже если вы включили предупреждения для Incomplete Objective-C Protocols в настройках Build для своего проекта, его поведение будет таким же.

+0

Это похоже на его решение! CHEERS !!! – Fattie

Смежные вопросы