zoukankan      html  css  js  c++  java
  • IBAction和IBOutlet共同的和区别

    共同点:这两个宏在UIKit_Framework中定义。只有给属性设置了IBAction(行为)和IBOutlet(插座),才能够在storyboard里面进行连线。如:

    #import "ViewController.h"

    @interface ViewController ()
    @property (weak, nonatomic) IBOutlet UILabel *lable;
    @end

    @implementation ViewController

    -(IBAction)redClick
    {


    }

    @end

    不同的:

    从返回值的角度:IBAction相当于void

    从编译角度:IBAction和IBOutlet只是告诉InterfaceBuilder这些是用于界面交互的,打开InterfaceBuilder后,首先扫描IBAction和IBOutlet,InterfaceBuilder只识别以IBAction开头的方法和以IBOutlet开头的属性,代码别编译后,IBAction被解析为void,而IBOutlet被解析为空。

    从内存角度:

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

    原文链接:https://blog.csdn.net/yinyinliushang/java/article/details/84434207

        

     

  • 相关阅读:
    JAVA-类加载机制(2)-类加载的过程
    JAVA-类加载机制(1)-生命周期
    StarUML-详解
    JMS-mq-发布/订阅
    JMS-mq-点对点
    Spring-Transcation
    Session-Hibernate
    Session
    Git配置
    Maven配置
  • 原文地址:https://www.cnblogs.com/wwjwb/p/12609440.html
Copyright © 2011-2022 走看看