// TEST_CFLAGS #include <Foundation/NSObject.h> #include <objc/runtime.h> #include <objc/objc-internal.h> #include "test.h" int main() { // rdar://8350188 External references (handles) id object = [NSObject new]; testassert(object); // STRONG objc_xref_t xref = _object_addExternalReference(object, OBJC_XREF_STRONG); testassert(xref); testassert(_object_readExternalReference(xref) == object); _object_removeExternalReference(xref); // TODO: expect a crash if a stale xref is used. // WEAK xref = _object_addExternalReference(object, OBJC_XREF_WEAK); testassert(xref); testassert(_object_readExternalReference(xref) == object); _object_removeExternalReference(xref); RELEASE_VAR(object); succeed(__FILE__); }