这是真的Xcode / IB不检查协议吗?

时间:2014-04-01 13:07:58

标签: xcode interface-builder protocols iboutlet

仅限Xcode5环境。 (不是旧版本。)

1)创建一个名为say Test的新类。这是一个UIViewController

@interface Test:UIViewController

2)在storyboard中,制作一个新的屏幕,一个UIViewController,将其改为“Test”

显然,如果在故事板上添加一个控件(比如一个按钮),可以将它拖到Test.h中定义的IBOutlet中。没问题。

3)现在在Test.h中添加两个协议..

@interface Test:UIViewController
          <
          UICollectionViewDataSource,
          UICollectionViewDelegateFlowLayout
          >

4)现在在IB中将一个小的UICollectionView拖入视图。

5)点击集合视图,连接检查器。现在,将委托和dataSource拖到“测试”

一切正常.. 没问题

然而即可。断开这些连接。回到步骤(3)。 不要执行第3步。换句话说,您已“忘记”将协议添加到测试中。

现在尝试步骤(5)

事实上(我相信)......它运作良好。

我觉得你可以拖到UICollectionViewDataSource(比方说),实际上它根本就不是UICollectionViewDataSource(!)

(当然,你不能在任何没有IBOutlet的地方拖动按钮。)

(A)其他人是否会看到这种行为,我是否像往常一样搞砸了?

(B)这可能是已知错误/遗漏吗?

(C)还有什么我想念的吗(“哦,它必须是那样的,因为......”)

干杯

1 个答案:

答案 0 :(得分:1)

是的,这是真的。 UIB不检查是否实现了任何协议方法。即使您在项目的“构建设置”中为Incomplete Objective-C Protocols启用了警告,其行为也是相同的。