靜態變量、全局變量| 實例變量(成員變量)、局部變量、全局變量的一些總結


靜態變量static

  1. 存儲在靜態區;
  2. 初始化一次;
  3. 由系統管理;
  4. 生命周期為代碼運行期間有效;

代碼位置:

  • 可以修飾靜態局部變量也可以修飾靜態全局變量;
  • 作用域對應,靜態局部變量在方法內有效/靜態全局變量在文件內有效;

“把局部變量改變為靜態變量后是改變了它的存儲方式即改變了它的生存期。把全局變量改變為靜態變量后是改變了它的作用域,限制了它的使用范圍。”這句話的理解

在靜態局部變量中,函數(oc方法)運行后,局部變量還依然存在,他的生命周期在源程序退出后才結束。如果是局部變量那么變量在函數運行完,生命周期就結束了;
在全局靜態變量中,更改了其使用的作用域,僅限其在所在的 .m 文件中才能使用,超過了這個作用域將不能訪問,然而全局變量,在函數中,會被程序的其他源文件訪問。

成員變量(實例變量,屬性)、局部變量區別

 //成員變量

@interface Person : NSObject
{
    @public
    NSString *_name;
    BOOL _sex;
}
@end

_name,_sex便是成員變量也可以成為實例變量,一般稱實例變量.


//屬性
@property (nonatomic,copy) NSString *name;
@property (nonatomic,assign) BOOL *sex;

該方法會自動生成_name和_sex成員變量(實例變量),name,age便是我們聲明的屬性。編譯器將屬性自動轉換成了成員變量,并且自動生成了 getter 和 setter 方法。如果要對屬性的成員變量進行訪問需要使用 -> _name 訪問。

屬性和成員變量的最大的區別是,是否生成了 set 、get 方法。

//局部變量
- (void)test{
int age = 0;
age++;
NSLog(@"局部變量:%d",age);
}

作用域在方法中,age 為局部變量。
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容