IOS代理淺析
一直想總結一下關於代理的用法,恰好今天有時間。
現在有這樣一個需求:比如A是圖書閱讀介面,介面上有個按鈕是【新增書籤】,這個按鈕有一個響應事件-(void)addBookMarkAtIndexPath,把當前頁作為書籤給存入資料庫;B介面是書籤展示介面,用來顯示這本書中新增的書籤。當在A中點選【新增書籤】後,B中要把當前頁的縮圖給顯示出來。其實這些功能不用代理也能實現,用代理是為了是類之間的聯絡更加的鬆散,以後程式碼的維護比較省心
建立一個協議
@protocol BookMarkDelegate <NSObject>
- (void) addABookMarkThoughIndexPage: (NSInteger)page;
@end;
A類如下
.h
@Class BookMarkDelegate;
@interface A : UIViewController
@protocol (nonatomic,weak) id<BookMarkDelegate> delegate;
@end;
.m
@implementation A
UIButton * addMarkButton = [ UIButton buttonWithType: UIButtonTypeCustom];
[addMarkButton addTarget:self action:@select(addBookMarkAtIndexPath) forControlEvents: UIControllerEventsTouchUpInside];
……
-(void)addBookMarkAtIndexPath{
[self.delegate addABookMarkThoughIndexPage:self.currentPage];
}
@end
B類
.h
@interface B :NSObject <BookMarkDelegate>
.m
@interface B ()
- (void) addMarkAtPage: (NSInteger) index;
@end
@implementation B
//在B中要例項化A,將A中的delegate指向自己
A* a = [[A alloc]init];
a.delegate = self;
- (void) addMarkAtPage: (NSInteger) index{
UIView* markView = [self getThumbViewAtIndexPage:index] //取得指定頁的縮圖
markView.frame = CGRectMake(x,y,width,height);
[self.view addSubView: markView];
}
#pragma mark - BookMarkDelegate
- (void) addABookMarkThoughIndexPage: (NSInteger)page{
[self addMarkAtPage: page];
}
@end
其實,我對代理的理解也不是很深刻,也就侷限於此類功能的實現,入過你有更深刻的認識,還請留言,共同學習。
相關文章
- iOS Block淺淺析iOSBloC
- 淺析iOS-CordovaiOS
- 淺析代理IP與VPS
- 淺析DispatchProxy動態代理AOP
- 淺析正向代理與反向代理 海外代理IP介紹
- 淺析動態代理IP 海外代理IP介紹
- iOS應⽤簽名原理淺析iOS
- iOS 介面效能優化淺析iOS優化
- 淺析反向代理的原理與作用
- 淺析線上代理IP的用法
- 淺析MyBatis的動態代理原理MyBatis
- iOS MVC、MVVM、MVP架構模式淺淺析iOSMVCMVVMMVP架構模式
- iOS 設計模式淺析 0 – 前言iOS設計模式
- iOS元件化通用工具淺析iOS元件化
- 淺析每日使用代理IP的優勢
- 淺析iOS手遊逆向和保護iOS
- iOS 富文字常用封裝(NSAttributedString淺析)iOS封裝
- IOS學習之淺析深拷貝與淺拷貝iOS
- 淺析 Flutter 與 iOS 的檢視橋樑FlutteriOS
- 淺析Spring中AOP的實現原理——動態代理Spring
- 淺析iOS獲量思路:搭配渠道守正出奇iOS
- 淺析iOS-MAS&鏈式程式設計思想iOS程式設計
- iOS應用程式的脫殼實現原理淺析iOS
- 淺析RedisRedis
- Jvm 淺析JVM
- CGLib淺析CGLib
- 淺析XMLXML
- MongoDB淺析MongoDB
- 淺析 JWTJWT
- 淺析 DDD
- RunLoop 淺析OOP
- 淺析 ReentrantLockReentrantLock
- Unstated淺析
- 淺析SharedPreferences
- Nginx淺析Nginx
- 淺析PromisePromise
- ejs 淺析JS
- 淺析KubernetesStatefulSet
- AIDL淺析AI