Enc*_*ada 15 cocoa objective-c
假设我有一个视图控制器或一个窗口控制器,它(通常)是相应XIB文件中的"文件所有者".
(众所周知)IBOutlet在控制器类中有s 非常常见,然后可以使用Interface Builder在XIB中连接.
到目前为止,我一直IBOutlet在我的界面(.h)文件中创建实例变量.但是(众所周知)IBOutlets通常是控制器类的私有机制; 外人甚至不应该了解他们.
这就是为什么我现在 - 自Objective-C最近开始提供这样做的能力 - 想要将我IBOutlet的所有s放入我的实现(.m)文件.
我试过这样做,这似乎工作正常.我的问题是:为什么这有效?我的印象是Interface Builder只能查看类的头文件 - 而不是查看它们的实现文件.我错了吗?为什么Interface Builder可以"看到"实现文件?将IBOutlet实例变量放入实现文件中是否有潜在危险?
Geo*_*roy 12
注意:因为Xcode 4会解析您的头文件和实现文件以进行索引,所以您可以在实现(.m)文件中定义操作和出口,而无需将它们放在头文件中,您可以直接从nib文件连接到实施文件.因此,您无需向可能正在使用您的类的客户端公开您的部分界面或操作.
并且将IBOutlet实例变量放入实现文件中是否有潜在危险?
是的,但没有那么多,因为在运行时缺少访问范围,因此可以访问任何声明的方法.即使该方法不可访问,分辨率也是在运行时完成的,并且该方法不附加访问范围信息.这可能已经实现,但Objective-C缺乏private,protected等等,如在C++或Java中.请注意,在运行时实现此类行为的速度会更慢.
| 归档时间: |
|
| 查看次数: |
3287 次 |
| 最近记录: |