国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統(tǒng) > iOS > 正文

IOS內(nèi)存約定-【ios】

2019-11-14 20:45:18
字體:
供稿:網(wǎng)友

IOS中內(nèi)存采用引用計數(shù)的方式,在釋放內(nèi)存編程時采用約定的方式,在這里不長篇大論具體內(nèi)存的原理,只從實用角度出發(fā)記錄下如何根據(jù)這些約定來釋放內(nèi)存。

具體約定為:

當你使用newalloc、copy 開頭的方法名創(chuàng)建對象后,當不需要此對象時,需要通過調(diào)用這個對象的release方法來減少引用計數(shù);retain對象之后也需要調(diào)用release方法來減少引用計數(shù)。

其它方法創(chuàng)建的對象都不需要調(diào)用release方法來釋放對象。

 

只要記住這條約定,編程中80%的內(nèi)存管理都不需要再考慮是否需要release還是不需要了。

 

當你自己的方法中不是以new、alloc 或 copy 開頭的方法名創(chuàng)建對象時,可以使用 autolease返回對象,這樣調(diào)用者就不需要釋放對象了。

 

在程序中跟內(nèi)存相關(guān)的需要注意的地方為:

  • 變量聲明
@PRoperty (nonatomic, retain) UILabel* label;@property (nonatomic, assign) NSInteger intValue; @synthesize label = _label;

 

 

其中對于對象類型使用了retain,這樣這個對象就需要被release,release的地方為dealloc方法內(nèi)。

 

對于基本數(shù)據(jù)類型,使用了assign,也就是直接賦值方式就可以,不存在對象引用計數(shù)這種問題,因此也就不需要release。

 

在合成方法時,這里采用了一個變量名約定,也就是_變量名,這樣帶下劃線的變量就是內(nèi)部變量,而沒有下劃線的其實就是屬性名,這樣真正的內(nèi)部變量其實是帶下劃線的那個名字,因此在釋放內(nèi)存時就要使用_變量名.release方法。

 

  • viewDidUnload方法
- (void)viewDidUnload{self.label = nil;[super viewDidUnload];}

 

 

這里主要是對retain修飾的屬性進行釋放,只要把相關(guān)屬性設(shè)置為nil就可以,(主要原因是在生成設(shè)置屬性的代碼中就有對原有對象的釋放)

 

  • dealloc方法

 

- (void)dealloc{[_label release];[super dealloc];}

 

 

 


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 民县| 镇江市| 诸城市| 会东县| 桓仁| 铁岭县| 黎城县| 桃园县| 民勤县| 仙居县| 色达县| 刚察县| 长武县| 同德县| 叶城县| 凤阳县| 海盐县| 北安市| 大兴区| 元谋县| 应城市| 南昌县| 富民县| 楚雄市| 屯留县| 吉林市| 温泉县| 桐梓县| 邳州市| 大邑县| 新和县| 景泰县| 灵宝市| 丘北县| 彭山县| 新邵县| 油尖旺区| 亳州市| 平湖市| 府谷县| 手游|