美文网首页OC
实例变量与属性的区别

实例变量与属性的区别

作者: Queen_BJ | 来源:发表于2020-09-08 11:11 被阅读0次
    @property关键字声明属性
    @property (nonatomic, copy)NSString *userName;
    

    .m文件中,编译器自动生成一个实例变量_userName以及setter和getter方法。在.m文件中可以直接的使用_userName实例变量,也可以通过属性self.userName都是一样的。

    @synthesize

    1、指定与属性对应的实例变量
    例如@synthesize myButton = xxx,那么self.myButton其实是操作的实例变量xxx
    在实际的项目中,我们一般这么写.m文件
    2、@synthesize myButton;
    这样写了之后,编译器会自动生成myButton的实例变量以及相应的getter和setter方法,注意:_myButton这个实例变量是不存在的,因为自动生成的实例变量为myButton而不是_myButton,所以现在@synthesize的作用就相当于指定实例变量
    如果.m文件中写了@synthesize myButton;那么生成的实例变量就是myButton;如果没写@synthesize myButton;那么生成的实例变量就是_myButton

    • @synthesize age = _age
      setter和getter实现中会访问成员变量_age
    • @synthesize age
      setter和getter实现中会访问@synthesize后同名成员变量age
    成员变量、实例变量、属性变量的联系
    @interface MyViewController :UIViewControlle
    {
          UIButton *yourButton;
          int count;
          id data;
    }
    
    @property (nonatomic, strong) UIButton *myButton;
    
    @end
    
    • 在{ } 中所声明的变量都为成员变量。 所以yourButton、count、data都是成员变量
      -实例变量本质上就是成员变量,只是实例是针对类而言,实例是指类的声明。{ }中的yourButton就是实例变量
    • 成员变量用于类内部,无需与外界接触的变量,就是私有变量
    • 属性变量的好处就是允许让其他对象访问到该变量

    综上所述可知:成员变量是定义在{}号中的变量,如果变量的数据类型是一个类则称这个变量为实例变量。实例变量是成员变量的一种特殊情况

    相关文章

      网友评论

        本文标题:实例变量与属性的区别

        本文链接:https://www.haomeiwen.com/subject/nrjdektx.html