IBOutlet申报地点

时间:2015-03-02 09:37:05

标签: ios objective-c iboutlet

在Google上搜索此混淆后,我found out表示放置IBOutlet的最佳位置是:

@interface GallantViewController : UIViewController

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

@end

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

@interface GoofusViewController : UIViewController {
    IBOutlet UISwitch *_switch
}

@end

表现得像这样,移动它会修复它。你为什么要在另一个类中操作一个按钮而不是在GallantViewController中实现它的逻辑?

1 个答案:

答案 0 :(得分:4)

@interface可以出现在.h文件(公共属性)和.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

从技术上讲,@interface文件中的.m是类扩展(也称为类中的匿名类别),但这没有实际意义。它只是一种向类中添加私有属性的方法。