2012-02-04 108 views
5

我正在学习ObjC和iOS开发。我在应用程序中使用的每个组件都是以编程方式创建的(视图,按钮,标签等)。使用void而不是IBAction作为方法的返回类型

这里是我的代码

... 
UIButton *btn = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
[self.btn addTarget:self 
        action:@selector(someAction:) 
     forControlEvents:UIControlEventTouchDown]; 
.... 


-(void)someAction 
{ 
logic 
} 

我注意到,我可以用空白的,而不是作为IBAction为选择器的返回类型。这是正确的方法吗? 有没有什么隐患?

+0

[IBOutlet和IBAction]的可能重复(http://stackoverflow.com/questions/1643007/iboutlet-and-ibaction) – 2012-02-04 19:08:05

回答

17

使用IBAction告诉Xcode,您希望该方法作为Interface Builder中的操作方法提供。这是唯一的影响。否则它与void相同。事实上,在UINibDeclarations.h,你会发现这一点:

#define IBAction void 

使用IBAction是,即使你不使用笔尖文件是一个好主意,因为它是一个信号,即你意在向读者(您或您的同事)使用该方法作为UI控件的操作。

+0

不能开一个新主题。我更愿意以编程方式创建一切,而不是使用IB。也许听起来很疯狂,但这种方法对我来说最简单。他们有没有使用这种方法? – objlv 2012-02-04 19:15:55

+4

是的,有利弊。使用或不使用IB往往是一个宗教论证。我大量使用它。 Apple的大多数示例应用程序都使用它。我假设不使用它的人喜欢写很多样板代码,并经过许多编辑 - 编译 - 运行周期,在代码中调整视图坐标,颜色和字体大小。 – 2012-02-04 19:27:22

+0

在Xcode的编辑器中,有一个小图标来指示它是否连接。对于非IB方法/财产使用IBAction/IBOutlet可能会造成混淆。但无论如何,这是一个品味问题。 – hoshi 2012-02-05 01:25:04

相关问题