• <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 閱讀(222) 評論(0)  編輯 收藏 引用 所屬分類: objective-c
            久久人人爽人人爽人人片AV高清 | 久久一本综合| 久久久久亚洲爆乳少妇无| 国产精品xxxx国产喷水亚洲国产精品无码久久一区| 久久久无码精品亚洲日韩按摩| 久久天堂电影网| 久久亚洲AV永久无码精品| 亚洲中文字幕无码一久久区| 国产精品狼人久久久久影院| 欧美久久久久久精选9999| 久久精品国产男包| 99久久精品九九亚洲精品| 久久大香香蕉国产| 久久久久久极精品久久久| 亚洲乱亚洲乱淫久久| 久久这里有精品| 国产亚洲精午夜久久久久久 | 国内精品久久久久影院日本| 武侠古典久久婷婷狼人伊人| 久久婷婷五月综合97色| 午夜人妻久久久久久久久| 欧美精品丝袜久久久中文字幕| 色8久久人人97超碰香蕉987| 久久亚洲2019中文字幕| 国产精品久久久久…| 97久久精品午夜一区二区| 欧美精品福利视频一区二区三区久久久精品| 色欲综合久久躁天天躁蜜桃| 久久精品无码免费不卡| 久久免费视频网站| 欧美一区二区三区久久综| 国产精品中文久久久久久久| 国产精品成人久久久| 久久久久久国产a免费观看不卡| 国产成人久久激情91| 精品久久久久久无码中文字幕一区| 亚洲精品国产自在久久| 国产69精品久久久久久人妻精品 | 国产Av激情久久无码天堂| 久久永久免费人妻精品下载| 久久精品久久久久观看99水蜜桃|