Objective-C知識總結(4),objective-c知識總結

來源:互聯網
上載者:User

Objective-C知識總結(4),objective-c知識總結

ARC(automatic reference counting)機制

判斷是否是ARC機制

  • ARC機制中不能使用retain release autorelease retainCount
  • 在dealloc方法中不能使用 [super dealloc];

在ARC下對象釋放的判斷依據: 對象沒有強指標指向

指標預設的都是強指標,比如我們建立的對象都是預設的強指標

Person *p1 = [[Person alloc] init];

__strong 修飾符,修飾這個指標是一個強指標,也可以不寫

__weak   修飾的這個指標是弱指標

ARC下的循環參考問題

當兩個對象互相擁有的時候,如果定義的時候都用strong,那麼就會導致循環參考的問題,雙方互相強指標指向,不能被釋放

解決這個問題的方法是:將其中一個以weak定義,就能完美解決這個問題了

ARC下set方法記憶體@property參數

ARC中的@property

strong:用於OC對象,相當於MRC中的retain

weak:用於OC對象,相當於MRC中的assign(代理一般用weak,UI控制項一般用weak)

assign:用於基礎資料型別 (Elementary Data Type),跟MRC中的assign一樣

copy:一般用於NSString,跟MRC中的copy一樣

ARC注意:

__weak Person *p=[[Person alloc] init];// 不合理,對象一建立出來就被釋放掉,對象釋 放掉後,ARC把指標設定為nil。 

如何讓ARC的項目相容非ARC的類

讓程式相容ARC和非ARC部分

  • 轉變為非ARC -fno-objc-arc
  • 轉變為ARC的, -f-objc-arc 

在哪裡添加編譯器標示 -fno-objc-arc如

將MRC轉化為ARC(不建議這麼使用,若要嘗試做好備份)

分類(Category)

分類的使用注意事項:

--------->在分類的聲明中不能聲明執行個體變數

--------->不能定義執行個體變數 也不能使用 @property

--------->在分類的方法中,可以訪問類中的執行個體變數

--------->在分類中存在和類同名的方法  優先訪問的時 分類中 的方法

當在多個類別中有同名的方法的時候,這時候,執行的最後編譯的那個類別的同名方法

分類的 > 原類

最後編譯的分類 >  其他的分類

分類(Category)非正式協議

非正式協議就是給NSObject類或Foundation架構中的子類建立的類目(分類),即給它們添加方法,叫做非正式協議

類的延展的概念

延展類別又稱為擴充(Extendsion)

Extension是Category的一個特例 其名字為匿名(為空白),並且新添加的方法一定要予以實現。(Category沒有這個限制)

// 這個一般用在.m檔案中,作為私人的方法和成員變數@interface Student (){   // 可以新增成員變數}// 添加方法@end 

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.