// Reuse wxCFRef-related code (e.g. wxCFRetain/wxCFRelease)
#include "wx/mac/corefoundation/cfref.h"
-// NOTE WELL: We can only know which Objective-C runtime is being used when compiling Objective-C.
+// NOTE WELL: We can only know whether or not GC can be used when compiling Objective-C.
// Therefore we cannot implement these functions except when compiling Objective-C.
#ifdef __OBJC__
/*! @function wxGCSafeRetain
template <class Type>
inline Type * wxGCSafeRetain(Type *r)
{
-#ifdef __NEXT_RUNTIME__
+#ifdef __OBJC_GC__
return static_cast<Type*>(wxCFRetain(r));
#else
return [r retain];
template <class Type>
inline void wxGCSafeRelease(Type *r)
{
-#ifdef __NEXT_RUNTIME__
+#ifdef __OBJC_GC__
wxCFRelease(r);
#else
[r release];
#else
// NOTE: When not compiling Objective-C, declare these functions such that they can be
// used by other inline-implemented methods. Since those methods in turn will not actually
-// be used from non-ObjC code there is no problem.
+// be used from non-ObjC code the compiler ought not emit them. If it emits an out of
+// line copy of those methods then presumably it will have also emitted at least one
+// out of line copy of these functions from at least one Objective-C++ translation unit.
+// That means the out of line implementation will be available at link time.
template <class Type>
inline Type * wxGCSafeRetain(Type *r);