頁面?zhèn)髦?/h1>

1筐骇、正向?qū)傩詡髦?/b>

界面 A 跳轉(zhuǎn)到界面 B 的時(shí)夫壁,向界面 B 傳值。

a缺菌、在界面 B 的 .h 文件中聲明一個(gè)屬性

@interface TestViewController:UIViewController

@property (nonatomic,copy) NSString *testStr;

@end

b、在A界面導(dǎo)入界面 B 的頭文件赋续,創(chuàng)建界面 B 并進(jìn)行屬性賦值

TestViewController?*testVC = [[TestViewController alloc] init];

testVC.testStr?= @"test";

[self.navigationController pushViewController:testVC animated:YES];

2男翰、通知傳值

在接收方注冊(cè)通知,并指定接收到通知后進(jìn)行的操作纽乱,并在消毀時(shí)一定要移除注冊(cè)的通知蛾绎,否則會(huì)造成內(nèi)存泄漏;在發(fā)送方傳遞數(shù)據(jù)時(shí)發(fā)送通知鸦列。特別要注意發(fā)送通知時(shí)接收方必須要存在租冠。還要注意發(fā)送方和接受方的通知名稱必須一致。?

a薯嗤、在發(fā)送方中發(fā)布通知

[[NSNotificationCenter defaultCenter] postNotificationName:@"testNotificationName" object:nil userInfo:@{@"color":[UIColor grayColor]];

b顽爹、在接收方中注冊(cè)通知(一般在 viewDidLoad 中注冊(cè)通知)

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(changeColor:) name:@"testNotificationName" object:nil];

c、在接收方中實(shí)現(xiàn)通知具體操作

-(void)changeColor:(NSNotification*)noti{

NSDictionary*dict=noti.userInfo;

self.view.backgroundColor=[dict valueForKeyPath:@"color"];

}

d骆姐、在接收方中注銷通知(一般在dealloc中注銷)

-(void)dealloc{

[[NSNotificationCenter defaultCenter] removeObserver:self name:@"testNotificationName" object:nil];

}

3镜粤、代理傳值

委托者需要做的事:

1、定義協(xié)議與方法

2玻褪、聲明委托變量

3肉渴、利用委托變量來調(diào)用協(xié)議方法

代理需要做的事:

1、遵守委托者定義的協(xié)議带射,把自己賦值給委托者對(duì)象中的delegate

2同规、實(shí)現(xiàn)協(xié)議中的方法

a、在委托者界面.h文件中定義協(xié)議

@protocol TestViewControllerDelegate <NSObject>

- (void)testChangeViewColor:(UIColor *)color;

@end

b、在委托者界面.h文件中定義代理屬性

@property (nonatomic, weak) id<TestViewControllerDelegate>delegate;

c券勺、在委托者界面.m 中需要的位置調(diào)用代理方法

if (_delegate) {

? ? ? ? [_delegate testChangeViewColor:[UIColor redColor]];

}

d绪钥、在代理界面中遵守協(xié)議并設(shè)置成代理者

@interface ViewController ()<TestViewControllerDelegate>

@end

TestViewController *testVC = [[TestViewController alloc] init];

testVC.delegate=self;

[self.navigationController pushViewController:testVC animated:YES];

e、在代理界面中實(shí)現(xiàn)協(xié)議

- (void)testChangeViewColor:(UIColor *)color{

? ? self.view.backgroundColor = color;

}

4关炼、Block傳值

Block就是一段匿名的代碼塊程腹,是具有某種功能的代碼塊。類似代理儒拂,此時(shí)可以不用寫協(xié)議跪楞,相當(dāng)于簡(jiǎn)化的代理方法描述:在子頁面中添加一個(gè)塊語句屬性,在子頁面返回主頁面之前調(diào)用該塊語句侣灶。在主頁面跳轉(zhuǎn)子頁面之前,設(shè)置子頁面中的塊語句屬性將要執(zhí)行的動(dòng)作(回調(diào)函數(shù))缕碎。這樣褥影,在子頁面返回主頁面時(shí)就會(huì)調(diào)用該回調(diào)函數(shù)來傳遞數(shù)據(jù)。

a咏雌、在子頁面.h文件中定義塊語句屬性

@property (nonatomic, copy) void (^testBlock) (void);

b凡怎、在子頁面.m 中文件中需要的位置調(diào)用塊語句

if (_testBlock) {

? ? ? ? _testBlock();

}

c、在主頁面設(shè)置塊語句赊抖,并捕獲傳過來的值

test.testBlock= ^{


};

5统倒、單例傳值

單例模式確保某一個(gè)類只有一個(gè)實(shí)例,而且自行實(shí)例化并向整個(gè)系統(tǒng)提供這個(gè)實(shí)例氛雪,這個(gè)類稱為單例類房匆。單例經(jīng)常用來做應(yīng)用程序級(jí)別的共享資源控制。通過一個(gè)單例類报亩,可以實(shí)現(xiàn)不同頁面之間的參數(shù)傳遞浴鸿。單例在編譯時(shí)初始化這個(gè)類,然后一直保存在內(nèi)存中弦追,到程序退出時(shí)由系統(tǒng)自動(dòng)釋放這部分內(nèi)存岳链。

單例的優(yōu)點(diǎn):

