zoukankan      html  css  js  c++  java
  • OC 成员变量,实例变量,属性变量 @property @synthesize

    • OC 变量分为三大类: 成员变量、实例变量、属性变量

    成员变量:在 {} 里声明的变量。

    实例变量: 在 {} 里声明的变量,且变量类型为一个类,是针对类而言的。

    属性变量:通过@property声明的变量,会生成setter和getter方法。用于与其它对象交互的变量。

     

    @interface MyViewController :UIViewControlle
    {
        /**** 成员变量, 包括实例变量 ****/
        UIButton *yourButton;   //实例变量(数据类型是类)
        int count;
        id data;//实例变量(数据类型是类)        
    }
    @property (nonatomic, strong) UIButton *myButton; //属性变量(有对应的成员变量_myButton, setter方法,getter方法)
    @end    

    实例变量是成员变量的一种,成员变量用于类内部,不会生成set和get方法。

    属性变量可以让其它对象访问,创建时会自动生成:  _变量名, setter方法, getter方法

    属性变量对应的成员变量为: _变量名.  在执行setter和getter方法中,实现对 _变量名 进行赋值和取值。

     

    @property(nonatomic, strong) NSString *myString;

     

    • 定义一个属性必须的三部曲:_myString + @property + @synthesize myString

     2、在GCC编译器中,必须手动生成 :

    _成员变量 : {} 里创建 _变量名

    @property : 创建属性名

    @synthesize 成员变量: 在.m里为属性创建setter和getter方法。

    @interface ViewController ()
    {
           // 1.声明成员变量
            NSString *myString;  
     }
     //2.在用@property
    @property(nonatomic, copy) NSString *myString;  
    @end
    
    @implementation ViewController
        //3.最后在@implementation中用synthesize生成set方法
        @synthesize myString = _xxxx; // 创建属性myString对应的成员变量_xxxx
        @synthesize myString;   //没有隐式的成员变量 _myString
    @end

     2、在LLVM编译器中,不需要手动创建: _变量名, @synthesize 变量名。编译器会自动创建。

    在.m文件中不创建@synthesize, 系统会默认创建 _myString,  setmyString(), myString()

     

    在.m中添加@synthesize:

    @synthesize myString;       //系统中不会添加一个不可见的_myString成员变量。

    @synthesize myString = _xxx;  //系统默认会添加一个属性myString对应的成员变量_xxx。

     

    在.h 文件中声明的成员变量,不会被其它对象调用,不会暴露在外面,在.m中不会有对应的@synthesize,因为成员变量没有对应的set和get方法。

    只有在.h中声明的@property变量,才会被其它对象调用,在.m中@synthesize创建并生成set和get方法(LLVM编译器默认创建,不显示,手动添加也可以)。

     

    self.myString 会默认调用setter和getter方法。   “.”在=号左边,调用setter方法,“.”在=号右边,调用getter方法。

    self.myString = @“my”;   //自动调用setter方法。

    NSString *string = self.myString; // 自动调用getter方法。

  • 相关阅读:
    Jsp入门EL表达式_学习笔记
    sql-DDL, DML 常用语句
    sql-DDL, DML 常用语句
    sql-DDL, DML 常用语句
    sql-DDL, DML 常用语句
    谁需要GUI?快看Linux 终端生存之道
    谁需要GUI?快看Linux 终端生存之道
    谁需要GUI?快看Linux 终端生存之道
    谁需要GUI?快看Linux 终端生存之道
    2.3 根据层级查找元素
  • 原文地址:https://www.cnblogs.com/xujinzhong/p/13999547.html
Copyright © 2011-2022 走看看