Fixed GCD objects under ARC on OS X 10.7

This commit is contained in:
Peter 2014-02-27 18:03:06 +04:00
parent f12e8fb1ea
commit fd447230d7
2 changed files with 26 additions and 23 deletions

View File

@ -8,31 +8,23 @@
#import <MTProtoKit/MTTimer.h> #import <MTProtoKit/MTTimer.h>
#if TARGET_OS_IPHONE
#if __IPHONE_OS_VERSION_MIN_REQUIRED >= 60000 // iOS 6.0 or later
#define NEEDS_DISPATCH_RETAIN_RELEASE 0
#else // iOS 5.X or earlier
#define NEEDS_DISPATCH_RETAIN_RELEASE 1
#endif
#else
#if MAC_OS_X_VERSION_MIN_REQUIRED >= 1080 // Mac OS X 10.8 or later
#define NEEDS_DISPATCH_RETAIN_RELEASE 0
#else
#define NEEDS_DISPATCH_RETAIN_RELEASE 1 // Mac OS X 10.7 or earlier
#endif
#endif
@interface MTTimer () @interface MTTimer ()
#if OS_OBJECT_USE_OBJC
@property (nonatomic, strong) dispatch_source_t timer; @property (nonatomic, strong) dispatch_source_t timer;
#else
@property (nonatomic) dispatch_source_t timer;
#endif
@property (nonatomic) NSTimeInterval timeout; @property (nonatomic) NSTimeInterval timeout;
@property (nonatomic) bool repeat; @property (nonatomic) bool repeat;
@property (nonatomic, copy) dispatch_block_t completion; @property (nonatomic, copy) dispatch_block_t completion;
#if OS_OBJECT_USE_OBJC
@property (nonatomic, strong) dispatch_queue_t queue; @property (nonatomic, strong) dispatch_queue_t queue;
#else
@property (nonatomic) dispatch_queue_t queue;
#endif
@end @end
@ -48,7 +40,10 @@
_timeout = timeout; _timeout = timeout;
_repeat = repeat; _repeat = repeat;
self.completion = completion; self.completion = completion;
self.queue = queue; #if !OS_OBJECT_USE_OBJC
dispatch_retain(queue);
#endif
_queue = queue;
} }
return self; return self;
} }
@ -58,11 +53,19 @@
if (_timer != nil) if (_timer != nil)
{ {
dispatch_source_cancel(_timer); dispatch_source_cancel(_timer);
#if NEEDS_DISPATCH_RETAIN_RELEASE #if !OS_OBJECT_USE_OBJC
dispatch_release(_timer); dispatch_release(_timer);
#endif #endif
_timer = nil; _timer = nil;
} }
if (_queue != nil)
{
#if !OS_OBJECT_USE_OBJC
dispatch_release(_queue);
#endif
_queue = nil;
}
} }
- (void)start - (void)start
@ -99,7 +102,7 @@
if (_timer != nil) if (_timer != nil)
{ {
dispatch_source_cancel(_timer); dispatch_source_cancel(_timer);
#if NEEDS_DISPATCH_RETAIN_RELEASE #if !OS_OBJECT_USE_OBJC
dispatch_release(_timer); dispatch_release(_timer);
#endif #endif
_timer = nil; _timer = nil;

View File

@ -1783,7 +1783,7 @@
"$(PROJECT_DIR)/openssl", "$(PROJECT_DIR)/openssl",
"$(PROJECT_DIR)/openssl/OSX", "$(PROJECT_DIR)/openssl/OSX",
); );
MACOSX_DEPLOYMENT_TARGET = 10.9; MACOSX_DEPLOYMENT_TARGET = 10.7;
PRODUCT_NAME = MTProtoKit; PRODUCT_NAME = MTProtoKit;
SDKROOT = macosx; SDKROOT = macosx;
WRAPPER_EXTENSION = framework; WRAPPER_EXTENSION = framework;
@ -1817,7 +1817,7 @@
"$(PROJECT_DIR)/openssl", "$(PROJECT_DIR)/openssl",
"$(PROJECT_DIR)/openssl/OSX", "$(PROJECT_DIR)/openssl/OSX",
); );
MACOSX_DEPLOYMENT_TARGET = 10.9; MACOSX_DEPLOYMENT_TARGET = 10.7;
PRODUCT_NAME = MTProtoKit; PRODUCT_NAME = MTProtoKit;
SDKROOT = macosx; SDKROOT = macosx;
WRAPPER_EXTENSION = framework; WRAPPER_EXTENSION = framework;