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

首頁 > 網(wǎng)站 > 建站經(jīng)驗(yàn) > 正文

IOS 內(nèi)存優(yōu)化和調(diào)試技-巧

2019-11-02 14:51:00
字體:
供稿:網(wǎng)友

  基礎(chǔ)部分

  1: 圖片內(nèi)存大小小結(jié)

  a: 圖片:是占用內(nèi)存的大戶,尤其是手機(jī)游戲圖片資源眾多。對圖片資源在內(nèi)存中占用量的計(jì)算成為J2ME游戲開發(fā)者的經(jīng)常性工作,CoCoMo來解釋一下如何計(jì)算圖片在內(nèi)存中的占用量:內(nèi)存占用量=寬*高*像素字節(jié)數(shù),其中像素字節(jié)數(shù)因機(jī)型而異。

  例如一張64*64的圖片在7210上的內(nèi)存占用量=64*64*1.5=6144(字節(jié))=6K、在S60上的內(nèi)存占用量=64*64

7788電影網(wǎng)[www.aikan.tv/special/7788dianyingwang/]
*2=8192 (字節(jié))=8K。像素字節(jié)數(shù)因機(jī)型而異,例如 7210是4096色機(jī)型,也就是說用12位來表示一個(gè)像素,所以乘上1.5,而S60是65536色的機(jī)型,用16位來表示一個(gè)像素,所以乘上2。

  b:Xcode中使用instruments 查看圖片內(nèi)存的問題

  如果使用的是模擬器那么默認(rèn)是小屏幕的,所以最大圖片是1024 *1024 * 4 = 4 M (1024 是圖片的寬高, 4表示的是圖片的存儲類型為4字節(jié)的。也就是 RGBA8888)

  如果你加載了圖片那么就是使用了4M的內(nèi)存。如果你需要渲染那么還需要4M的內(nèi)存。

  加載一般都是 **load (NSString *)filename ,

  渲染一般都是 Node addChild (Node)

  2: 引用計(jì)數(shù)問題

  引用計(jì)數(shù)增加的情況 : a: alloc 對象會使得對象引用數(shù) +1

  b:調(diào)用retain (具體細(xì)說一些實(shí)例如下)

  ->比如你是cocos2d用戶的會看到 addchild 會使子節(jié)點(diǎn)的引用計(jì)數(shù)+1

  ->CCArray 的addObject 也會使元素的引用計(jì)數(shù)+1

  總結(jié)一下就是: 凡是添加到結(jié)合中的元素或者子節(jié)點(diǎn)不需要再去retain ,只需要在建立的時(shí)候調(diào)用release

  減少的情況 : 調(diào)用release 使引用計(jì)數(shù) -1(具體細(xì)說一些實(shí)例如下)

  -> 集合調(diào)用remove/removeChildByTag 等等變形的

  -> 創(chuàng)建的時(shí)候調(diào)用autorelease 。注意:如果你的對象是局部對象,而且創(chuàng)建的時(shí)候使用的是autorelease,

  那么在離開方法的時(shí)候如果你沒有retain 那么這個(gè)對象將被dealloc(引用計(jì)數(shù)-1了)

  官網(wǎng)的介紹:

  •

  You own any object you create by allocating memory for it or copying it.

  Related methods:alloc,allocWithZone:,copy,copyWithZone:,mutableCopy,mutableCopyWithZone:

  If you are not the creator of an object, but want to ensure it stays in memory for you to use, you can express an ownership interest in it.

  Related method:retain

  If you own an object, either by creating it or expressing an ownership interest, you are responsible for releasing it when you no longer need it.

  Related methods:release,autorelease

  Conversely, if you are not the creator of an object and have not expressed an ownership interest, you mustnotrelease it.

  3 :參考文檔

  一,IOS與圖片內(nèi)存

  在IOS上,圖片會被自動縮放到2的N次方大小。比如一張1024*1025的圖片,占用的內(nèi)存與一張1024*2048的圖片是一致的。圖片占用內(nèi)存大小的計(jì)算的公式是;長*寬*4。這樣一張512*512占用的內(nèi)存就是 512*512*4 = 1M。其他尺寸以此類推。(ps:IOS上支持的最大尺寸為2048*2048)。

  ,cocos2d-x的圖片緩存

  Cocos2d-x 在構(gòu)造一個(gè)精靈的時(shí)候會使用spriteWithFile或者spriteWithSpriteFrameName等無論用哪種方式,cocos2d-x都會將這張圖片加載到緩存中。如果是第一次加載這個(gè)圖片,那就會先將這張圖片加載到緩存,然后從緩存讀取。如果緩存中已經(jīng)存在,則直接從緩存中提取,免除了加載過程。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 昆明市| 阿拉尔市| 昌宁县| 韶山市| 宁陵县| 兴化市| 宁德市| 寿光市| 大名县| 平邑县| 大理市| 林周县| 来宾市| 古丈县| 郯城县| 思南县| 昌邑市| 苗栗市| 凭祥市| 裕民县| 莱州市| 东城区| 信丰县| 玛纳斯县| 绥德县| 牙克石市| 东丰县| 抚远县| 嘉荫县| 长宁区| 绥化市| 闽侯县| 九江县| 蒙阴县| 锡林郭勒盟| 聂拉木县| 兴和县| 淮南市| 晋江市| 乐平市| 泾源县|