整理IOS中Block用作属性、传值、回调用法
来源:互联网 发布:网络教育考上研究生 编辑:程序博客网 时间:2024/06/06 09:12
1.block用作属性 封装一段代码
在模型类中声明block属性 ,注意block的属性要使用copy否则会出问题
@property (copy,nonatomic) void (^actionBlock)();
@property (copy,nonatomic) void (^actionWithPapameterBlock)(int papameter);
@property (copy,nonatomic)NSString *(^actionToReturnStirng)();
其他控制器创建模型类对象,并且为block属性赋予一段代码 。曾经为cell的模型类添加了block属性后,将点击cell跳转的控制器封装到块代码中,调用起来十分方便。
//无返回值无参数block
_model = [[Modelalloc]init];
_model.actionBlock = ^{
NSLog(@"actionBlock");
};
//无返回值有参数block
_model.actionWithPapameterBlock = ^(int a){
NSLog(@"%d",a);
};
//有返回值
_model.actionToReturnStirng = ^{
return@"hello";
};
在其他方法中调用block
- (IBAction)tapBtn:(id)sender
{
_model.actionBlock();
_model.actionWithPapameterBlock(10);
NSLog(@"%@",_model.actionToReturnStirng());
}
2.控制器传值
在需要传值的控制器定义block,此处传递UITextField中输入的NSString,并且声明初始化方法
typedefvoid(^textFieldChangedBlock)(NSString *text);
-(id)initWithBlock:(textFieldChangedBlock)block;
实现文件中用成员变量记录block
@implementation Model{
textFieldChangedBlock _changedBlock;
}
- (id)initWithBlock:(textFieldChangedBlock)block
{
self = [super init];
if (self) {
_changedBlock = block;
}
return self;
}
执行block
- (void)click
{ //返回
_changedBlock(self.textFiled.text);
[self dismissViewControllerAnimated:YES completion:nil];
}
Block传值,在需要显示textfield内容的控制器实例化存储有block的类
DetailViewController *detail = [[DetailViewController alloc]initWithBlock:^(NSString *text) {
[self.label setText:text];
}];
3.曾在用sprite kit加载scene素材时用到了block
//主控制器中利用自定义scene提供的方法加载场景素材
[scene loadSceneAssetsWithCompletionHandler:^{
scene.scaleMode =SKSceneScaleModeAspectFill;
[skView presentScene:scene];
}];
// block实现
typedefvoid(^AssetLoadCompletionHandler)(void);
- (void)loadSceneAssetsWithCompletionHandler:(AssetLoadCompletionHandler)callback
{
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0), ^{
[selfloadSceneAssets];
if (callback) {
dispatch_async(dispatch_get_main_queue(), ^{
callback();//回调
});
}
});
}
- 整理IOS中Block用作属性、传值、回调用法
- ios block回调用法
- ios中为什么block用copy属性
- iOS个人整理14-界面间传值:属性传值---代理传值---block传值---单例传值
- 关于C#中对象用作属性
- iOS Block属性
- iOS中使用block传值
- iOS中使用block传值
- iOS中使用block传值
- iOS中使用block传值
- 关于iOS block中警告问题的一些整理
- iOS block相关整理
- IOS 中最长见之一 Block基础调用数据。
- IOS 属性 协议 Block用法
- iOS 属性传值 Block传值 两个ViewController之间的
- IOS中block的回调
- ios 中使用 block
- ios中Block语法
- Fiddler (四) 实现手机的抓包
- Windows上安装Docker
- UML图验收总结
- HTML页面html与body的见解
- win7系统下如何关闭UAC,去掉软件图标上的盾牌
- 整理IOS中Block用作属性、传值、回调用法
- 奥比中光招聘 --- 应用研发工程师
- 【转】C# WinForm中Panel实现用鼠标操作滚动条
- C语言标识符的属性
- 第十五届现场编程比赛初赛(提高组)
- Python-OpenCV教程-8-图像金字塔融合
- pthread_join的段错误
- 四大组件之Content Provider(一)
- OpenCV打开摄像头(二)