because it caused the load and initialize methods to be called. Some of the
load and initialize methods used autorelease which would lead to warnings
about memory leaks (true, though very benign).
This version delays all Objective-C calls until InitializePosers().
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@21585
c3d73ce0-8a6f-49c7-b76d-
6d57e0e08775
-------------------------------------------------------------------------*/
#ifdef __OBJC__
#import <objc/objc-class.h>
-------------------------------------------------------------------------*/
#ifdef __OBJC__
#import <objc/objc-class.h>
+#import <Foundation/NSObjcRuntime.h>
class wxPoseAsInitializer
{
public:
class wxPoseAsInitializer
{
public:
- wxPoseAsInitializer(Class poser)
- : m_poser(poser)
- , m_next(sm_first)
+ wxPoseAsInitializer()
+ : m_next(sm_first)
+ virtual ~wxPoseAsInitializer()
- class_poseAs(m_poser,m_poser->super_class);
sm_first = m_next;
}
static void InitializePosers()
sm_first = m_next;
}
static void InitializePosers()
wxPoseAsInitializer *m_next;
static wxPoseAsInitializer *sm_first;
};
wxPoseAsInitializer *m_next;
static wxPoseAsInitializer *sm_first;
};
};
#define WX_IMPLEMENT_POSER(poser) \
};
#define WX_IMPLEMENT_POSER(poser) \
-wxDummyForPoseAsInitializer wxDummyPoseAsInitializerFor##poser(new wxPoseAsInitializer([poser class]))
+class wxPoseAsInitializerFor##poser: public wxPoseAsInitializer \
+{ \
+protected: \
+ virtual ~wxPoseAsInitializerFor##poser() \
+ { \
+ class_poseAs([poser class],[poser superclass]); \
+ } \
+}; \
+wxDummyForPoseAsInitializer wxDummyPoseAsInitializerFor##poser(new wxPoseAsInitializerFor##poser)
#else // __OBJC__
#warning "Objective-C++ Only!"
#else // __OBJC__
#warning "Objective-C++ Only!"