关于代理的使用:
第一步:创建一个类,声明一个协议,并指定需要实现的方法
@protocol TouchViewDelegate <NSObject>
- (void)founctionWith:(TouchView *)sender;
@end
第二步:在这个.h文件中新建一个代理属性,该属性为id类型
@property (nonatomic,assign) id<TouchViewDelegate> delegate;
第三步:在.m文件中,就可以通过.h中定义的属性来调用协议中的方法了.
[self.delegate founctionWith:self];
第四步:在其他类中接受这个协议,并设置代理为自身属性,实现这个协议方法
@interface RootViewController ()<TouchViewDelegate>
self.touch.delegate = self;<pre name="code" class="objc">- (void)FounctionWith:(TouchView2 *)sender{
NSLog(@"这是一个代理协议,我就是看看能不能实现");
}
关于block的使用:
第一步:在一个类中定义一个block
2种方法定义都可以:
typedef void (^MyBlock)(NSString *myText);
@interface TouchView : UIView
@property (nonatomic,copy) MyBlock myBlock;
@property (nonatomic,copy) void (^mySecondBlock)(NSString *myText);
@end
第二步:在这个类中使用这个block并且将所需要的参数传入
self.myBlock(@"第一个block给一个参数");
self.mySecondBlock(@"第二个blcok给一个参数");
第三步:声明这个block, 这两种方法都可以,注意如果block内用到了self,一定要注意用弱引用
[self.rv.touch2 setMySecondBlock:^(NSString *myText) {
NSLog(@"第一个block起作用了吧");
}];
self.rv.touch2.myBlock = ^void(NSString *myText){
NSLog(@"第二个block起作用了吧");
};
__weak typeof(self) mySelf = self;
__weak RootViewController *myself = self;