ios中類與類之間的信息參數傳遞我總結出來有四種:java
通知NSNotificationios
協議Delegate設計模式
單例設計模式api
塊語法blocksession
Notification動畫
當一個類觸發了某個方法發出了通知,另外一個不相關的類設置了通知監聽, 這樣這個類就會執行收到通知後的一系列操做。 通常不用這個方法, 由於通知不少的時候項目就很差管理了。this
Delegate設計
這個類的方法由另外一個類來實現。代理
Class A 申明瞭代理 id<CertainProtocol> delegate, 因此代理類須要實現certainprotocol中的方法, io
self.delegate = b; [self.delegate methodA];
因爲methodA是由class B實現的, 因此B中的信息就能取到。
單例
相似於java ee中的session,每一個類均可以改變和取得這個單例的值,很容易理解。
block
block的思路理解起來有點繞,模式相似於delegate,但比delegate用起來方便,不須要申明協議。是一種回調機制。
Class A:
-(void)objectMethod:(int(^)(int,int))block {
block(10,20);
}
A中這個方法定義的block要執行的參數,但如何執行,須要調用這個方法的類去定義。
Class B:
[a objectMethod:^(int a, int b) {
//call back, using the params in this class
return a+b;
}];
補充一點, 如動畫和模態視圖的回調也是用block實現的, 在api方法中定義了出現模態視圖的一系列操做,在finish時執行了block(),這個block如何執行就由調用這個方法的類去實現。