美文网首页
iOS关联对象 objc_setAssociatedObje

iOS关联对象 objc_setAssociatedObje

作者: 黄卷青灯空离别 | 来源:发表于2018-01-23 17:05 被阅读25次
首先看一下此方法接收的参数
objc_setAssociatedObject(id object, const void *key, id value, objc_AssociationPolicy policy)
被关联的对象,下面举的例子中关联到了UIAlertView
- 1. 要关联的对象的键值,一般设置成静态的,用于获取关联对象的值
- 2. 要关联的对象的值,从接口中可以看到接收的id类型,所以能关联任何对象
- 3. 关联时采用的协议,有assign,retain,copy等协议,具体可以参考官方文档
下面就以UIAlertView为例子简单介绍一下使用方法

使用场景:在UITableView中点击某一个cell,这时候弹出一个UIAlertView,然后在UIAlertView消失的时候获取此cell的信息,我们就获取cell的indexPath

第一步
#import <objc/runtime.h>
static char kUITableViewIndexKey;
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
......
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"提示"
                                                message:@"这里是xx楼"
                                               delegate:self
                                      cancelButtonTitle:@"好的"
                                      otherButtonTitles:nil];
//然后这里设定关联,此处把indexPath关联到alert上
objc_setAssociatedObject(alert, &kUITableViewIndexKey, indexPath, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
[alert show];
}
第二步:
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
    if (buttonIndex == 0) {
    NSIndexPath *indexPath = objc_getAssociatedObject(alertView, &kUITableViewIndexKey);
    NSLog(@"%@", indexPath);
    }
} 

相关文章

  • iOS关联对象 objc_setAssociatedObje

    首先看一下此方法接收的参数 被关联的对象,下面举的例子中关联到了UIAlertView 下面就以UIAlertVi...

  • iOS 关联对象 (objc_setAssociatedObje

    在category分类中 @property 并不会自动生成实例变量以及存取方法,所以一般使用关联对象为已经存在的...

  • iOS关联对象技术原理

    iOS关联对象技术原理 iOS关联对象技术原理

  • iOS底层原理总结 - 关联对象实现原理

    iOS底层原理总结 - 关联对象实现原理 iOS底层原理总结 - 关联对象实现原理

  • iOS Objective-C 关联对象

    iOS Objective-C 关联对象 1. 关联对象简介 对于关联对象,我们熟悉它的地方就是给分类添加属性。虽...

  • iOS对象关联

    什么是关联对象 关联对象是指某个OC对象通过一个唯一的key连接到一个类的实例上。 举个例子:xiaoming是P...

  • iOS:关联对象

    目录一,添加属性二,基本知识三,底层原理四,注意点 一,添加属性 1,在类中添加属性,系统会自动生成带下划线的成员...

  • iOS 关联对象

    在平时的工作中经常碰到给类别添加属性的操作,那么实现思路是怎么样的呢? 代码实现:新建一个Person类和Pers...

  • iOS 关联对象

    可以不改变源码的情况下增加实例变量。可与分类配合使用,为分类增加属性。(类别是不能添加成员变量的(property...

  • iOS 关联对象

    关联对象简单的说就是运用oc语言的运行时特性(runtime),给类别加属性(当然不止加属性).正常的类中创建一个...

网友评论

      本文标题:iOS关联对象 objc_setAssociatedObje

      本文链接:https://www.haomeiwen.com/subject/guosaxtx.html