`
慭慭流觞
  • 浏览: 45593 次
  • 性别: Icon_minigender_1
  • 来自: 河南
社区版块
存档分类
最新评论

IBOutlet和IBAction的作用

    博客分类:
  • iOS
阅读更多
    If you go into the UIKit_Framework and look at the NSNibDeclarations.h header file, you’ll see that they’re defined like this: macros(宏)
#define IBAction void
#define IBOutlet
#define IBOutletCollection(ClassName)
    Confused? These two keywords do absolutely nothing as far as the compiler is concerned. IBOutlet gets entirely removed from the code before the compiler ever sees it. IBAction resolves to a void return type, which just means that action methods do not return a value. So, what’s going on here?
    The answer is simple, really: IBOutlet and IBAction are not used by the compiler. They are used by Interface Builder. Interface Builder uses these keywords to parse out the outlets and actions available to it. Interface Builder can only see methods that are prefaced with IBAction and can only see variables or properties that are prefaced with IBOutlet. Also, the presence of these keywords tells other programmers, looking at your code in the future, that the variables and methods in question aren’t dealt with entirely in code. They’ll need to delve into the relevant nib file to see how things are hooked up and used.

这两个宏在UIKit_Framework 中定义
IBAction(行为)和IBOutlet(插座)只是告诉InterfaceBuilder这些是用于界面交互的,打开InterfaceBuilder后,首先扫描IBAction和IBOutlet,InterfaceBuilder只识别以IBAction开头的方法和以IBOutlet开头的属性,代码别编译后,IBAction被解析为void,而IBOutlet被解析为空。

http://eyecm.com/iboutlet-and-ibaction-that/

内存管理
如果一个变量在类中被定义为了 IBOutlet 那么你无需对其进行实例化,xib载入器会对其初始化。切记不要初始化两回,内存会溢出,而且对象锁定也会出错。
    如果一个变量在类中被定义为了 IBOutlet 那么你必须负责将其释放。xib载入器不会帮忙的。
需要注意的是,任何一个被声明为IBOutlet并且在Interface Builder里被连接到一个UI组件的成员变量,会被额外retain一次。
常见的情形如: IBOutlet UILabel *label;
             -(IBAction) btnClicked:(id)sender;
这个label在Interface Builder里被连接到一个UILabel。此时,这个label的retainCount为2。
所以,只要使用了IBOutlet变量,一定需要在dealloc或者viewDidUnload里release这个变量
实现m文件中:
-(void) dealloc
{
    [label release];
    [super dealloc];
}

http://blog.joycode.com/ghj/archives/2012/05/22/116258.joy
分享到:
评论

相关推荐

    详解iOS应用使用Storyboard布局时的IBOutlet与IBAction

    在iPhone平台上,引入了IBOutlet与IBAction。通过在变量前增加IBOutlet 来说明该变量将与界面上的某个UI对象对应,在方法前增加IBAction来说明该方法将与界面上的事件对应.  下面通过一个连接网络服务器(Network...

    iOS XIB创建view

    3. **连接IBOutlet和IBAction**:为了使代码与XIB文件中的元素交互,我们需要创建IBOutlet和IBAction。IBOutlet用于连接视图中的控件到代码中的实例变量,而IBAction则用于连接控件的事件到代码中的方法。在...

    一个简单的iphone checkbox demo

    这通常是通过设置IBOutlet和IBAction完成的。IBOutlet用于连接UISwitch到代码中的一个变量,这样就可以在代码中访问和修改它的状态。IBAction则用于处理用户的交互事件,例如当用户改变UISwitch的状态时触发的事件。...

    计算三角形的面积

    在Storyboard中,为这些元素分配IBOutlet和IBAction,以便在代码中引用它们。 对于Storyboard中的代码绑定,假设我们有IBOutlet和IBAction如下: ```swift @IBOutlet weak var baseTextField: UITextField! @...

    自定义封装分享页面弹框

    3. 在Xib中,选择File's Owner,将其Class设置为`CustomShareView`,然后连接IBOutlet和IBAction到对应的UI元素。 步骤四:封装和使用 1. 在需要使用自定义分享弹框的地方,加载并显示`CustomShareView`。这通常在...

    IOS 使用XIB 自定义View

    为了在代码中与XIB中的UI元素交互,我们需要创建IBOutlet和IBAction。IBOutlet用于引用UI元素,而IBAction则用于响应用户的操作。在Interface Builder中,可以通过Control-drag的方式从视图到对应的UIViewController...

    三列按钮连线

    2. **IBOutlet与IBAction**:为了实现按钮间的连接,你需要在对应的ViewController类中创建IBOutlet和IBAction。IBOutlet用于连接界面元素到代码,而IBAction则定义了当用户执行特定操作(如点击按钮)时调用的函数...

    object c/iphone 开发 试题

    11. **IBOutlet和IBAction的使用**:IBOutlet是对象的引用,IBAction是方法的标记,用于Interface Builder中的交互。 12. **内存管理实践**:创建对象后,需要在不再使用时调用`release`或`autorelease`来释放内存...

    使用NIB父类来创建UIVIEW

    4. **连接IBOutlet和IBAction**:在Interface Builder中,我们可以将NIB文件中的UI元素与`UIView`子类的属性(IBOutlet)和方法(IBAction)连接起来,以便在代码中直接操作这些元素。 5. **使用NIB父类**:现在...

    分节表视图_静态

    6. **连接IBOutlet和IBAction**:将表视图和任何其他需要交互的元素与ViewController中的IBOutlet和IBAction连接起来。 7. **设置DataSource和Delegate**:在ViewController中,声明UITableViewDataSource和...

    ios原生二维码扫描

    做iOS的二维码扫描,有两个第三方库可以选择,ZBar和ZXing。今天要介绍的是iOS7.0后...IBOutlet、IBAction如下: @property (weak, nonatomic) IBOutlet UIView *viewPreview; @property (weak, nonatomic) IBOutlet

    通过xib自定义cell

    在Assistant Editor中,开启Auto-Connect(⌥⌘Enter),然后将UI元素拖动到对应的代码类(这里假设我们已经创建了一个名为`CustomTableViewCell`的Swift类),创建IBOutlet和IBAction。这使得我们在代码中可以直接...

    IOS封装纯代码和xib通用控件

    3. **连接IBOutlet和IBAction**: 在XIB中,可以将控件的属性和事件处理方法连接到类的IBOutlet和IBAction,实现代码与界面的绑定。 4. **加载XIB**: 在需要使用自定义控件的地方,可以通过以下方式加载XIB: ```...

    IOS开发基础

    6. IBOutlet和IBAction:IBOutlet是将界面元素和程序中的对象连接起来的方式,IBAction则是响应用户界面事件的方法。在IOS开发中,IBOutlet用于将界面元素连接到程序中的对象,而IBAction用于定义用户界面事件的响应...

    半手工打造一個Viewer (配合NIB)

    4. **手动绑定和数据传递**:虽然Interface Builder通常用于自动绑定,但“半手工打造”可能意味着博主会介绍如何手动建立对象之间的联系,例如使用`IBOutlet`和`IBAction`,以及如何传递数据和事件处理。...

    芬能cpk数据统计软件程序源代码1

    `@property`声明了多个IBOutlet和IBAction,IBOutlet用于连接界面元素,例如表格视图、文本字段和按钮,而IBAction则与用户交互事件关联,如加载CSV数据和搜索功能。 在`dataTableView.m`文件中,导入了更多第三方...

    《iPhone App开发实战手册》中文高清版

    书中会详细解释如何使用Storyboard创建界面布局,理解UIViewController及其子类的作用,以及如何使用IBOutlet和IBAction连接界面元素与代码。同时,你还会学到如何运用Auto Layout实现自适应界面,使应用能在不同...

    Xcode中使用slider和switch控件实现音乐的播放和音量的控制

    通过Control-drag操作,将UISlider和UISwitch连接到ViewController的Swift文件中,创建IBOutlet用于获取控件的当前状态,创建IBAction用于响应用户交互。 ```swift @IBOutlet weak var volumeSlider: UISlider! @...

Global site tag (gtag.js) - Google Analytics