objective-c – 实现(.m)文件中的IBOutlet实例变量

objective-c – 实现(.m)文件中的IBOutlet实例变量,第1张

概述假设我有一个视图控制器,或一个窗口控制器,它是(通常)相应的XIB文件中的“文件所有者”. 这是(众所周知的)在控制器类中具有IBOutlets的常见方法,然后您可以使用Interface Builder在XIB中连接. 到目前为止,我已经在我的界面(.h)文件中创建了IBOutlet实例变量.但是(大家都知道)IBOutlets通常是控制器类的私有机制;外界不应该知道他们. 这就是为什么我现在, 假设我有一个视图控制器,或一个窗口控制器,它是(通常)相应的XIB文件中的“文件所有者”.

这是(众所周知的)在控制器类中具有IBOutlets的常见方法,然后您可以使用Interface Builder在XIB中连接.

到目前为止,我已经在我的界面(.h)文件中创建了IBOutlet实例变量.但是(大家都知道)IBOutlets通常是控制器类的私有机制;外界不应该知道他们.

这就是为什么我现在,因为Objective-C最近开始提供这样的功能 – 想把我所有的IBOutlets放入我的实现(.m)文件中.

我试过这样做,这似乎工作正常.我的问题是这些:为什么这样做?我的印象是,Interface Builder只能查看类的头文件,而不是窥视他们的实现文件.我错了吗? Interface Builder可以如何“查看”实现文件?将IBOutlet实例变量放入实现文件中可能有潜在危险吗?

解决方法 从 Xcode 4 User Guide

Note: Because Xcode 4 parses both your header files and implementation
files for indexing,you can define actions and outlets in
implementation (.m) files without needing to place them in the header
file and you can make connections directly from the nib file to the
implementation file. Therefore,you do not need to expose parts of
your interface or actions to clIEnts who might be using your classes.

并且将IBOutlet实例变量放入实现文件中是否有潜在的危险?

是的,但是没有任何声明的方法可以被访问,因为在运行时缺少访问范围.即使方法不可访问,分辨率也是在运行时完成的,并且没有访问范围信息附加到该方法.这可能已被实现,但Objective-C缺少私有,受保护等等,如C或Java.请注意,在运行时实现这样的行为会慢得多.

总结

以上是内存溢出为你收集整理的objective-c – 实现(.m)文件中的IBOutlet实例变量全部内容,希望文章能够帮你解决objective-c – 实现(.m)文件中的IBOutlet实例变量所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1030318.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存