天天看點

iOS傳值一、dataCenter單例傳值

一、dataCenter單例傳值

一、目的要求:利用單例傳值修改界面1的背景顔色

二、單例傳值的特點:每次修改和拿到的都是同一個值,用于多個界面之間資訊共享,相當于C語言的全局變量。單例參加一般以shared default開頭命名。單例更為詳盡的用法和注意事項,将在往後的多線程中細說。

三、單例傳值的實作:

1、準備步驟

1.1.建立一個工程

1.2.建立一個類DetaCenter,這裡繼承的是NSObject

2、單例實作

2.1.DetaCenter.h檔案裡公開一個單例方法(一般是類方法),并且聲明一個UIColor類型的成員變量存儲背景顔色的值(這個按實際需求聲明自己需要的類型),因為UIColor是UIKit類裡的,所有要import <UIKit.UIKit.h>頭檔案

詳細代碼如下:

2.2DetaCenter.m檔案裡實作單例方法(建立單例)

//在堆中聲明一片dataCenter的記憶體空間

//特點:不會被自動回收,用static修飾,靜态

代碼如下:

2.3ViewController.m檔案中包含DetaCenter.h頭檔案,并且對單例進行指派和擷取

代碼如下:

二、通知傳值

一、目的要求:利用通知傳值修改界面1的背景顔色

二、通知傳值的特點:多個VC注冊通知,單個VC發送通知時,注冊通知的vc都響應方法(一對多的傳值方式)

三、簡單步驟:(先監聽,再發送)

界面1注冊通知:

//添加到通知中心,使用:傳遞通知(NSNotification)本身給方法[[NSNotificationCenterdefaultCenter]addObserver:selfselector:@selector(notiMethod:) name:@"changeColorNoti"object:nil];

界面2發送通知:

//用post方法使name相同的通知作響應[[NSNotificationCenterdefaultCenter]postNotificationName:@"changeColorNoti"object:[UIColorblackColor] userInfo:nil];

四、詳細代碼

界面1 .m檔案

界面2 .m檔案

三、協定代理傳值

一、目的要求:利用協定代理傳值修改界面1的背景顔色

二、協定代理傳值的特點:例如修改背景顔色,可以設定一個專門的代理類來實作,其他需要修改背景顔色的所有類都可以與其簽訂協定來修改自己的背景顔色--封裝的思想

三、步驟:

3.1 在界面2中(協定代理類)制定協定,并聲明協定方法,但不實作,誰遵守協定誰實作

3.2 在界面2中(協定代理類)公開一個攜帶協定的id指針

代碼如下:

3.3 在界面1 中(遵守協定類)聲明界面2(聲明協定類)的頭檔案,并且遵守協定

3.4 在界面1中(遵守協定類)進行協定的關聯

3.5 在界面1中(遵守協定類)實作協定方法

代碼如下:

3.6 在界面2的.m(協定代理類)的某個狀态中調用協定方法,傳入參數

代碼如下:

四、block傳值

一、目的要求:利用block傳值修改界面1的背景顔色

二、block傳值的特點:block傳值是傳一塊待執行的代碼區域,待激活該代碼塊區域是才會執行,block傳值是現在蘋果官方推薦的,也是将來的一種趨勢

三、步驟:本人對block了解不深,就不做多描述以免誤導大家,待将來了解深刻了,在回來補齊其中知識點,這裡直接貼上代碼。

VC:

SVC.h

SVC.m

繼續閱讀