据我所知,在nib文件中引用对象的常用方法是创建一个IBOutlet
对象,然后在Interface Builder中将其与蓝线连接。
但我刚刚在Lynda.com上看到一个视频而不是这样做,教练在头文件中创建了一个UIView
对象,并将其连接到Interface Builder中的UIView
对象。 / p>
所以我的问题是:使用IBOutlet
对象而不是简单地使用与IB中对象类相同的对象有什么好处?有区别吗?
答案 0 :(得分:4)
IBOutlet
只是Interface Builder的一个提示。 IBOutlets可以是任何东西。 UIView
,UIButton
,UITextView
等
@property (nonatomic, retain) IBOutlet UIView * Foo;
在上面的例子中,什么是Foo? IBOutlet还是UIView?这是两者。但是你的问题不允许这样做。
您可以在此处查看Apple文档:http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/ObjCTutorial/06Controller/06Controller.html
他们进一步描述了IBOutlet的作用:
对象可以与其他对象通信 通过发送应用程序中的对象 消息到网点。一个插座可以 引用任何对象 应用程序:用户界面对象 例如文本字段和按钮,模型 对象(通常是自定义的实例) 类),甚至应用程序 对象本身。奥特莱斯很特别 实例变量,因为它们可以 在Interface Builder中设置。
和
注意:IBOutlet是一个空定义的宏 C预处理器删除了 编译时间。 Interface Builder使用 它来确定出口声明 它可以显示它们 视觉上连接插座。
总结:
IBOutlets几乎可以引用任何东西。它们只是Interface Builder的一个提示,它允许您在加载XIB时设置它们的值。实际上,文本IBOutlet
在Interface Builder世界之外的意义如此之少,以至于它从最终产品中被剥离,因为除了帮助Interface Builder之外,它完全不能用于任何目的。
我会回去查看你正在联系的其他一些事情IBOutlets
,你肯定会发现他们确实有一些真正的类型。
答案 1 :(得分:2)
IBOutlet只是一个向IB表明的关键词,“嘿,这应该是一个出路!”它实际上不是一种对象类型 - 它实际上是由预处理器擦除的。但是,如果指定出口类型为UIVIew,则IB将确保它只能连接到UIView类型的东西。