iOS 介面傳值 單例模式
介面之間傳值 場景
1.從前往後傳值 : 屬性傳值
1 在後一介面定義屬性
2 在前一介面push之前將傳遞的資料給屬性賦值
3 在後一介面通過屬性取到傳遞資料使用
2.從後往前傳值 :代理傳值
1 在後一介面定義協議
2 在後一介面定義代理屬性
3 在前一介面進入後以介面之前,將後一介面的代理指定為前一介面物件
4 前一介面服從協議
5 前一介面實現協議中的方法
6 在後一介面返回前一介面之前,讓代理執行協議中的方法,並把資料通過方法的引數傳遞
block傳值
1 定義一個block類的屬性
2 傳遞資料到上一個介面
3 將block的值傳出 (取出)
3.中間間隔多個介面間傳值:單例傳值
1.建立一個單例物件
2.新增一個單例方法(便利構造器方法)
3.在單例類新增屬性,儲存傳遞的資料
4. 把資料儲存到單例物件的屬性中
5.當需要資料時,直接從單例物件屬性中獲取
下面介紹單例模式
單例:只有一個物件。物件在程式執行期間空間一直存在,
為了保證只有一個物件,我們使用靜態變數儲存物件的地址,如果指標變數為空,則建立物件否則直接將物件的原有地址返回,但是隻alloc 不release,所以造成記憶體洩露問題。單例模式主要用來解決特定問題,一般不會使用過多的單例類
pragma 單例傳值1. 建立單例類
新建一個類,繼承於 NSObject
@interface single : NSObject
pragma 單例傳值2. 新增一個單例方法
- (single *)Singletion;
實現部分
static single *singletion = nil;
+ (single *)Singletion {
//多執行緒下安全問題 加鎖
@synchronized (self) {
if (!singletion ) {
singletion = [[single alloc] init];
}
return singletion;
}
}
pragma 單例傳值3. 新增屬性,儲存傳遞的資料
//為該類新增一個屬性,儲存要傳遞的資料
@property (nonatomic, retain) NSString *str;
UITextField tf1 = (UITextField )[self.view viewWithTag:111];
pragma 單例傳值4 將要傳遞的資料儲存到單例的屬性中
single *obj = [single Singletion ];
obj.str = tf1.text;
pragma 單例傳值5. 需要資料時,從單例物件的屬性中取出
這裡就是一個簡單地舉例
例 :label.text = [single Singletion].str;