]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/cocoa/ObjcRef.h
adding comment
[wxWidgets.git] / include / wx / cocoa / ObjcRef.h
index 44acfa8c45e17144bc6c25fabd79a9a442365f0c..d8361c62c30b747bd840ca94603ad8c128b49732 100644 (file)
@@ -2,7 +2,7 @@
 // Name:        wx/cocoa/ObjcRef.h
 // Purpose:     wxObjcAutoRef template class
 // Author:      David Elliott
-// Modified by: 
+// Modified by:
 // Created:     2004/03/28
 // RCS-ID:      $Id$
 // Copyright:   (c) 2004 David Elliott <dfe@cox.net>
@@ -13,9 +13,9 @@
 #define _WX_COCOA_OBJCREF_H__
 
 // Reuse wxCFRef-related code (e.g. wxCFRetain/wxCFRelease)
-#include "wx/mac/corefoundation/cfref.h"
+#include "wx/osx/core/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
@@ -47,7 +47,7 @@
     wxGCSafeRelease(m_obj); // release current object (if any)
     m_obj = wxGCSafeRetain([[NSObject alloc] init]);
     [m_obj release]; // balance alloc
-    
+
     Consider the effect on the retain count from each statement (alloc, CFRetain, release)
     In RR mode:     retainCount = 1, +1, -1
     In GC mode:     strongRetainCount = 0, +1, -0
@@ -58,7 +58,7 @@
 template <class Type>
 inline Type * wxGCSafeRetain(Type *r)
 {
-#ifdef __NEXT_RUNTIME__
+#ifdef __OBJC_GC__
     return static_cast<Type*>(wxCFRetain(r));
 #else
     return [r retain];
@@ -90,7 +90,7 @@ inline Type * wxGCSafeRetain(Type *r)
 template <class Type>
 inline void wxGCSafeRelease(Type *r)
 {
-#ifdef __NEXT_RUNTIME__
+#ifdef __OBJC_GC__
     wxCFRelease(r);
 #else
     [r release];
@@ -99,7 +99,10 @@ inline void wxGCSafeRelease(Type *r)
 #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);
@@ -147,7 +150,7 @@ protected:
     it will use a method (currently CFRetain/CFRelease) to ensure the object will never be
     finalized until this object is destroyed.
  */
-    
+
 template <class T>
 class wxObjcAutoRefFromAlloc: wxObjcAutoRefBase
 {