在使用关联对象时,这是一种从iOS 4和OSX 10.6开始提供的Objective-C运行时特性,需要定义一个关键字来在运行时存储和检索对象。
典型的用法是像下面这样定义关键字
static char const * const ObjectTagKey = "ObjectTag";
然后使用它来存储对象
objc_setAssociatedObject(self, ObjectTagKey, newObjectTag, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
并检索它
objc_getAssociatedObject(self, ObjectTagKey);
(示例来自http://oleb.net/blog/2011/05/faking-ivars-in-objc-categories-with-associative-references/)
有没有更简洁的方法来定义关联对象键,而不涉及声明额外变量?
return objc_getAssociatedObject(self, @selector(anAssociatedObject));
。 - FlexicoderNSURLSessionTask
上将不起作用:https://dev59.com/l2Ei5IYBdhLWcg3wHJAR,更多信息也在这里:https://devforums.apple.com/message/838955#838955(需要苹果开发者登录)。 - Victor