ARC自動(dòng)引用計(jì)數(shù)和分類(lèi)

  1. 對(duì)象自動(dòng)釋放池的使用
    釋放池的作用
    autorelease對(duì)象方法
    @autoreleasepool關(guān)鍵字的使用
    Person *p = [Person new];
    @autoreleasepool{
    [p autorelease];
    }
    自動(dòng)釋放池的嵌套(棧方式來(lái)存儲(chǔ)):自動(dòng)釋放池棧,存儲(chǔ)多個(gè)自動(dòng)釋放池,對(duì)象每次加入到棧頂?shù)淖詣?dòng)釋放池中
    封裝一個(gè)initWithXxx方法, 在其中使用"對(duì)象自動(dòng)釋放池" * 釋放池的作用
    //快速創(chuàng)建類(lèi)的類(lèi)方法定義
    +(instancetype)person{return [[[ self alloc] init] autorelease]; } Person *p = [Person person];

  2. ARC介紹
    ARC概念介紹
    ARC的判斷原則/強(qiáng)弱指針介紹
    循環(huán)strong問(wèn)題
    MRC代碼轉(zhuǎn)ARC代碼
    ARC項(xiàng)目如何兼容MRC的代碼項(xiàng)目---> 編譯選項(xiàng) ---->雙擊類(lèi)文件----> -fno-objc-arc

MRC項(xiàng)目轉(zhuǎn)換為ARC

  1. Category分類(lèi)
    分類(lèi)的作用:
    將一個(gè)類(lèi)中的不同方法分到多個(gè)不同的文件中存儲(chǔ), 便于對(duì)類(lèi)進(jìn)行模塊化設(shè)計(jì)、團(tuán)隊(duì)合作開(kāi)發(fā)。
    可以在不修改原來(lái)類(lèi)的基礎(chǔ)上, 為這個(gè)類(lèi)擴(kuò)充一些方法.
    分類(lèi)中只能增加"方法", 不能增加成員變量等。
    //原類(lèi)聲明
    @interface

Person:NSObject { int _age; }@end//原類(lèi)實(shí)現(xiàn)@implementation Person { int_weight; //私有的成員變量 } -(void)setAge:(int)age{ } -(int)age{ }@end

//分類(lèi)
@interface

Person (base)@property int age; //相當(dāng)于給_age進(jìn)行g(shù)et和set方法的聲明 @end

分類(lèi)可以訪(fǎng)問(wèn)原來(lái)類(lèi)中的成員變量
主類(lèi)與分類(lèi)中方法的調(diào)用優(yōu)先級(jí)問(wèn)題:
當(dāng)分類(lèi)與主類(lèi)中都有同一個(gè)方法的時(shí)候, 優(yōu)先調(diào)用分類(lèi)中的方法。
當(dāng)多個(gè)分類(lèi)中都有同樣的一個(gè)方法的時(shí)候, 優(yōu)先調(diào)用最后一個(gè)參與編譯的分類(lèi)中的方法。
非正式協(xié)議
方式: 通過(guò)分來(lái)來(lái)實(shí)現(xiàn)非正式協(xié)議原理: 就是給NSObject類(lèi)添加分類(lèi)來(lái)給其他類(lèi)添加方法

應(yīng)用: NSString + countNumForString

類(lèi)擴(kuò)展(匿名分類(lèi))
類(lèi)擴(kuò)展是寫(xiě)在.m文件中的, 為當(dāng)前類(lèi)擴(kuò)展一些私有的成員. 1> 作用: 為某個(gè)類(lèi)擴(kuò)充一些私有的成員變量和方法. 延展也是為類(lèi)定義私有方法的一種方式
"類(lèi)擴(kuò)展"對(duì)比"分類(lèi)", 就少了一個(gè)分類(lèi)名稱(chēng), 因此也有人稱(chēng)它為"匿名分類(lèi)".

  1. block
    block是一種數(shù)據(jù)類(lèi)型, 可以使用這種數(shù)據(jù)類(lèi)型定義變量, 并賦值。
    block數(shù)據(jù)類(lèi)型在使用前需要先定義該數(shù)據(jù)類(lèi)型, 然后再使用(就像使用Person類(lèi)一樣, 先定義一個(gè)Person類(lèi), 然后再通過(guò)Person類(lèi)聲明一個(gè)Person類(lèi)型變量)。 * block這種數(shù)據(jù)類(lèi)型用來(lái)保存一個(gè)方法、函數(shù)、一段代碼
    必須掌握: block的定義語(yǔ)法、使用場(chǎng)景
    無(wú)參無(wú)返回值
    void
    (^變量名)(); 變量名 = ^(){ }; 或者變量名=^{ };

有參無(wú)返回值
有參有返回值
返回值類(lèi)型 (^變量名) (參數(shù)列表);
變量名 = ^(){}
使用inlineBlock輔助編寫(xiě)block代碼
int
(^block)(int,int) = ^(int n, int m){};

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容