将参数传给UIAlertView的 Delegate
来源:互联网 发布:淘宝外贸男装 编辑:程序博客网 时间:2024/05/09 17:52
首先说说我遇到的问题,我点击cell上的一个button,然后弹出一个alert,点击alert后将一个NSString传给-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{}这个方法。然后再做处理。但是这是出现了一个问题,系统报Thread1:EXC_BAD_ACCESS (code=1,address=0x*****)错误。
原因是我用[nsstring stringwithformat:]方法给上面的string赋值,这个方法不陌生,可是这就提到了我前面所说的autorelease问题。上面的错误报的就是我访问了一个已经释放的变量。其实就是string被释放了。原因是我触碰了alert方法后,当前的autorelease pool释放,string也就被释放了。
那怎么来在UIAlertView中传值呢。用下面这个方法
首先,要#import <objc/runtime.h>头文件,接着设置唯一静态变量 static const char associatedkey;
然后,关键是下面红的代码
UIAlertView *alert = [[UIAlertViewalloc]initWithTitle:@"提示"message:@"我要传值·" delegate:selfcancelButtonTitle:@"确定" otherButtonTitles:nil]; alert.delegate =self; [alert show]; NSString *message =@"我知道你是按钮了"; //objc_setAssociatedObject需要四个参数:源对象,关键字,关联的对象和一个关联策略。 //1 源对象alert //2 关键字 唯一静态变量key associatedkey //3 关联的对象 sender //4 关键策略 OBJC_ASSOCIATION_RETAIN_NONATOMIC objc_setAssociatedObject(alert, &associatedkey, message,OBJC_ASSOCIATION_RETAIN_NONATOMIC);
在代理方法中这么写就可以得到传的值了(传的值可以使string,dic,array等等)
-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{ //通过 objc_getAssociatedObject获取关联对象 NSString *messageString =objc_getAssociatedObject(alertView, &associatedkey); //使用函数objc_removeAssociatedObjects可以断开所有关联。通常情况下不建议使用这个函数,因为他会断开所有关联。只有在需要把对象恢复到“原始状态”的时候才会使用这个函数。}
0 0
- 将参数传给UIAlertView的 Delegate
- 将参数传给Java应用程序
- 如何将uboot里面的参数传给recovery或kernel
- 如何将uboot里面的参数传给recovery或kernel
- 如何将uboot里面的参数传给recovery或kernel
- 如何将uboot里面的参数传给recovery或kernel
- 如何将uboot里面的参数传给recovery或kernel
- loadrunner将参数化的数据传给变量
- 元类会自动将你通常传给‘type’的参数作为自己的参数传入
- Gradle传给虚拟机的参数
- Gradle传给虚拟机的参数
- jsp中怎么将jsp定义的参数传给javascript定义的函数???
- jsp中怎么将jsp定义的参数传给javascript定义的函数?急
- 将WebBrowser的cookie信息传给HttpWebRequest
- 使用delegate自定义UIAlertView
- JAVA传给方法的参数详解
- 解析bootloader传给kernel的参数
- uboot传给linux的启动参数
- 十大算法
- BMFont中文字体图集制作的方法~(for unity ngui)
- c++内存中字节对齐问题详解
- QAction怎么样第一次点击的时候保持按下状态
- 春天防治“上火”8个败火小妙招
- 将参数传给UIAlertView的 Delegate
- Linux CC与GCC的区别概括介绍
- C++语言的15个晦涩特性
- ubuntu下ip配置相关命令
- 关于对类和对象的理解
- LAMP环境搭建
- Linux节点和内存管理区的初始化
- JDK动态代理实现原理
- TCP MSS详解