Ios IBOutlet最佳实践

Ios IBOutlet最佳实践,ios,objective-c,uistoryboard,iboutlet,Ios,Objective C,Uistoryboard,Iboutlet,我想知道哪个地方最适合放置故事板中的IBOutlet: a) 在头文件(.h)中 b) 在.m文件上创建的类扩展名中 多谢各位 关于假设这是针对视图控制器的,那么选项b更好,因为您不应该公开插座,以便其他类直接与之交互。他们应该被认为是你的私人知识。您的控制器应该公开一个不同的、更合适的接口 如果它是一个视图,那么你应该如何处理这个问题就有点灰色了,因为MVC会引导你暴露出插座,让控制器使用它们。MVVM将引导您隐藏插座,以便将视图传递给视图模型对象,并在内部配置插座。如果您不想公开该插座,则类

我想知道哪个地方最适合放置故事板中的IBOutlet:

a) 在头文件(.h)中

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

多谢各位


关于

假设这是针对视图控制器的,那么选项b更好,因为您不应该公开插座,以便其他类直接与之交互。他们应该被认为是你的私人知识。您的控制器应该公开一个不同的、更合适的接口


如果它是一个视图,那么你应该如何处理这个问题就有点灰色了,因为MVC会引导你暴露出插座,让控制器使用它们。MVVM将引导您隐藏插座,以便将视图传递给视图模型对象,并在内部配置插座。

如果您不想公开该插座,则类扩展是最佳位置。您的
.h
应该整洁干净,并且应该只包含那些公共的方法或属性(可供其他程序员使用)。 这样,您就不会因为在
.h
文件中没有不必要的IVAR和方法而混淆您的队友

这一切都是关于管理代码和减少混淆,否则Objective-C中没有私有方法/属性

此外,如果你检查任何苹果样品,它们都遵循相同的模式。e、 g.有代码

#import "LoadingStatus.h"

@interface LoadingStatus ()

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

@end
来自苹果的:

门店通常被认为是定义类的私有门店;除非有理由公开属性,否则将属性声明隐藏为类扩展

@interface可以出现在.h文件(公共属性)和.m文件(私有属性)中。IBOutlets应该在.m文件中声明

如果您感兴趣,请阅读此


干杯

您必须记住.h是一个公共头

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

然而,即使你能做到。我想说的是,在公共头中公开
IBOutlet
不是一个好的实践(从面向对象的角度来看),因为您公开的一些实现细节应该只对关注的人可见


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

如果您想从其他VC访问该outlet,那么.h则不然。m@Bhavin最佳实践会让你不想从另一个VC那里进入这个渠道