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