• self


    self 在实例方法中代表着首字母地址  在类方法中代表着 Class

     1.首先通过self.xxx 通过访问的方法的引用:包含了set和get方法。而通过下划线是获取自己的实例变量,不包含set和get的方法。

        2.self.xxx是对属性的访问;而_xxx是对局部变量的访问。所有被声明为属性的成员,再ios5之前需要使用编译指令@synthesize 来告诉编译器帮助生成属性的getter和setter方法,之后这个指令可以不用认为的指定了,默认情况下编译器会帮助我们生成。编译器在生成getter,setter方法时是有优先级的,他首先查找当前的类中用户是否定义属性的getter,setter方法,如果有,则编译器会跳过,不会再生成,使用用户定义的方法。也就是说你在使用self.xxx时是调用一个getter方法。会使引用计数加一,而_xxx不会使用引用技术加一的。

        所有使用self.xxx是更好的选择,因为这样可以兼容懒加载,同时也避免了使用下滑线的时候忽略了self这个指针,后者容易在BLock中造成循环引用。同时,使用 _是获取不到父类的属性,因为它只是对局部变量的访问。

    最后总结:self方法实际上是用了get和set方法间接调用,下划线方法是直接对变量操作。



    成员变量:

    @interface MyViewController :UIViewControlle 

    UIButton *yourButton; 
    int count; 
    id data; 

    成员变量用于类内部,无需与外界接触的变量。成员变量默认是protected,一般情况下,非子类对象无法访问 
    因为成员变量不会生成set、get方法,所以外界无法与成员变量接触 
    成员变量是定义在{}号中的变量,如果变量的数据类型是一个类则称这个变量为实例变量。 
    因为实例变量是成员变量的一种特殊情况,所以实例变量也是类内部使用的,无需与外部接触的变量,这个也就是所谓的类私有变量。

    局部变量:

    -(void)viewDidLoad 

    // 局部变量 
    NSArray *array = [[NSArray alloc] initWithObject:@“123”,nil]; 

    局部变量是根据其生存周期定义的,在源文件中的array,其生命周期是在以“{ }”为界限的代码块中,虽然它的名称与成员变量相同,但不是同一个变量。

    属性变量: 
    @interface MyViewController :UIViewControlle 
    @property (nonatomic, strong) UIButton *myButton; 
    @end

    属性变量是用于与其他对象交互的变量。 
    属性变量的好处就是允许让其他对象访问到该变量(因为属性创建过程中自动产生了set 和get方法)。 
    当然,你可以设置只读或者可写等,设置方法也可自定义。 
    现在大家似乎都不怎么喜欢用成员变量来定义类的变量, 
    都喜欢用属性变量来定义类的变量。把需要与外部接触的变量定义在.h文件中,只在本类中使用的变量定义在.m文件中。

    实例变量: 
    实例变量本质上就是成员变量,只是实例是针对类而言, 
    编译器会自动为你生成以下划线开头的实例变量 _myButton,也会自动为你生成setter,getter方法。 
    如果.m文件中写了@synthesize myButton,那么生成的实例变量就是myButton;如果没写@synthesize myButton,那么生成的实例变量就是_myButton。

    全局变量: 
      定义:在@implementation外定义的变量(在@implementation中定义也是可以但是一般不这么干) 
    举例: 
    //规范的 
      
    static int hu=3;//全局变量 
    NSString*sttr1=@”S1ViewController”;//全局变量 
    @implementation S1ViewController 
    @end 

    一天一章
  • 相关阅读:
    心跳机制
    C++虚继承和虚基类
    STL,ATL与WTL
    C# Task的暂停与终止
    C#继承
    C#线程同步问题
    CourtAi发布配置文件修改说明
    阿里云虚拟主机https化步骤第一篇,申请证书(笔记)
    linux 服务器重启指令
    .net core 发布到iis问题 HTTP Error 500.30
  • 原文地址:https://www.cnblogs.com/hangman/p/8662317.html
Copyright © 2020-2023  润新知