3 TEST_ENV OBJC_DISABLE_NONPOINTER_ISA=YES
9 bool hasAssociations = false;
11 @interface TestRoot (AssocHooks)
14 @implementation TestRoot (AssocHooks)
16 - (void)_noteAssociatedObjects {
17 hasAssociations = true;
20 // -_noteAssociatedObjects is currently limited to raw-isa custom-rr to avoid overhead
27 id obj = [TestRoot new];
28 id value = [TestRoot new];
29 const void *key = "key";
30 objc_setAssociatedObject(obj, key, value, OBJC_ASSOCIATION_RETAIN);
31 testassert(hasAssociations == true);
33 id out = objc_getAssociatedObject(obj, key);
34 testassert(out == value);
36 hasAssociations = false;
38 objc_setAssociatedObject(obj, key, value, OBJC_ASSOCIATION_RETAIN);
39 testassert(hasAssociations == false); //only called once
42 out = objc_getAssociatedObject(obj, key);
43 testassert(out == value);