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

Tha*_*nks 14 cocoa objective-c interface-builder

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

Pet*_*sey 26

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

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

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

出口关系.http://boredzo.org/images/The-outlet-relationship-small.png


Pau*_*son 11

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

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

替代文字http://img27.imageshack.us/img27/5512/picture820090228.png

在此示例中,delegate是UIApplication的成员变量,它也是IBOutlet.


Rob*_*Rob 10

我只是把它想象成一个UI控件的指针.一旦我在脑海中建立了这种心理联系,那就有意义了.

  • 不必要.它也可能是NSController或代表.指向另一个对象的指针更准确. (9认同)

Eri*_*lje 5

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


小智 5

IBOutlet关键字的定义如下:

#ifndef IBOutlet
#define IBOutlet
#endif
Run Code Online (Sandbox Code Playgroud)

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