diff options
Diffstat (limited to 'Foundation')
-rw-r--r-- | Foundation/GTMNSThread+Blocks.h | 6 | ||||
-rw-r--r-- | Foundation/GTMNSThread+Blocks.m | 15 |
2 files changed, 19 insertions, 2 deletions
diff --git a/Foundation/GTMNSThread+Blocks.h b/Foundation/GTMNSThread+Blocks.h index 4d92b31..7754439 100644 --- a/Foundation/GTMNSThread+Blocks.h +++ b/Foundation/GTMNSThread+Blocks.h @@ -37,6 +37,10 @@ #endif // NS_BLOCKS_AVAILABLE +// [NSObject performSelector:onThread:...] 10.5 and later, so this makes no +// sense on any earlier SDK. +#if GTM_IPHONE_SDK || (MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5) + // A simple thread that does nothing but handle performBlock and // performSelector calls. @interface GTMSimpleWorkerThread : NSThread { @@ -47,3 +51,5 @@ // Will stop the thread. - (void)stop; @end + +#endif // GTM_IPHONE_SDK || (MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5) diff --git a/Foundation/GTMNSThread+Blocks.m b/Foundation/GTMNSThread+Blocks.m index 7b5a0d1..cb5243d 100644 --- a/Foundation/GTMNSThread+Blocks.m +++ b/Foundation/GTMNSThread+Blocks.m @@ -18,7 +18,11 @@ #import "GTMNSThread+Blocks.h" -#include <pthread.h> +#import <pthread.h> +#import <dlfcn.h> + +// Only available 10.6 and later. +typedef int (*pthread_setname_np_Ptr)(const char*); #if NS_BLOCKS_AVAILABLE @@ -52,12 +56,17 @@ #endif // NS_BLOCKS_AVAILABLE +#if GTM_IPHONE_SDK || (MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5) + @implementation GTMSimpleWorkerThread - (void)setThreadDebuggerName:(NSString *)name { // [NSThread setName:] doesn't actually set the name in such a way that the // debugger can see it. So we handle it here instead. - pthread_setname_np([name UTF8String]); + // pthread_setname_np only available 10.6 and later, look up dynamically. + pthread_setname_np_Ptr setName = dlsym(RTLD_DEFAULT, "pthread_setname_np"); + if (!setName) return; + setName([name UTF8String]); } - (void)main { @@ -90,3 +99,5 @@ } @end + +#endif // GTM_IPHONE_SDK || (MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5) |