block 传值 遇到的出错点:Thread 1:EXC_BAD_ACCESS(code=1,address=0x10)
来源:互联网 发布:java调用nodejs程序 编辑:程序博客网 时间:2024/06/11 05:17
Home界面也就是需要接收值的界面。
#pragma mark 推出登录界面
-(void)loginAction:(id)sender
{
LoginViewController *loginVC = [[LoginViewControlleralloc]init];
#warning 遇到block,先执行block块外的语句,再执行块内语句
//block 的定义
loginVC.block = ^(NSString *text){
// self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc]initWithTitle:text style:UIBarButtonItemStyleDone target:nil action:nil];
NSLog(@"传过来的值:%@",text);
};
#warning 前后创建的对象是不一样的
//之前出错就是一到LoginViewController.m中的self.block(name)就直接断了,原因是因为我在这里的跳转之前又创建了一个新的.
[self.navigationControllerpushViewController:[LoginViewControllernew] animated:YES];
}
====================================
传值的那个界面的.h
#import <UIKit/UIKit.h>
//声明一个block用来传值,注意给block取别名的默认返回值是int
typedefvoid (^blockLoginTitle)(NSString *title);
@interface LoginViewController :UIViewController
//声明一个属性,方便使用blockLoginTitle
@property(nonatomic,strong)blockLoginTitle block;
@end
===========================
.m
#pragma mark 登录按钮事件的响应
-(void)loginBtnAction:(UIButton *)sender
{
//获取登录界面的输入信息
NSString *name =_loginView.nameLTView.textField.text;
NSString *pwd =_loginView.passLTView.textField.text;
#pragma mark 去数据库中取到值
NSArray *result = [[DBManagersharedDBManager] selectAllUser];
for (User *userin result) {
if ([name isEqualToString:user.name] && [pwdisEqualToString:user.password])
{
#warning 这里直接出错,没有任何错误提醒,只有 Thread 1:EXC_BAD_ACCESS(code=1,address=0x10)
//调用block
self.block(name);
[self.navigationControllerpopToRootViewControllerAnimated:YES];
}
}
}
============================正确的修改:
在要接收值的界面中:
把
[self.navigationController pushViewController[LoginViewController new] animated:YES];
改为:
[self.navigationControllerpushViewController:loginVC animated:YES];
==============================
还需要注意的一点就是,block传值,传值语句是在推出第一个页面之前,接收值的语句是在第一个页面推出第二个页面之前。
因为,block块之后的语句比block块内的语句先执行。
- block 传值 遇到的出错点:Thread 1:EXC_BAD_ACCESS(code=1,address=0x10)
- 关于ios开发中遇到thread 1:exc_bad_access(code=1,address=0x50000010)类似的问题
- iOS 崩溃调试 exc_bad_access(code=1,address=0x10)
- 【OC】thread 1:exc_bad_access(code=1,address=0x7fff7d72a7a0) 的一种解决方法
- Thread 1:EXC_BAD_ACCESS(code=1,address=0x70) (Done)
- EXC_BAD_ACCESS(code=1,address=0x40000000c)
- EXC_BAD_ACCESS (code=1, address=0x0) when stepping in debugger
- 内存管理机制 Thread 1:EXC_BAD_ACCESS(code=EXC_I386_GPFLT)错误
- 内存管理机制 Thread 1:EXC_BAD_ACCESS(code=EXC_I386_GPFLT)错误
- 内存管理机制 Thread 1:EXC_BAD_ACCESS(code=EXC_I386_GPFLT)错误
- EXC_BAD_ACCESS (code=2, address=0x0)
- EXC_BAD_ACCESS (code =2,address=0x6f7fffbc)
- Delegate未设为nil导致的thread 1:exc_bad_access(code=EXC_I386_GPFLT)
- EXC_BAD_ACCESS(code=1问题的解决办法
- ios开发笔记----exc_bad_access(code=1, address=0x789870)野指针错误,假死debug状态
- 使用相机时切入后台报错:Thread1:EXC_BAD_ACCESS(code=1,address=0x1)解决办法之一
- xxxViewController进行pop时直接crash进main.m,EXC_BAD_ACCESS(code=1,address=0x20)
- 僵尸对象导致crash(Thread 1:EXC_BAD_ACCESS(code=EXC_I386_GPFLT))
- (2)Java开发和运行环境的搭建详解
- [kuangbin带你飞]数论基础的简单题解
- 第4周项目4- 建设双链表算法库
- 文件代码模板的使用
- W3school学习笔记之HTML5
- block 传值 遇到的出错点:Thread 1:EXC_BAD_ACCESS(code=1,address=0x10)
- js学习注意知识
- 用Tor进入“深网”
- 超详细图解:自己架设NuGet服务器
- Triangle
- 闭包
- 数组
- kali linux 2.0 AMD x64安装
- Java在Web开发语言上败给了PHP