有人可以用人类可以理解的方式解释“Outlet”是什么吗?
答案 0 :(得分:26)
这是一个在Interface Builder中显示的实例变量,因此您可以使用IB将另一个对象插入插座。
当您加载笔尖时,笔尖加载系统将执行必要的魔法,以确保在每个插座中显示正确的对象。
编辑:我打算写一篇关于这张图片的完整博客文章(我在完成图片后改变了主意),但即使是单独的,它也应该有助于澄清人们的出路。你走了:
(来源: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文件中指定。