oc構造方法與分類

  1. 構造方法
    1).含義:用來初始化對象的方法,就是構造方法。構造方法是對象方法,以“-”號開頭。
    2).創建對象的過程:
    a.分配存儲空間,使用NSObject的alloc方法實現,只是返回了存儲空間。如下實例:
    Person *p1 = [Person alloc];

    b.初始化,使用NSObject的init方法對對象進行初始化。如下實例:
    Person *p2 = [p1 init];

    c. 也可以直接使用如下代碼:
    Person *p3 = [[Person alloc] init];
    //整個過程其實就是Person *p = [Person new]
    d.構造的關鍵是重寫init方法。

    3).重寫init方法
    a. 作用:當創建對象時,返回一個特定初始化的值,而不是默認初始化的0.
    b. 代碼實例:
    - (id)init
    {
        if(self = [super init])
        {
            _age = 10; 
        }
    }

    4).重寫構造方法的目的:爲了讓對象創建出來,成員變量就有一些固定的值。
    5).構造方法的注意點:
    a. 先調用父類的構造方法([super init]);
    b. 再進行子類內部成員變量的初始化。
    6).構造方法的運行原理:


    7).自定義構造方法:
    a. 作用:創建對象時傳入參數對成員變量進行賦值;
    b. 方法聲明:@property int age;
    c. 方法實現:
    -(id)intWithAge:(int)age
    {
        if(self = [super init])
        {
            _age = 10; 
        }
    }
    d. 自定義結構規範:

    1>一定是對象方法,一定以"-"開頭;

            2>返回值一般是id類型;

            3>方法名一般以initWith開頭;

             4>父類的屬性交給父類的方法去處理,子類方法處理子類自己的屬性。

  2. 分類(Category)
    1).使用場景:給某一個類擴充一些方法(不修改原來類的代碼)。

    2).分類方法:

            a. 聲明:@interface 類名(分類名稱) @end

            b. 實現:@implementation類名(分類名稱) @end
    3).分類的作用:在不改變原來內容的基礎上,可以爲類增加一些方法。

    4).使用注意:

            1>只能增加方法,不能增加成員變量;

            2>分類實現總可以訪問原來類中聲明的成員變量;

            3>分類可以重新實現原來類中得方法,但是會覆蓋掉原來的方法,會導致原來的方法失效;

             4>分類的優先級最高(最後參與編譯的文件優先級最高),其次是原來的類,再次是父類。

    5).好處:分模塊開發;給系統自帶的類添加分類。


發佈了30 篇原創文章 · 獲贊 7 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章