• <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++博客 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
              95 隨筆 :: 0 文章 :: 7 評論 :: 0 Trackbacks
            main.m

             1 //
             2 //  main.m
             3 //  便利構(gòu)造器與autorelease
             4 //
             5 //  Created by sixleaves on 15/5/10.
             6 //  Copyright (c) 2015年 itcast. All rights reserved.
             7 //
             8 
             9 #import <Foundation/Foundation.h>
            10 #import "Person.h"
            11 #import "GoodPerson.h"
            12 int main(int argc, const char * argv[]) {
            13     @autoreleasepool {
            14         
            15         
            16         Person *p1 = [Person person];
            17         p1.age = 100;
            18         
            19         GoodPerson * p2 = [GoodPerson personWithAge: 150];
            20         
            21         // p2實際上指向的是Person
            22         p2.money = 300;
            23         
            24         //NSLog(@"test");
            25         
            26         /*
            27          代碼分析:
            28          GoodPerson類調(diào)用了personWithAge,所以根據(jù)誰調(diào)用我,self就指向誰這個原則。
            29          self指向GoodPerson類。GoodPerson中沒有這個方法,就只能到父類中找,到父類
            30          中找到了又調(diào)用[self person],GoodPerson中又沒有這個方法,于是又找父類,找到后,創(chuàng)建是已經(jīng)autorelease的Person對象。而不是GoodPerson對象。此時我們只需改掉person方法中寫死的[Person alloc]換成self alloc就可以,為什么呢。因為self此時指向的是子類,所以創(chuàng)建出來的就是子類。
            31          
            32          對于GoodPerson,并沒有重寫自己的dealloc方法,所以調(diào)用的時候,在GoodPerson中找不到,就去其父類Person中找,找到了后,調(diào)用了Person得dealloc方法。
            33          */
            34         
            35 
            36     }
            37     return 0;
            38 }
            39 
            40 /*
            41  便利構(gòu)造器的概念:
            42  1.開發(fā)中,我們經(jīng)常會提供一些類方法,快速創(chuàng)建一個已經(jīng)autorelease的對象。(便利構(gòu)造器\便利構(gòu)造方法)
            43  便利構(gòu)造器與self:
            44  1.在便利構(gòu)造器中,盡量使用self代替類名。(或者self class).這能讓子類調(diào)用時候創(chuàng)造出來的就是子類對象。
            45  */
            46 

            Person.h
             1 //
             2 //  Person.h
             3 //  便利構(gòu)造器與autorelease
             4 //
             5 //  Created by sixleaves on 15/5/10.
             6 //  Copyright (c) 2015年 itcast. All rights reserved.
             7 //
             8 
             9 #import <Foundation/Foundation.h>
            10 
            11 @interface Person : NSObject
            12 
            13 @property (nonatomic, assign) int age;
            14 
            15 // 遍歷構(gòu)造器
            16 
            17 + (id)person;
            18 
            19 + (id)personWithAge:(int)age;
            20 
            21 @end
            22 
            Person.m
             1 //
             2 //  Person.m
             3 //  便利構(gòu)造器與autorelease
             4 //
             5 //  Created by sixleaves on 15/5/10.
             6 //  Copyright (c) 2015年 itcast. All rights reserved.
             7 //
             8 
             9 #import "Person.h"
            10 
            11 @implementation Person
            12 
            13 // 便利構(gòu)造器與autorelease
            14 /*
            15  便利構(gòu)造器的規(guī)范:
            16  1.必須是類方法,
            17  2.返回類型是id
            18  3.必須以類名With開頭(帶參數(shù)一般還要有With),區(qū)別之一是便利構(gòu)造器必須是小寫駱駝峰,而類名是大寫的。
            19  
            20  */
            21 
            22 + (id)person
            23 {
            24     // return [[[Person alloc] init] autorelease]會導致子類調(diào)用personWithAge、person創(chuàng)建的都是已經(jīng)autorelease的Person對象
            25     // 而不是想要的子類對象。換成self就可解決,具體分析看代碼分析。
            26     return [[[self alloc] init] autorelease];
            27 }
            28 
            29 + (id)personWithAge:(int)age
            30 {
            31     Person *p = [self person];
            32     p.age = age;
            33     return p;
            34 }
            35 
            36 - (void)dealloc
            37 {
            38     NSLog(@"%d歲的對象被銷毀了~~~", _age);
            39     [super dealloc];
            40 }
            41 
            42 @end
            43 

            GoodPerson.h
             1 //
             2 //  GoodPerson.h
             3 //  便利構(gòu)造器與autorelease
             4 //
             5 //  Created by sixleaves on 15/5/10.
             6 //  Copyright (c) 2015年 itcast. All rights reserved.
             7 //
             8 
             9 #import "Person.h"
            10 
            11 @interface GoodPerson : Person
            12 
            13 @property (nonatomic, assign) int money;
            14 
            15 @end
            16 
            GoodPerson.m 1 //
             2 //  GoodPerson.m
             3 //  便利構(gòu)造器與autorelease
             4 //
             5 //  Created by sixleaves on 15/5/10.
             6 //  Copyright (c) 2015年 itcast. All rights reserved.
             7 //
             8 
             9 #import "GoodPerson.h"
            10 
            11 @implementation GoodPerson
            12 
            13 - (void)dealloc
            14 {
            15     
            16     NSLog(@"GoodPerson-dealloc");
            17     [super dealloc];
            18 }
            19 
            20 @end
            21 
            posted on 2015-05-10 19:35 swp 閱讀(226) 評論(0)  編輯 收藏 引用 所屬分類: objective-c
            色妞色综合久久夜夜| 久久香蕉国产线看观看精品yw| 狠狠色婷婷综合天天久久丁香 | 精品久久久久久国产三级| 国产精品成人99久久久久| 亚洲欧美日韩精品久久亚洲区 | 久久久久久免费视频| 三上悠亚久久精品| 久久99精品久久久久久野外| 波多野结衣久久| 国产精品成人久久久久久久| 久久亚洲精品成人AV| 国产三级观看久久| 国产精品久久久久国产A级| 久久精品国产WWW456C0M| 久久久久99精品成人片试看| 日本高清无卡码一区二区久久| 久久午夜伦鲁片免费无码| 久久精品国产第一区二区| 1000部精品久久久久久久久| 婷婷久久五月天| 久久精品视频91| 国产精品一区二区久久精品| 久久综合给合久久狠狠狠97色69| 久久久久亚洲AV成人网人人软件| 国产欧美一区二区久久| 无码国内精品久久人妻| 久久亚洲日韩看片无码| 亚洲欧美国产精品专区久久 | 国产欧美久久久精品影院| 精品无码久久久久久久久久| 久久综合久久综合九色| 久久国产精品无码HDAV | 久久久艹| 午夜精品久久久久久| 久久丝袜精品中文字幕| 久久影视国产亚洲| 亚洲AV伊人久久青青草原| 热99RE久久精品这里都是精品免费| 久久久久国产精品麻豆AR影院| 久久中文娱乐网|