2011-07-04 40 views
1

据我所知,在nib文件中引用对象的常用方法是创建一个IBOutlet对象,然后在Interface Builder中用蓝线连接它。创建一个IBOutlet或UIView?

但是我刚刚在Lynda.com上看到一个视频,在那里,培训师在头文件中创建了一个UIView对象,并将它连接到他在Interface Builder中的UIView对象。

所以我的问题是:使用IBOutlet对象而不是简单地使用与IB中的对象相同类的对象有什么好处?有区别吗?

回答

4

IBOutlet只是Interface Builder的提示。 IBOutlets可以是任何东西。 UIViewUIButtonUITextView

@property (nonatomic, retain) IBOutlet UIView * Foo; 

在上面的例子,什么是富?一个IBOutlet或一个UIView?它的均为。但你的问题不允许这样做。

你可能想看看苹果的文档在这里: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,你一定会发现他们确实有一些真实的类型。

+0

如果我们正在创建IBOutlets如何以及何时分配内存? – Dev

2

IBOutlet只是一个关键字,向IB表明:“嘿,这应该是一个出口!”这不是一个真正的对象类型 - 它被预处理器从字面上删除。如果您指定插座的类型是UIVIew,那么IB将确保它只能连接到UIView类型的东西。