我想知道哪个地方最适合从故事板放置IBOutlets:
a)在头文件(.h)
中b)在.m文件中创建的类扩展
谢谢
此致
答案 0 :(得分:13)
你必须记住.h是一个公共标题。
所以如果其他类可以访问它们,请将IBOutlet
放在那里。
然而,即使你能做到这一点。我会说在公共标题中公开IBOutlet
并不是一个好习惯(从面向对象的角度来看),因为你暴露了一些应该只对谁可见的实现细节。
简而言之,将IBOutlet
放在.m
的类扩展名中是一种很好的做法。
答案 1 :(得分:8)
来自Apple的Resource Programming Guide: Nib Files:
奥特莱斯通常被认为是定义类的私人;除非有理由公开公开财产,否则将财产声明隐藏为类扩展。
答案 2 :(得分:4)
如果您不想公开展示该商店,那么课程延期是最佳选择。您的.h
应该整洁干净,并且应该只包含那些公开的方法或属性(可供其他程序员使用)。
通过这种方式,你不会因为.h
文件中没有不必要的ivars和方法减速而混淆你的队友
所有关于管理代码和减少混淆,否则Objective-C中没有私有方法/属性
另外,如果您检查任何苹果样本,他们会遵循相同的模式。例如LoadingStatus.m有代码
#import "LoadingStatus.h"
@interface LoadingStatus ()
@property (nonatomic, strong) UIActivityIndicatorView *progress;
@property (nonatomic, strong) UILabel *loadingLabel;
@end
答案 3 :(得分:3)
假设这是针对视图控制器的,则选项b更好,因为您不应该公开公开这些出口以供其他类直接交互。他们应被视为您的私人知识。您的控制器应该公开一个不同的,更合适的接口。
如果它是一个视图,你应该如何解决问题,因为MVC将引导你暴露出口以允许控制器使用它们。 MVVM会引导您隐藏出口,以便视图传递给视图模型对象并在内部配置出口。
答案 4 :(得分:1)