OCにおけるグローバル変数と静的変数

2106 ワード

グローバル変数、静的変数の定義と使用
  • は、両方がソースファイルで定義され使用されていることを明確にしている.
  • 1、グローバル変数
    例えば、ファイルの先頭(ソースファイル内の任意の関数またはメソッド以外)に変数を定義します.
    int num = 0;
    異なるファイルで使用する必要がある場合、このグローバル変数をファイルで宣言できます.
    extern int num;
    グローバル変数の定義と使用時の宣言の分離が望ましいです.下記の書き方も間違いないですが、
    extern int num = 0;
    しかし、コンパイラはグローバル変数の定義と宣言の混合を警告します.
    グローバル変数の使用方法:一回の定義で、複数のステートメントが使用されます.
    グローバル変数の使用は、データパッケージとオブジェクト指向プログラミング技術の目的に反していますが、異なるファイルで同じ変数を共有する必要がある場合があります.
    2、静的変数static
    同じファイルの異なる関数または方法で変数を共有する:static variable.staticとして宣言:
    static int num = 0;
    クラスの方法ではインスタンス変数にアクセスできません.(この場合、インスタンス変数は割り当てられた空間に明確に指定されていません.)しかし、クラスの構造方法で生成されたオブジェクトの個数を統計すると、静的変数を利用して、構造方法でアクセスできます.
    static int counter = 0//      counter
    
    @implementation Person
    
    extern int counter;     //           
    
    +(instancetype)person
    {
        ++counter;              //        +1
        return [Perosn alloc];  //             
    }
    
    +(int)count
    {   //         
        extern int counter;
        return counter; 
    }
    
    @end
  • はどの方法で使うべきですか?どの方法で声明しますか?
  • allocを上書きしないほうがいいです.この階はOCで考えるべき内容ではないです.