IBOutlet申报处

IBOutlet declaration place

在 Google 上搜索了这个混乱之后,我 found out 放置 IBOutlet 的最佳位置是:

@interface GallantViewController : UIViewController

@property (nonatomic, weak) IBOutlet UISwitch *switch;

@end

但是据我所说,现在 switch 变量在 GallantViewController 之外可见。这不奇怪吗?我以为这个错误的方法:

@interface GoofusViewController : UIViewController {
    IBOutlet UISwitch *_switch
}

@end

是这样的,移动它会修复它。例如,为什么要从另一个 class 操作按钮,而不是仅在 GallantViewController 中实现它的逻辑?

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

例如,这里是视图控制器的示例 .m 文件

#import "MainViewController.h"

@interface MainViewController ()
// the following property is not visible outside this file
@property (weak, nonatomic) IBOutlet UIView *someView;  
@end

@implementation MainViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
}

@end

从技术上讲,.m 文件中的 @interface 是一个 class 扩展名(在 class 上也称为匿名类别),但这没有实际意义兴趣。这只是一种将私有属性添加到 class.

的方法