在Google上搜索此混淆后,我found out表示放置IBOutlet
的最佳位置是:
@interface GallantViewController : UIViewController
@property (nonatomic, weak) IBOutlet UISwitch *switch;
@end
但根据我的说法,现在switch
变量在GallantViewController
之外可见。这不奇怪吗?我认为这是错误的方法:
@interface GoofusViewController : UIViewController {
IBOutlet UISwitch *_switch
}
@end
表现得像这样,移动它会修复它。你为什么要在另一个类中操作一个按钮而不是在GallantViewController
中实现它的逻辑?
答案 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
是类扩展(也称为类中的匿名类别),但这没有实际意义。它只是一种向类中添加私有属性的方法。