何时使用静态变量和self关键字

时间:2012-01-06 23:21:55

标签: iphone objective-c ios

self.list = playList;

- (id)init {
    if (self = [super init]) {
        [self createDemoData];
    }
    return self;
}

static NSString *CellIdentifier = @"CellIdentifier";

您好,我仍然无法确定何时使用这两个关键字,尤其是静态。

1 个答案:

答案 0 :(得分:4)

只是为了指出正确的方向:

静态https://stackoverflow.com/a/1250088/267892

  

问题说明

     
      
  1. 您希望ClassA具有ClassB类变量。
  2.   
  3. 您正在使用Objective-C作为编程语言。
  4.   
  5. Objective-C不像C ++那样支持类变量。
  6.         

    一种选择

         

    使用Objective-C功能模拟类变量行为

         
        
    1. 在classA.m中声明/定义一个静态变量,这样它只能用于classA方法(以及你放入的所有内容)   在classA.m)。

    2.   
    3. 覆盖NSObject初始化类方法,只使用ClassB实例初始化静态变量。

    4.   
    5. 您会想知道,为什么要覆盖NSObject初始化方法。有关此方法的Apple文档有   回答:“运行时将初始化发送到程序中的每个类   恰好在类之前的一次,或任何继承的类   从它,从程序内发送它的第一条消息。 (就这样   如果不使用该类,则永远不会调用该方法。)“。

    6.   
    7. 随意在任何ClassA类/实例方法中使用静态变量。

    8.   

自我https://stackoverflow.com/a/2386015/267892

  

使用self导致调用此变量的类'“setter”,   而不是直接改变伊娃。

self.mainViewController = aController;
     

相当于:

[self setMainViewController:aController];
     

另一方面:

mainViewController = aController;
     

直接更改mainViewController实例变量,   跳过可能内置的任何其他代码   UIApplication的setMainViewController方法,比如释放旧的   对象,保留新对象,更新内部变量等。