创建 IBOutlet 还是 UIView?

发布于 2024-11-18 04:46:10 字数 242 浏览 2 评论 0原文

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

但我刚刚在 Lynda.com 上看到了一个视频,培训师并没有这样做,而是在头文件中创建了一个 UIView 对象,并将其连接到 Interface 中的 UIView 对象建设者。

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

The usual method, as far as I know, of referring to an object in a nib file is creating an IBOutlet object and then connecting it in Interface Builder with the blue line.

But I just saw a video in Lynda.com where instead of doing that, the trainer created an UIView object in the header file, and connected it to his UIView object in Interface Builder.

So my question is: what's the benefit of using an IBOutlet object instead of simply using an object which is the same class of the object in IB? Is there a difference?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

上课铃就是安魂曲 2024-11-25 04:46:10

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

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

在上面的例子中,Foo是什么? IBOutlet 还是 UIView? 两者。但你的问题不允许这样做。

您可能想在此处查看 Apple 文档: http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/ObjCTutorial/06Controller/06Controller.html

他们进一步描述IBOutlet的作用:

一个对象可以与其他对象进行通信
通过发送应用程序中的对象
向网点发送消息。一个插座可以
引用 an 中的任何对象
应用程序:用户界面对象
例如文本字段和按钮、模型
对象(通常是自定义的实例
类),甚至应用程序
对象本身。奥特莱斯很特别
实例变量,因为它们可以是
在 Interface Builder 中设置。

和:

注意:IBOutlet 是一个空定义的宏
C 预处理器删除的
编译时间。界面生成器使用
它可以识别出口声明,以便
它可以在什么时候显示它们
直观地连接插座。

总之:

IBOutlets 几乎可以引用任何内容。它们只是 Interface Builder 的一个提示,让您在加载 XIB 时设置它们的值。事实上,文本 IBOutlet 在 Interface Builder 世界之外的意义很小,以至于它被从最终产品中删除,因为除了帮助 Interface Builder 之外,它完全没有任何功能。

我会回去检查一下您作为 IBOutlets 连接的其他一些东西,您肯定会发现它们实际上确实有一些真实的类型。

IBOutlet is just a hint to Interface Builder. IBOutlets can be anything. UIView, UIButton, UITextView, etc.

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

In the example above, what is Foo? An IBOutlet or a UIView? It's both. But your question doesn't allow for that.

You might want to check out the Apple documentation here: http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/ObjCTutorial/06Controller/06Controller.html

Where they further describe the role of IBOutlet:

An object can communicate with other
objects in an application by sending
messages to outlets. An outlet can
reference any object in an
application: user interface objects
such as text fields and buttons, model
objects (usually instances of custom
classes), and even the application
object itself. Outlets are special
instance variables because they can be
set in Interface Builder.

And:

Note: IBOutlet is a null-defined macro
that the C preprocessor removes at
compile time. Interface Builder uses
it to identify outlet declarations so
that it can display them when
connecting outlets visually.

In summary:

IBOutlets can reference pretty much anything. They are just a hint to Interface Builder which lets you set their value when you load the XIB. In fact, the text IBOutlet means so little outside of the Interface Builder world, that it gets stripped from the final product because it's completely non-functional for any purpose other than helping out Interface Builder.

I'd go back and check out some of the other things you were hooking up as IBOutlets, and you'll surely discover they actually do have some real type.

情丝乱 2024-11-25 04:46:10

IBOutlet 只是一个向 IB 指示的关键字,“嘿,这应该是一个插座!”它并不是真正的对象类型——它实际上是被预处理器删除的。但是,如果您指定插座的类型为 UIVIew,IB 将确保它只能连接到 UIView 类型的事物。

IBOutlet is just a keyword to indicate to IB, "Hey, this should be an outlet!" It's not really an object type — it's literally erased by the preprocessor. If you specify that the outlet is of type UIVIew, though, IB will ensure that it can only be hooked up to UIView-type things.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文