是什么描述了Objective-c / Cocoa中最好的“Outlet”?

时间:2009-02-27 20:01:10

标签: objective-c cocoa interface-builder

有人可以用人类可以理解的方式解释“Outlet”是什么吗?

7 个答案:

答案 0 :(得分:26)

这是一个在Interface Builder中显示的实例变量,因此您可以使用IB将另一个对象插入插座。

当您加载笔尖时,笔尖加载系统将执行必要的魔法,以确保在每个插座中显示正确的对象。

编辑:我打算写一篇关于这张图片的完整博客文章(我在完成图片后改变了主意),但即使是单独的,它也应该有助于澄清人们的出路。你走了:

The outlet relationship.
(来源:boredzo.org

答案 1 :(得分:11)

从代码的角度来看,IBOutlet只是Interface Builder的提示。它实际上是一个宏,编译,甚至根本没有。也就是说,编译时编译器会完全删除。

但是Interface Builder可以扫描您的代码以获取IBOutlet,因此当您右键单击IB中的对象时,您可以看到可以连接到其他对象的所有插座。

alt text http://img27.imageshack.us/img27/5512/picture820090228.png

在此示例中,委托是UIApplication的成员变量,它也是IBOutlet。

答案 2 :(得分:10)

我只是将它视为指向UI控件的指针。一旦我在脑海中建立了这种心理联系,那就有意义了。

答案 3 :(得分:5)

我想说它们是将用户界面对象连接到使用它们的代码的桥梁。顾名思义,它们为您的代码“插入”UI提供了一个位置。

答案 4 :(得分:5)

IBOutlet关键字的定义如下:

#ifndef IBOutlet
#define IBOutlet
#endif

就编译器而言,IBOutlet绝对没有任何作用。它的唯一 目的是作为一个提示告诉Interface Builder这是我们的实例变量 要连接到笔尖中的对象。您创建和想要的任何实例变量 连接到nib文件中的对象必须以IBOutlet关键字开头。

答案 5 :(得分:3)

IBOutlet是一个符号,它向Interface Builder指示对象实例变量为

IBOutlet id ivar_name;

应作为相关类实例的出口。这允许您以图形方式连接Interface Builder中的对象,以便在加载NIB之后(即,当对象发送-awakeFromNib消息时),ivar_name的值将是指向您选择作为出口的对象的指针Interface Builder中的值。

从Objective-C语言的角度来看,IBOutlet毫无意义。

答案 6 :(得分:0)

outlet是代码中的实例变量(在X代码中),可以为其分配对用户界面对象的引用(在Interface Builder中)。您将用户界面对象插入实例变量。分配在Interface Builder创建的NIB文件中指定。