標籤:
MVC
模型-視圖-控制器(MVC)設計模式
MVC根據角色劃分類,涉及到三個角色:
Model:模型儲存應用程式的資料。
View:視圖是模型的可視化表示以及使用者互動的控制項。
Controller:控制器是一個協調所有工作的中介者。它訪問模型中的資料並在視圖中展示它們,同時它們還監聽事件和操作資料。
單例設計模式
單例設計模式可以確保對於一個類只有一個執行個體(對象)存在,這個對象有一個全域的訪問點。通常採用懶載入的方式在第一次用到對象的時候才去建立它。
如何建立一個單例:
如:在SortDetailsModelDown.h中聲明類方法+(SortDetailsModelDown *)shareSortDetailsModelDown;
在SortDetailsModelDown.m中實現該方法
static SortDetailsModelDown * single = nil;
+(SortDetailsModelDown *)shareSortDetailsModelDown{
@synchronized(self){
if (!single) {
single = [[SortDetailsModelDown alloc]init];
}
}
return single;
}
代理
自訂協議:
代理:遵循協議的對象
第一步:制定協議:(協議名:類名+Delegate)
@class MyView;@protocol MyViewDelegate <NSObject>@required //必須實現的方法-(void)changeViewBackgroudColor:(MyView *)view;@optional//可選方法-(void)test;@end
第二步:制定代理
@interface MyView : UIView第二步:指定代理@property (nonatomic,assign)id<MyView> delegate;@end
第三步:代理遵循協議.
第四步:代理實現協議裡面的必須實現的方法和其他可選方法.
第五步:委託方通知代理開始執行方法.
觀察者
KVO Key-Value Observing.它是一種機制,當指定的對象的屬性被修改後,KVO自動通知相應的觀察者。
- 註冊觀察者
[message addObserver:self forKeyPath:kKVOPathKey options:NSKeyValueObservingOptionNew context:Nil];
- 更改主題對象屬性的值,即觸發發送更改的通知
_message.key = @"asdfasd";
- 在制定的回呼函數中,處理收到的更改通知
| 123456 |
- (void) observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context{ if ([keyPath isEqual:kKVOPathKey] && object == _message) { NSLog(@"get %@",change); }} |
- 登出觀察者
[_message removeObserver:self forKeyPath:kKVOPathKey];
iOS常用設計模式:MVC、單例、代理、觀察者。