<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    一點一滴,編程人生

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      69 隨筆 :: 0 文章 :: 25 評論 :: 0 Trackbacks

    原文地址:http://blog.itotem.com.cn/?p=22

    - alloc, copy, retain會把引用計數+1

    - release會把引用計數-1

    - 局部變量如果初始化時不是autorelease的,要及時調用release釋放,并且賦值為nil否則引用仍然存在導致下次無法用nil做是否有值的判斷

    - 實例變量要在每次賦值時要先釋放當前引用的對象再賦值,并retain一下保證引用計數為1

    - 對于有retain參數的property,直接使用”.”賦值時系統會自動釋放當前引用對象再賦值,并自動retain一下

    - dealloc中要對所有實例變量調用release,對于有retain參數的property只需要調用self.theProperty = nil即可,系統會去做釋放

    - delegate的property通常設為assign,如果設為retain的話會有循環引用的問題,比如aView.delegate = self時會把self retain一下,在aView的dealloc中會把delegate release,但是由于self的引用永遠不會小于1,所以導致aView和self的dealloc永遠都不會被執行,都永遠駐留內存造成泄露。所以如果要設為retain的話一定要確保不會造成循環引用問題。

    - 在UIViewController中的viewDidUnload中要釋放掉局部變量,調用release并設為nil,有時系統收到內存警告時會自動調用這個函數來釋放一些內存空間

    - 系統內存警告的回調中要釋放掉內存中的緩存和其他可釋放的東西,以免造成crash

    - 使用UITableView時要把cell設置為重用的,并且要確保確實寫得是重用的,有的人寫完的結果相當于還是每次都重建cell,導致效率低下

    - 使用UIScrollView時要自己控制釋放掉目前不顯示的內容,尤其是圖片,考慮圖片大小和瀏覽效果可以加載當前顯示頁兩邊的3-5頁內容

    - 圖片需要做緩存,尤其是本地文件系統緩存,可以放到Library/Cache目錄中,這個目錄系統有專用的常量來獲取,比如:

    這里是一個小例子闡釋前幾條基本原則:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    - (void)aFunction{
    //創建一個局部變量view
    UIView *view = [[UIView alloc] init];
    // 賦值給實例變量theView
    [theView release]; //先釋放一下當前引用的變量
    theView = [view retain]; //給實例變量賦值時需要retain一下
    // 如果theView是一個有retain屬性的property
    self.theView = view; //不需要先釋放,也不需要調用retain,系統會自動做,所以一定不能這樣寫self.view = [[UIView alloc] init];,這樣的話創建的view會被retain兩次,造成泄露,對于這種可以先創建一個局部變量,給self.view賦值后再釋放
    [view release]; //要及時釋放局部變量
    }
    - (void)dealloc{
    //釋放局部變量
    [theView release];
    //如果theView是一個有retain屬性的property,也可以這樣寫
    self.theView = nil;
    [super dealloc];
    }
    posted on 2012-07-05 17:05 writegull 閱讀(1236) 評論(1)  編輯  收藏 所屬分類: iphone

    評論

    # re: iOS內存管理編程技巧 2013-09-04 15:28 墨禾米說
    請問如何知道這個property是否有retain屬性呢?  回復  更多評論
      

    主站蜘蛛池模板: 亚洲精品乱码久久久久久下载| 亚洲av日韩av永久在线观看| 老司机在线免费视频| 日韩国产欧美亚洲v片 | 麻豆高清免费国产一区| 中文字幕 亚洲 有码 在线| 亚洲精品国产自在久久| 日本免费一区二区三区四区五六区| 亚洲av永久无码嘿嘿嘿| 亚洲国产一级在线观看 | 亚洲国产成人片在线观看| 波多野结衣免费在线观看| 黄页网站在线视频免费| 久久亚洲AV无码精品色午夜麻豆| 日本成人免费在线| 久久九九AV免费精品| 风间由美在线亚洲一区| 久久亚洲私人国产精品| 免费国产成人高清视频网站| 91av视频免费在线观看| 九九九精品视频免费| 中文字幕 亚洲 有码 在线| 亚洲国产精品无码av| 国产成人精品123区免费视频| 国产真人无码作爱视频免费| 亚洲欧美日韩久久精品| 亚洲人成电影在线天堂| 亚洲国产成人精品女人久久久| 午夜毛片不卡高清免费| 182tv免费视频在线观看| 国产精品亚洲专区无码唯爱网| 亚洲天堂在线播放| 亚洲精品乱码久久久久久不卡| 国产精品视频免费观看| 成在线人视频免费视频| www亚洲精品久久久乳| 亚洲国产成人久久| 久久久久亚洲精品影视| 精品国产人成亚洲区| 免费国产在线观看老王影院| 免费中文熟妇在线影片 |