关联对象(Associated Object)
我们可以把关联对象想象成一个Objective-C对象(如字典),这个对象通过给定的key连接到类的一个实例上。不过由于使用的是C接口,所以key是一个void指针(const void *)。我们还需要指定一个内存管理策略,以告诉Runtime如何管理这个对象的内存。这个内存管理的策略可以由以下值指定:
//menu对象关联到mykey, 然后根据mykey获取到关联对象
static char myKey;
objc_setAssociatedObject(self, &myKey, menu, OBJC_ASSOCIATION_RETAIN);
id anObject = objc_getAssociatedObject(self, &myKey);
objc_msgSend(anObject, @selector(test1));
输出:
2016-06-08 17:13:13.444 DropDownMenuTest[3912:1639816] test1...
网友评论