IBOutlet最佳实践

8

我想知道从storyboards中放置IBOutlets的最佳位置:

a)在头文件(.h)中

b)在.m文件中创建的类扩展中

谢谢

问候


如果您想从其他 VC 访问该插座,则使用 .h,否则使用 .m。 - Bhavin Bhadani
@Bhavin 最佳实践会让你不想从另一个 VC 访问插座。 - Wain
5个回答

14

请记住,.h文件是公共头文件。

因此,如果您希望其他类可以访问,请将您的IBOutlet放在那里。

但是,即使您可以这样做。从面向对象的角度来看,我认为在公共头文件中公开IBOutlet并不是一个好习惯,因为您正在公开一些应该只对相关人员可见的实现细节。

简而言之,在.m的类扩展中放置IBOutlet是一个好的做法。


8

来自苹果公司的资源编程指南:Nib文件

Outlet通常被认为是定义类的私有属性;除非有公开属性的原因,否则请在类扩展中隐藏属性声明。


4
类扩展是最好的选择,如果您不想公开该插座。您的.h文件应该整洁干净,只包含那些公共方法或属性(供其他程序员使用)。
这样,您就不会因在.h文件中没有不必要的实例变量和方法声明而困扰您的队友了。
一切都关乎管理代码并减少混淆,否则Objective-C中没有私有方法/属性。
另外,如果您检查任何苹果示例,它们都遵循相同的模式。例如LoadingStatus.m具有代码。
#import "LoadingStatus.h"

@interface LoadingStatus ()

@property (nonatomic, strong) UIActivityIndicatorView *progress;
@property (nonatomic, strong) UILabel *loadingLabel;

@end

3
假设这是针对视图控制器的,选项b更好,因为您不应该公开暴露插座以供其他类直接交互。它们应该被视为您的私有知识。您的控制器应该提供不同且更适当的接口。
如果这是一个视图,那么你应该更加灵活地处理这个问题,因为MVC会引导你公开插座以允许控制器使用它们,而MVVM则会引导你隐藏插座,以便视图传递视图模型对象并在内部配置插座。

1
@interface可以出现在.h文件(公共属性)和.m文件(私有属性)中。IBOutlets应该声明在.m文件中。
如果您感兴趣,请阅读此topic
干杯!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接