• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            f(sixleaves) = sixleaves

            重劍無鋒 大巧不工

              C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
              95 隨筆 :: 0 文章 :: 7 評論 :: 0 Trackbacks
             1 //
             2 //  main.m
             3 //  ARC基本原理
             4 //
             5 //  Created by sixleaves on 15/5/12.
             6 //  Copyright (c) 2015年 itcast. All rights reserved.
             7 //
             8 
             9 #import <Foundation/Foundation.h>
            10 #import "Person.h"
            11 #import "Dog.h"
            12 void test1();
            13 void test2();
            14 int main(int argc, const char * argv[]) {
            15     
            16     //test1();
            17     test2();
            18     
            19     return 0;
            20 }
            21 
            22 void test1() {
            23     
            24     Person *p = [[Person alloc] init];
            25     
            26     __weak Person *p2 = p;
            27     
            28     p = nil; // 在這行運行后,Person就被釋放
            29     /*
            30         因為在27行,我們清空了指針p,就沒有強指針指向,Person對象
            31         所以,27行一運行結束,Person對象就會被釋放。雖然有p2指向Person
            32         對象,但是p2是弱指針。淡然如果把__weak去掉,默認是__strong,則
            33         運行完27行后,Person對象還不會被釋放。
            34      */
            35     
            36     NSLog(@"test1");
            37 }
            38 
            39 void test2() {
            40     
            41     Person *p = [[Person alloc] init];
            42     
            43     Dog * d = [[Dog alloc] init];
            44     
            45     p.dog = d;
            46     
            47     d = nil; // 這行運行結束后,狗不會被釋放,因為p對象中還有個強指針,指向狗對象。
            48     
            49     NSLog(@"test2");
            50     
            51     p = nil;
            52     
            53     NSLog(@"All-dealloc");
            54     /*
            55         這行執行完后,由于沒有強指針指向Person對象
            56         所以,Person對象會被釋放,并且會銷毀掉Person
            57         對象中擁有的對象(Dog的指針變量)。所以就沒有強指針
            58         指向dog,所以Dog對象也會被銷毀。
            59      */
            60     
            61 }
            62 
            63 /*
            64  ARC釋放對象的判斷準則: 只要沒有強指針指向對象,就會銷毀對象。
            65  
            66  ARC的特點
            67  1> 不允許調用release、retain、retainCount
            68  2> 允許重寫dealloc,但是允許調用[super dealloc]
            69  3> @property參數
            70     strong:相當于retain(適用于OC對象)
            71     weak:相當于assign(適用于OC對象)
            72     assign:適用于非OC對象
            73  4> 用strong替換retain
            74  
            75  指針分2種:
            76  1>強指針:默認情況下,所有的指針都是強指針.(默認用__strong修飾)
            77  2>弱指針:__weak
            78  
            79  Tips:如果你想持有對象,那么就用強指針,如果不想持有對象,就用弱只這么。
            80  
            81  常見錯誤:
            82  __weak Perosn *p = [[Person alloc] init];
            83  //這種錯誤是沒有理解ARC釋放對象的判斷準則。沒有強指針指向Person對象,
            84  一創建就會被釋放。
            85  
            86  
            87  掌握:
            88  1.ARC釋放對象的判斷準則
            89  2.ARC的四個特點
            90  3.強指針與弱指針的概念
            91  4.常見錯誤
            92  */
            93 
            posted on 2015-05-12 16:47 swp 閱讀(217) 評論(0)  編輯 收藏 引用 所屬分類: objective-c
            AA级片免费看视频久久| 奇米影视7777久久精品| 久久亚洲国产午夜精品理论片| 国产亚洲精品美女久久久| 2021少妇久久久久久久久久| 91久久香蕉国产熟女线看| 青青久久精品国产免费看| 久久中文骚妇内射| 久久e热在这里只有国产中文精品99| 免费一级做a爰片久久毛片潮| 亚洲欧美伊人久久综合一区二区| 99久久精品午夜一区二区| 久久精品国产色蜜蜜麻豆| 欧美噜噜久久久XXX| 久久精品国产亚洲一区二区三区| 少妇久久久久久久久久| 久久久久18| 久久97精品久久久久久久不卡| 亚洲精品无码久久毛片| 亚洲狠狠综合久久| 色婷婷综合久久久久中文一区二区| 久久午夜电影网| 久久久一本精品99久久精品66| 一级a性色生活片久久无少妇一级婬片免费放| 久久久久亚洲AV无码观看| 国产精品美女久久久久av爽| 一本色道久久HEZYO无码| 青青青青久久精品国产h久久精品五福影院1421| 亚洲午夜久久久久久久久电影网 | 青青国产成人久久91网| 国产美女亚洲精品久久久综合| 久久婷婷五月综合97色直播| 中文精品久久久久国产网址| 国内精品久久九九国产精品| 日日噜噜夜夜狠狠久久丁香五月 | 亚洲伊人久久精品影院| 久久婷婷五月综合97色直播| 亚洲国产成人乱码精品女人久久久不卡| 国产精品免费久久久久久久久| 国产999精品久久久久久| 久久综合九色综合97_久久久|