1?提供了唯一的實(shí)例,統(tǒng)一管理資源劲件,即提供了對(duì)唯一實(shí)例的受控訪問掸哑。所以很便于外界訪問,存儲(chǔ)狀態(tài)等更加方便零远。

2?只有一個(gè)實(shí)例苗分,可以做到按需創(chuàng)建或加載資源,不用再頻繁地創(chuàng)建和銷毀對(duì)象遍烦,從而提高了系統(tǒng)的性能和節(jié)約系統(tǒng)資源俭嘁。

單例的缺點(diǎn):

1?單例從創(chuàng)建到徹底關(guān)閉程序前都會(huì)一直存在,如果過多的創(chuàng)建單例無疑浪費(fèi)系統(tǒng)資源和影響系統(tǒng)效率服猪。

2供填、由于單利模式中沒有抽象層接口拐云,因此單例類很難再進(jìn)行擴(kuò)展。而且單例不能繼承近她。

+ (instancetype)shareSingleton{

? ? static?SingletonModel*model =nil;

? ? static?dispatch_once_tonceToken;

? ? dispatch_once(&onceToken, ^{

? ? ? ? model = [[SingletonModel alloc] init];

? ? });

? ? return?model;

}

? ? ? ? 只要我們保證我們創(chuàng)建這個(gè)單例對(duì)象都是通過shareSingleton方法來創(chuàng)建的就沒問題叉瘩。如果我們不能保證用上面的方法創(chuàng)建對(duì)象,那么就會(huì)出問題粘捎,不能保證這是一個(gè)單例對(duì)象薇缅。

6、KVO傳值

KVO鍵值觀察機(jī)制攒磨,是觀察者設(shè)計(jì)模式的一種實(shí)現(xiàn)泳桦。 當(dāng)觀察者將被觀察者的某個(gè)屬性設(shè)置為觀察的對(duì)象時(shí),若被觀察的該屬性值發(fā)生變化時(shí)娩缰,就會(huì)觸發(fā)觀察者對(duì)象所實(shí)現(xiàn)的KVO接口方法灸撰,從而達(dá)到通知觀察者的目的。

a拼坎、在觀察者中添加觀察

[vc addObserver:self forKeyPath:@"testStr" options:NSKeyValueObservingOptionNew context:nil];

b浮毯、在觀察者中實(shí)現(xiàn)觀察方法

- (void)observeValueForKeyPath:(NSString*)keyPathofObject:(id)objectchange:(NSDictionaryid> *)changecontext:(void*)context{

? ? NSLog(@"%@",change);

}

c、在被觀察者增加被觀察的屬性

@property (nonatomic, copy) NSString *testStr;

d泰鸡、被觀察者改變?cè)搶傩缘闹?/p>

self.testStr = [NSString stringWithFormat:@"%d",arc4random()%100];

7债蓝、數(shù)據(jù)持久化傳值(緩存?zhèn)髦担?/b>

8、全局變量傳值

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者

  • 序言:七十年代末盛龄,一起剝皮案震驚了整個(gè)濱河市饰迹,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌讯嫂,老刑警劉巖蹦锋,帶你破解...
    沈念sama閱讀 219,270評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異欧芽,居然都是意外死亡莉掂,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,489評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門千扔,熙熙樓的掌柜王于貴愁眉苦臉地迎上來憎妙,“玉大人,你說我怎么就攤上這事曲楚±逋伲” “怎么了?”我有些...
    開封第一講書人閱讀 165,630評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵龙誊,是天一觀的道長抚垃。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么鹤树? 我笑而不...
    開封第一講書人閱讀 58,906評(píng)論 1 295
  • 正文 為了忘掉前任铣焊,我火速辦了婚禮,結(jié)果婚禮上罕伯,老公的妹妹穿的比我還像新娘曲伊。我一直安慰自己,他們只是感情好追他,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,928評(píng)論 6 392
  • 文/花漫 我一把揭開白布坟募。 她就那樣靜靜地躺著,像睡著了一般邑狸。 火紅的嫁衣襯著肌膚如雪懈糯。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,718評(píng)論 1 305
  • 那天单雾,我揣著相機(jī)與錄音昂利,去河邊找鬼。 笑死铁坎,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的犁苏。 我是一名探鬼主播硬萍,決...
    沈念sama閱讀 40,442評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼围详!你這毒婦竟也來了朴乖?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,345評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤助赞,失蹤者是張志新(化名)和其女友劉穎买羞,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體雹食,經(jīng)...
    沈念sama閱讀 45,802評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡畜普,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,984評(píng)論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了群叶。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片吃挑。...
    茶點(diǎn)故事閱讀 40,117評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖街立,靈堂內(nèi)的尸體忽然破棺而出舶衬,到底是詐尸還是另有隱情,我是刑警寧澤赎离,帶...
    沈念sama閱讀 35,810評(píng)論 5 346
  • 正文 年R本政府宣布逛犹,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏虽画。R本人自食惡果不足惜舞蔽,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,462評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望狸捕。 院中可真熱鬧喷鸽,春花似錦、人聲如沸灸拍。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,011評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽鸡岗。三九已至混槐,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間轩性,已是汗流浹背声登。 一陣腳步聲響...
    開封第一講書人閱讀 33,139評(píng)論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留揣苏,地道東北人悯嗓。 一個(gè)月前我還...
    沈念sama閱讀 48,377評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像卸察,于是被迫代替她去往敵國和親脯厨。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,060評(píng)論 2 355