合成存储方法,局部/全局变量
生活随笔
收集整理的這篇文章主要介紹了
合成存储方法,局部/全局变量
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
?
--------合成存取方法--------
?
- Objective-C從 OC 2.0版本開始,自動合成了setter 方法和 getter 方法。而且,如果開發者需要自己控制某個setter 方法和 getter 方法的實現時,可以自己提供 setter 方法和 getter 方法,自己提供的setter 方法和 getter 方法會覆蓋系統自動合成的相應方法。
- 需要編譯器自動合成 setter 方法和 getter 方法需要在需要生成方法的屬性面前加上 @property (必須) ?和 @synthesize(可以省略) 指令。(例: @property int numerator; ? ?@synthesize numerator = _numerator; ?// =_numerator ?可以省略)
- 其實并不需要使用?@synthesize ?指令,使用 @property 指令就足夠了。編譯器會自動為你生成 setter 和 getter 方法。但是,注意,如果你不使用 ?@synthesize 那么編譯器生成的實例變量會以下劃線(_)字符作為其名稱的第一個字符。
- 使用合成存取方法,屬性名稱的前面不要以 new 、alloc 、copy 或者 init 這些詞開頭。這與編譯器的一些假定有關。
?
/* ?@property 可以使用的一些指示符
?
?1.readonly:系統只合成getter方法,不再合成setter方法。
?
?2.readwrite:系統合成getter和setter方法,默認是這樣。
?
?3.strong:指示符指定該屬性對被賦值對象持有強引用(只要該強引用指向被賦值的對象,那么該對象就不會被自動回收)。多用在?其他對象(除代理\UI控件\字符串以外的對象)
?
?4.week:指示符指定該屬性對被賦值對象持有弱引用(即使該弱引用指向被賦值的對象,該對象也可能被回收)。多用在?代理\UI控件
?
?5.unsafe_unretained:類似于week,不同是指針所引用的對象回收之后,該指針不會被賦值為nil,該指示符極少用。
?6.copy :?多用在字符串類型
7.assign : 多用在非對象類型(基本數據類型int\float\BOOL\枚舉\結構體)
?
?*/
?
?
?
?
?
--------局部變量和全局變量--------
?
- 局部變量:在還是內部定義的變量
- 作用域:從定義變量開始,到代碼塊結束
- 生命周期:定義開始到代碼塊結束,就會被回收
- 函數的形參也是局部變量
- 無固定初值
- 局部變量沒有記憶力。方法內定義的局部變量只會在方法內有效,當方法返回時,這些變量的值都消失了。每次調用方法時,該方法內的局部變量(如果有的話)都是用變量聲明重新初始化一次。(等于重新分配了一塊存儲數據的內存空間,以前局部變量所擁有的空間已經被回收、銷毀,不會再次擁有)
- 全局變量:函數外面定義的變量
- 作用域:定義開始到文件結尾(能被后面所有函數共享)
- 生命周期:程序一開始就分配內存,到程序退出才銷毀
- 默認的初值為0
- 全局變量有自己的記憶力
- ? static ?關鍵字:
- 在變量聲明前加上 static 關鍵字,可以使局部變量保留多次調用一個方法所得的值。(即 存儲數據的內存空間不會被回收與銷毀,會記錄下局部變量所擁有的數據,在下一次需要這個局部變量時將會返回唯一的存儲數據的內存地址,和原有的數據)
?
轉載于:https://www.cnblogs.com/fangjingjing/p/5866461.html
總結
以上是生活随笔為你收集整理的合成存储方法,局部/全局变量的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [大山中学模拟赛] 2016.9.10
- 下一篇: 在哪里可以找到自我护理能力量表ESCA