- 界面通信
- .屬性傳值, 一般用于從前往后傳值, 并通過該屬性進行一系列操作
- 也從后往前傳值(也可以, 但是不推薦這樣去使用)
- . 協(xié)議傳值(delegate)
- 從后往前傳值 決定要在后邊的類聲明協(xié)議(最難確定)
- 聲明delegate @property id<Delegate名> delegate
- 在哪簽訂協(xié)議(只要拿到對象, 就可以簽訂協(xié)議)XXX.delegate = self
- xxx.delegate = self 會爆黃, 沒有簽訂協(xié)議, 簽訂協(xié)議
- 簽訂完協(xié)議 , 會爆黃的原因是沒有事項協(xié)議方法
- 但是協(xié)議方法沒有執(zhí)行,缺少觸發(fā)時機在哪里觸發(fā)協(xié)議方法(對應(yīng)加上判斷);
- .屬性傳值, 一般用于從前往后傳值, 并通過該屬性進行一系列操作
- 小知識
關(guān)于navigation最終控制器的釋放
navigation中viewController數(shù)組, 數(shù)組對應(yīng)的對象會引用計數(shù)+1
當(dāng)controller入棧時,則被加入數(shù)組中,引用計數(shù)+1
只要不出站, 就不會釋放
A -> push -> B
當(dāng)B - > pop - >A B出棧, 對應(yīng)的數(shù)組中對應(yīng)的對象引用計數(shù)-1(對 應(yīng)釋放) - 上代碼:
-
第一步:
設(shè)置屬性去接受傳過來的值(在制定協(xié)議的方法里設(shè)置屬性)在.h中設(shè)置不能私有制,
210B9EBF-2443-477B-9A82-A3E8A353C32A.png
在第一個界面里的push方法里面給屬性賦值

6B9125EB-6272-4E28-8253-F474107FC7DB.png
- 協(xié)議傳值
-
協(xié)議傳值第一步這定協(xié)議和制定協(xié)議方法協(xié)議方法默認必須實現(xiàn)
21EBCB47-6673-418F-AFD6-CEC451AEFE29.png
-
- 小知識
給屬性命名時不要和系統(tǒng)命名重復(fù)
-
第二步聲明代理人
B6317C50-3256-4FD8-A50B-E6F79AC9A05E.png
代理人語義設(shè)置最好用weak
- 第三步實現(xiàn)代理協(xié)議方法
觸發(fā)協(xié)議方法(判斷delegate存不存在,判斷delegate類有沒有實現(xiàn)協(xié)議方法)

28D24342-CA64-43DB-8EAC-229B7EDDC119.png
- 第四步 簽訂代理

F8BF13D3-AD9D-4781-A4C3-F83084E2D3C2.png
-
第五步設(shè)置代理人
注意:
AE72296B-FD55-4501-B849-00518A1EAD89.png 第六一步 實現(xiàn)協(xié)議方法
給屬性賦值

3E430FF3-B180-4B4F-840C-4AE8283F1FA9.png
- UIViewController

77098B4C-BA32-4B4F-945D-F7C0FE76C450.png



