• <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
            久久成人18免费网站| 国产精品久久久久乳精品爆| 91精品国产高清久久久久久91| 久久精品aⅴ无码中文字字幕不卡| 色综合合久久天天综合绕视看| 99久久国产主播综合精品 | 99国产欧美精品久久久蜜芽| 狠狠色婷婷久久一区二区三区 | 久久久噜噜噜久久| 久久久亚洲AV波多野结衣| 99久久精品午夜一区二区| segui久久国产精品| 久久久SS麻豆欧美国产日韩| 激情综合色综合久久综合| 亚洲欧美日韩精品久久亚洲区 | 国产精品99久久不卡| 久久人人爽人人爽人人av东京热| 久久国产精品成人免费| 区亚洲欧美一级久久精品亚洲精品成人网久久久久 | 久久精品一区二区三区不卡| 久久久网中文字幕| 国产欧美久久一区二区| 性欧美丰满熟妇XXXX性久久久| 蜜桃麻豆www久久| 无码精品久久久久久人妻中字| 免费观看成人久久网免费观看| 久久亚洲欧美国产精品| 一本久久综合亚洲鲁鲁五月天| 伊人久久精品线影院| 久久天天躁狠狠躁夜夜avapp| 亚洲欧洲久久久精品| 狠狠精品久久久无码中文字幕 | 精品久久久久久无码不卡| 99久久国产综合精品五月天喷水 | 99久久免费国产特黄| 超级碰碰碰碰97久久久久| 精品久久人人妻人人做精品 | 久久久久国产精品人妻| 性做久久久久久久久老女人| 久久综合久久性久99毛片| 久久人人超碰精品CAOPOREN|