lib/NSObject+DDExtensions.m
author Dave Dribin <dave@dribin.org>
Fri Mar 19 21:42:47 2010 -0500 (2010-03-19)
changeset 168 bee1125db0c9
parent 158 14076243f425
permissions -rw-r--r--
Update to 10.5 SDK. Add DDPerformDebugger.m
     1 /*
     2  * Copyright (c) 2007-2009 Dave Dribin
     3  * 
     4  * Permission is hereby granted, free of charge, to any person
     5  * obtaining a copy of this software and associated documentation
     6  * files (the "Software"), to deal in the Software without
     7  * restriction, including without limitation the rights to use, copy,
     8  * modify, merge, publish, distribute, sublicense, and/or sell copies
     9  * of the Software, and to permit persons to whom the Software is
    10  * furnished to do so, subject to the following conditions:
    11  * 
    12  * The above copyright notice and this permission notice shall be
    13  * included in all copies or substantial portions of the Software.
    14  *
    15  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
    16  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
    17  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
    18  * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
    19  * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
    20  * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
    21  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
    22  * SOFTWARE.
    23  */
    24 
    25 #import "NSObject+DDExtensions.h"
    26 #import "DDInvocationGrabber.h"
    27 
    28 @implementation NSObject (DDExtensions)
    29 
    30 - (id)dd_invokeOnMainThread;
    31 {
    32     return [self dd_invokeOnMainThreadAndWaitUntilDone:NO];
    33 }
    34 
    35 - (id)dd_invokeOnMainThreadAndWaitUntilDone:(BOOL)waitUntilDone;
    36 {
    37     DDInvocationGrabber * grabber = [DDInvocationGrabber invocationGrabber];
    38     [grabber setForwardInvokesOnMainThread:YES];
    39     [grabber setWaitUntilDone:waitUntilDone];
    40     return [grabber prepareWithInvocationTarget:self];
    41 }
    42 
    43 #if (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5)
    44 
    45 - (id)dd_invokeOnThread:(NSThread *)thread;
    46 {
    47     return [self dd_invokeOnThread:thread waitUntilDone:NO];
    48 }
    49 
    50 - (id)dd_invokeOnThread:(NSThread *)thread waitUntilDone:(BOOL)waitUntilDone;
    51 {
    52     DDInvocationGrabber * grabber = [DDInvocationGrabber invocationGrabber];
    53     [grabber setInvokesOnThread:thread];
    54     [grabber setWaitUntilDone:waitUntilDone];
    55     return [grabber prepareWithInvocationTarget:self];
    56 }
    57 
    58 #endif
    59 
    60 @end