ARC的概念和分類的概念

2021-07-04 10:39:28 字數 1528 閱讀 9193

1.arc的概念及原理

指標的分類:強指標和弱指標;

預設情況下指標都是強指標,關鍵字_ _strong;弱指標關鍵字 _ _ weak;

arc是自動記憶體管理,它是乙個編譯器的特性,就像點語法。只不過是編譯器幫我們新增並且不允許我們自己使用retain,release,autorelease,retaincount,dealloc方法中不能使用[super dealloc]。

arc的判斷準則:

只要沒有強指標指向物件,就**!呵呵,忘記引用計數器吧o(∩_∩)o

單物件的記憶體管理:

強指標改變指向的時候,弱指標會賦值為nil;

多個物件的記憶體管理:

注意@property引數weak strong的使用。

arc迴圈引用:

一端使用strong 一端使用weak

arc下set方法的記憶體管理,@property引數問題:

原子性和讀寫性 與mrc下相同

set方法中mrc下的retain 在arc下換成strong 和 weak ,copy都一樣。

oc的其他物件 使用strong

ui的控制項一般使用weak

arc的相容和轉換:

-fno-objc-arc 轉換為非arc

-f-objc-arc 

在xcode中更改。這就是相容啦。╮(╯▽╰)╭

mrc和arc可以轉換,edit--refactor---但是不能保證完全正確。哎,就是專案太大啦,類好多啊 ,你也不是很懂。

2.分類(category)

category:分類 類別 類目 一般叫分類;是oc的特有語法;

在不修改原有類的基礎上,增加新的方法;

把乙個龐大的類分成模組進行開發;有利於團隊協作!\(^o^)/~

目的:對現有的類擴充套件;作為子類的替代手段;對類中的方法歸類;

先宣告 然後實現 最後使用

分類的介面只需要帶個()表示分類的作用,不需要冒號。

@inte***ce 待擴充套件的類名 (分類名稱)

@end

@implementation 待擴充套件的類名 (分類名稱)

@end

注意:分類只能增加方法,不能增加成員變數;

可以在分類的方法中訪問原來類的成員變數;

優先呼叫分類的方法,優先呼叫同名方法中最後編譯的方法;

分類的非正式協議:

非正式協議通常定義為nsobject的類別(分類,類目);

也就是說,凡是nsobject或者其子類foundation框架中類增加的類別,都是非正式協議。

分類的延展:extension

又稱擴充套件,分類名為空,就是擴充套件。可以給類增加例項變數,方法,合成的屬性;

擴充套件的方法實現不能在@implementation 類名()中,要在當前的類中@implementation 類名

延展可以定義相對私有的方法。不能被子類繼承。

排序的基本概念和分類

排序 排序是將一批無序的記錄 資料 重新排列成按關鍵字有序的記錄序列的過程。排序的分類 排序分為插入排序 選擇排序 交換排序 歸併排序四大類,詳細分類如下圖 七大經典排序 氣泡排序 快速排序 選擇排序 堆排序 插入排序 希爾排序 合併排序 穩定排序 對於關鍵字相等的記錄,排序前後相對位置不變。不穩定...

觸發器的概念和分類

觸發器,就是制定乙個規則,在我們做增刪改操作的時候,只要滿足該規則,自動觸發,無需呼叫。語句級觸發器 不包含有for each row的觸發器。行級觸發器 包含有for each row的就是行級觸發器。加for each row是為了使用 old或者 new物件或者一行記錄。在觸發器中觸發語句與偽...

8 5 迭代器的概念和分類

include include include include include include include include include using namespace std 3 驗證迭代器所屬種類的 如下這些 display category 是過載函式 void display cate...