00001 // Copyright 1997-2005 Omni Development, Inc. All rights reserved. 00002 // 00003 // This software may only be used and reproduced according to the 00004 // terms in the file OmniSourceLicense.html, which should be 00005 // distributed with this project and can also be found at 00006 // <http://www.omnigroup.com/developer/sourcecode/sourcelicense/>. 00007 // 00008 // $Header: svn+ssh://source.omnigroup.com/Source/svn/Omni/tags/SourceRelease_2005-11-18/OmniGroup/Frameworks/OmniBase/OBPostLoader.h 68913 2005-10-03 19:36:19Z kc $ 00009 00010 #import <OmniBase/OBObject.h> 00011 00012 00013 @interface OBPostLoader : OBObject 00014 00015 + (void)processClasses; 00016 00017 + (void) processSelector: (SEL) selectorToCall 00018 initialize: (BOOL) shouldInitialize; 00019 00020 + (BOOL) isMultiThreaded; 00021 00022 @end 00023 00024 @interface NSObject (OBPostLoader) 00025 00026 /*" 00027 This method will be called on every class (or category) which implements it. 00028 "*/ 00029 + (void) performPosing; 00030 00031 /*" 00032 This method will be called on every class (or category) which implements it. 00033 "*/ 00034 + (void) didLoad; 00035 00036 /*" 00037 This is called on each class implementation with this selector name the first time the application is about to become multi-threaded. Classes can implement this method to allocate locks that will be necessary to arbitrate access to shared data owned by the class. This method is NOT automatically called on instances -- they will need to manually subscribe to NSWillBecomeMultiThreadedNotification. 00038 "*/ 00039 + (void) becomingMultiThreaded; 00040 00041 @end