通过btn传递两个实例对象
2017-04-18 10:38
78 查看
通过btn传递两个实例对象 firstObject和secondObject
UIButton *btn = // create the button objc_setAssociatedObject(btn, "firstObject", someObject, OBJC_ASSOCIATION_RETAIN_NONATOMIC); objc_setAssociatedObject(btn, "secondObject", otherObject, OBJC_ASSOCIATION_RETAIN_NONATOMIC); [btn addTarget:self action:@selector(click:) forControlEvents:UIControlEventTouchUpInside]; - (void)click:(UIButton *)sender { id first = objc_getAssociatedObject(btn, "firstObject"); id second = objc_setAssociatedObject(btn, "secondObject"); // etc. }
向以上方法那样,只要设置了关联,当把button传递给@selector的参数时,也顺便把另外两个参数也传递过去了。就类似设了button的两个属性,但是这种方法简单多了
第一步: 设定关联
objc_setAssociatedObject(btn, "firstObject", someObject, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
第一个参数:btn为被关联者(主体),第二个参数:firstObject为指向关联的对象的指针(一般为一个static字符串),第三个参数:关联的对象实例,第四个对象:关联的方式(有几种,类似设定.h文件属性时候的 assign,retain等)[/code]
第二步:得到关联的对象
id first = objc_getAssociatedObject(btn, "firstObject");
第一个参数:为被关联者
第二个参数:为关联对象的指针。
来自:button with multiparameters
相关文章推荐
- iOS开发-通过btn传递两个实例对象 firstObject和secondObject
- Activity经典实例一:两个Activity传递数据和对象
- SignalR代理对象异常:Uncaught TypeError: Cannot read property 'client' of undefined 推出的结论 SignalR 简单示例 通过三个DEMO学会SignalR的三种实现方式 SignalR推送框架两个项目永久连接通讯使用 SignalR 集线器简单实例2 用SignalR创建实时永久长连接异步网络应用程序
- Android:通过Intent在两个Activity之间传递对象(Parcelable)
- apache HttpClients实例,传入json对象。对应的springMvc通过HandlerMethodArgumentResolver解析两个对象绑定
- Activity经典实例一:两个Activity传递数据和对象
- android中通过实现Parcelable来在两个页面之间传递对象的简单使用
- 严防程序模块间通过结构体间接传递STL实例对象
- Activity经典实例一:两个Activity传递数据和对象
- 多个DLL(exe)之间通过指针或者引用传递STL对象
- 通过SOCKET传递序列化的Java对象的方法 序列化 Socket
- 通过实例学习Java对象的构造过程
- SharePoint 2010开发实例精选——通过客户端对象模型上传下载文件
- sky教了我一招,两个类之间相互访问,通过传递指针
- 通过socket连接传递java对象(对象序列化)
- 通过序列化和反序列化实现对象实例化
- 使用表单传递参数,request处理参数出现"未将对象引用设置到对象的实例
- 通过socket传递java对象(对象序列化)
- 同一台计算机上的两个flash应用程序之间传递自定义对象出错
- 两个aspx页面间传递引用对象